Diffs are based on 2,501,156 contexts (1,003,806 MinOpts, 1,497,350 FullOpts).
MISSED contexts: base: 4,060 (0.16%), diff: 4,061 (0.16%)
Overall (-1,073,216 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch
15,577,120
-2,576
benchmarks.run_pgo.linux.arm64.checked.mch
81,135,316
-67,672
benchmarks.run_tiered.linux.arm64.checked.mch
24,708,980
-59,456
coreclr_tests.run.linux.arm64.checked.mch
509,824,836
-372,928
libraries.crossgen2.linux.arm64.checked.mch
55,738,036
-12,004
libraries.pmi.linux.arm64.checked.mch
76,022,852
-11,096
libraries_tests.run.linux.arm64.Release.mch
381,446,624
-507,536
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
162,656,488
-31,200
realworld.run.linux.arm64.checked.mch
15,906,904
-8,516
smoke_tests.nativeaot.linux.arm64.checked.mch
2,949,332
-232
MinOpts (-911,184 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch
24,936,460
-65,264
benchmarks.run_tiered.linux.arm64.checked.mch
19,784,856
-58,804
coreclr_tests.run.linux.arm64.checked.mch
349,225,056
-316,420
libraries_tests.run.linux.arm64.Release.mch
215,297,140
-465,236
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
13,481,212
-1,016
realworld.run.linux.arm64.checked.mch
585,368
-4,444
FullOpts (-162,032 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch
15,274,112
-2,576
benchmarks.run_pgo.linux.arm64.checked.mch
56,198,856
-2,408
benchmarks.run_tiered.linux.arm64.checked.mch
4,924,124
-652
coreclr_tests.run.linux.arm64.checked.mch
160,599,780
-56,508
libraries.crossgen2.linux.arm64.checked.mch
55,736,400
-12,004
libraries.pmi.linux.arm64.checked.mch
75,902,868
-11,096
libraries_tests.run.linux.arm64.Release.mch
166,149,484
-42,300
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
149,175,276
-30,184
realworld.run.linux.arm64.checked.mch
15,321,536
-4,072
smoke_tests.nativeaot.linux.arm64.checked.mch
2,948,384
-232
Example diffs
benchmarks.run.linux.arm64.checked.mch
-20 (-14.29%) : 20547.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 13, 13 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T03] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,12 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp18 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T00] ( 11, 22 ) ref -> x4 single-def "argument with side effect"
-; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V25 tmp21 [V25,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V26 tmp22 [V26,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V27 tmp23 [V27,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V28 tmp24 [V28,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V29 tmp25 [V29,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V30 tmp26 [V30,T12] ( 2, 4 ) int -> x8 "argument with side effect"
-; V31 tmp27 [V31,T13] ( 2, 4 ) int -> x9 "argument with side effect"
-; V32 tmp28 [V32,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V23 tmp19 [V23,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V25 tmp21 [V25,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V26 tmp22 [V26,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V27 tmp23 [V27,T09] ( 2, 4 ) int -> x8 "argument with side effect"
+; V28 tmp24 [V28,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -51,37 +47,30 @@ G_M55914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M55914_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs +[x0-x3]
- mov x4, x0
- ; gcrRegs +[x4]
- ldp x5, x6, [x4, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x4, #0x30]
- ldrb w8, [x4, #0x31]
- ldrb w9, [x4, #0x32]
- ldr x10, [x4, #0x50]
- ; gcrRegs +[x10]
- ;; size=24 bbWeight=1 PerfScore 16.50
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=20 bbWeight=1 PerfScore 16.00
G_M55914_IG03: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x4, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x4, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M55914_IG04: ; bbWeight=1, extend
- ldrb w11, [x4, #0x33]
- str w11, [sp, #0x18] // [V04 OutArgs+0x18]
- ldr x11, [x4, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V04 OutArgs+0x20]
- ldr x4, [x4, #0x18]
- str x4, [sp, #0x28] // [V04 OutArgs+0x28]
- mov x4, x5
- mov x5, x6
- mov w6, w7
- ; gcrRegs -[x6]
- mov w7, w8
- str w9, [sp] // [V04 OutArgs]
- str x10, [sp, #0x08] // [V04 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ str w10, [sp, #0x18] // [V04 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V04 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V04 OutArgs+0x28]
+ str w8, [sp] // [V04 OutArgs]
+ str x9, [sp, #0x08] // [V04 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp18]
str x8, [sp, #0x10] // [V04 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -89,15 +78,15 @@ G_M55914_IG04: ; bbWeight=1, extend
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x10-x11]
- ;; size=76 bbWeight=1 PerfScore 23.00
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M55914_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 140, prolog size 12, PerfScore 53.00, instruction count 35, allocated bytes for code 140 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 50.50, instruction count 30, allocated bytes for code 120 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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)
-16 (-14.29%) : 10708.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
@@ -8,79 +8,73 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
-; V02 loc0 [V02 ] ( 1, 1 ) int -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 1, 1 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.StandardFormat>
;# 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 "impAppendStmt" <System.Span`1[ubyte]>
-; V06 tmp2 [V06,T02] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V08 tmp4 [V08,T05] ( 2, 2 ) short -> x1 single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T06] ( 2, 2 ) long -> x2 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
-;* V11 tmp7 [V11,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
+; V06 tmp2 [V06,T00] ( 4, 6 ) ref -> x5 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T03] ( 2, 2 ) short -> x1 single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T04] ( 2, 2 ) long -> x4 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
+;* V11 tmp7 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T07] ( 3, 2 ) byref -> x3 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T08] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T03] ( 3, 6 ) struct ( 8) [fp+0x30] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V17 tmp13 [V17,T00] ( 4, 8 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
-; V18 tmp14 [V18,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
+; V14 tmp10 [V14,T05] ( 3, 2 ) byref -> x2 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp11 [V15,T06] ( 3, 2 ) int -> x3 "field V07._length (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T01] ( 3, 6 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M7377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x38] // [V02 loc0]
- stp xzr, xzr, [fp, #0x10] // [V18 tmp14], [V18 tmp14+0x08]
- ;; size=16 bbWeight=1 PerfScore 3.50
+ str xzr, [fp, #0x18] // [V02 loc0]
+ mov x4, x2
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M7377_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
- cbnz x0, G_M7377_IG04
+ ldr x5, [x0, #0x08]
+ ; gcrRegs +[x5]
+ cbnz x5, G_M7377_IG04
;; size=8 bbWeight=1 PerfScore 4.00
G_M7377_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x3, xzr
- ; byrRegs +[x3]
- mov w5, wzr
+ ; gcrRegs -[x0 x5]
+ mov x2, xzr
+ ; byrRegs +[x2]
+ mov w3, wzr
b G_M7377_IG05
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x3]
- add x3, x0, #16
- ; byrRegs +[x3]
- ldr w5, [x0, #0x08]
+G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0020 {x5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x5]
+ ; byrRegs -[x2]
+ add x2, x5, #16
+ ; byrRegs +[x2]
+ ldr w3, [x5, #0x08]
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- ; gcrRegs -[x0]
- strh w1, [fp, #0x20] // [V17 tmp13]
- str x2, [fp, #0x28] // [V17 tmp13+0x08]
- str x3, [fp, #0x10] // [V18 tmp14]
- str w5, [fp, #0x18] // [V18 tmp14+0x08]
- strb wzr, [fp, #0x30] // [V16 tmp12]
- strb wzr, [fp, #0x31] // [V16 tmp12+0x01]
- ldp x0, x1, [fp, #0x20] // [V17 tmp13], [V17 tmp13+0x08]
- ldp x2, x3, [fp, #0x10] // [V18 tmp14], [V18 tmp14+0x08]
- ; byrRegs -[x3] +[x2]
- ldrh w5, [fp, #0x30] // [V16 tmp12]
- add x4, fp, #56 // [V02 loc0]
+G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
+ ; gcrRegs -[x5]
+ strb wzr, [fp, #0x10] // [V16 tmp12]
+ strb wzr, [fp, #0x11] // [V16 tmp12+0x01]
+ ldrh w5, [fp, #0x10] // [V16 tmp12]
+ mov w0, w1
+ mov x1, x4
+ add x4, fp, #24 // [V02 loc0]
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
blr x6
; byrRegs -[x2]
- ;; size=60 bbWeight=1 PerfScore 20.00
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M7377_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 16, PerfScore 32.25, instruction count 28, allocated bytes for code 112 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 12, PerfScore 22.75, instruction count 24, allocated bytes for code 96 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -99,7 +93,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-16 (-13.33%) : 32927.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
@@ -8,63 +8,57 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Span.IndexerBench>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <Span.IndexerBench>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V03 tmp2 [V03,T01] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V07 tmp6 [V07,T06] ( 3, 2 ) byref -> x1 "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> x2 "field V04._length (fldOffset=0x8)" P-INDEP
-; V09 tmp8 [V09,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V10 tmp9 [V10,T00] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V11 tmp10 [V11,T05] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
-; V12 cse0 [V12,T04] ( 4, 4 ) ref -> x4 "CSE - aggressive"
+; V07 tmp6 [V07,T05] ( 3, 2 ) byref -> x0 "field V04._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp7 [V08,T06] ( 3, 2 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP
+; V09 tmp8 [V09,T01] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V10 tmp9 [V10,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
+; V11 cse0 [V11,T03] ( 4, 4 ) ref -> x4 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M29415_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- str xzr, [fp, #0x10] // [V10 tmp9]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M29415_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x4, [x0, #0x08]
; gcrRegs +[x4]
- mov x0, x4
- cbnz x0, G_M29415_IG04
+ mov x2, x4
+ ; gcrRegs +[x2]
+ cbnz x2, G_M29415_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M29415_IG03: ; bbWeight=0.50, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x1, xzr
- ; byrRegs +[x1]
- mov w2, wzr
+ ; gcrRegs -[x0 x2]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
b G_M29415_IG05
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0011 {x0 x4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x1]
- add x1, x0, #16
- ; byrRegs +[x1]
- ldr w2, [x0, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, byref, isz
- ; gcrRegs -[x0]
- str x1, [fp, #0x10] // [V10 tmp9]
- str w2, [fp, #0x18] // [V10 tmp9+0x08]
- mov x0, x4
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- ; byrRegs -[x1]
- cmp w1, #0
- bls G_M29415_IG07
- add x2, x0, #16
- ; byrRegs +[x2]
- ldp x0, x1, [fp, #0x10] // [V10 tmp9], [V10 tmp9+0x08]
- ; gcrRegs -[x0]
+G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0014 {x2 x4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2]
+ ; byrRegs -[x0]
+ add x0, x2, #16
; byrRegs +[x0]
+ ldr w1, [x2, #0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs -[x2]
+ mov x2, x4
+ ; gcrRegs +[x2]
+ ldr w3, [x2, #0x08]
+ cmp w3, #0
+ bls G_M29415_IG07
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
ldr w4, [x4, #0x08]
; gcrRegs -[x4]
mov w3, wzr
@@ -74,9 +68,9 @@ G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, by
ldr x5, [x5]
blr x5
; byrRegs -[x0 x2]
- ;; size=60 bbWeight=1 PerfScore 19.50
+ ;; size=48 bbWeight=1 PerfScore 14.50
G_M29415_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -84,7 +78,7 @@ G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 12, PerfScore 31.25, instruction count 30, allocated bytes for code 120 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 25.25, instruction count 26, allocated bytes for code 104 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -95,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +97,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+8 (+1.56%) : 9856.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
+; V00 this [V00,T04] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T22] ( 5, 4 ) byref -> [fp+0x10] EH-live single-def
+; V02 arg2 [V02,T22] ( 5, 4 ) byref -> [fp+0x18] EH-live single-def
; V03 arg3 [V03,T19] ( 3, 10 ) int -> x21 single-def
-; V04 arg4 [V04,T09] ( 6, 32 ) byref -> x20 single-def
+; V04 arg4 [V04,T08] ( 6, 32 ) byref -> x20 single-def
; V05 arg5 [V05,T23] ( 3, 4 ) byref -> x23 single-def
-; V06 loc0 [V06,T10] ( 8, 28 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
-; V07 loc1 [V07,T15] ( 3, 20 ) ubyte -> x25
+; V06 loc0 [V06,T10] ( 7, 24 ) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V07 loc1 [V07,T14] ( 3, 20 ) ubyte -> x25
;* V08 loc2 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc3 [V09,T28] ( 3, 2 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 4, 24 ) int -> x2 "Inline return value spill temp"
-; V12 tmp2 [V12,T08] ( 3, 36 ) int -> x0 "Inlining Arg"
+; V11 tmp1 [V11,T11] ( 4, 24 ) int -> x2 "Inline return value spill temp"
+; V12 tmp2 [V12,T07] ( 3, 36 ) int -> x0 "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V14 tmp4 [V14,T25] ( 3, 6 ) int -> x2 "Inline return value spill temp"
; V15 tmp5 [V15,T18] ( 3, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V16 tmp6 [V16,T24] ( 3, 6 ) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V16 tmp6 [V16,T24] ( 3, 6 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T16] ( 4, 16 ) int -> x2 "Inlining Arg"
; V18 tmp8 [V18,T17] ( 3, 14 ) ubyte -> x25 "Inline return value spill temp"
-; V19 tmp9 [V19,T11] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
-; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x1 "Inline stloc first use temp"
-; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V19 tmp9 [V19,T09] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
+; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x5 "Inline stloc first use temp"
+; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V24 tmp14 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -39,30 +39,31 @@
; V28 tmp18 [V28,T20] ( 2, 9 ) int -> x22 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V31 tmp21 [V31,T06] ( 3, 48 ) ref -> x0 "arr expr"
-; V32 tmp22 [V32,T07] ( 3, 48 ) int -> x1 "index expr"
-; V33 tmp23 [V33,T13] ( 3, 24 ) ref -> x1 "arr expr"
-; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x1 "arr expr"
-; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x0 "index expr"
+; V31 tmp21 [V31,T05] ( 3, 48 ) ref -> x0 "arr expr"
+; V32 tmp22 [V32,T06] ( 3, 48 ) int -> x1 "index expr"
+; V33 tmp23 [V33,T12] ( 3, 24 ) ref -> x5 "arr expr"
+; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x5 "arr expr"
+; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x1 "index expr"
; V36 tmp26 [V36,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V37 tmp27 [V37,T04] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V38 PSPSym [V38,T29] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 24 ) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
+; V37 PSPSym [V37,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V38 cse0 [V38,T13] ( 3, 24 ) int -> x1 "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 20 ) int -> x26 "CSE - aggressive"
+; V40 cse2 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M55933_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x30]
- stp x21, x22, [sp, #0x40]
- stp x23, x24, [sp, #0x50]
- stp x25, x26, [sp, #0x60]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x38]
+ stp x21, x22, [sp, #0x48]
+ stp x23, x24, [sp, #0x58]
+ stp x25, x26, [sp, #0x68]
+ str x27, [sp, #0x78]
mov fp, sp
- str xzr, [fp, #0x18] // [V21 tmp11]
- add x7, sp, #112
- str x7, [fp, #0x28] // [V38 PSPSym]
- str x3, [fp, #0x10] // [V02 arg2]
+ str xzr, [fp, #0x20] // [V21 tmp11]
+ add x7, sp, #128
+ str x7, [fp, #0x30] // [V37 PSPSym]
+ str x3, [fp, #0x18] // [V02 arg2]
; GC ptr vars +{V02}
mov x19, x0
; gcrRegs +[x19]
@@ -74,11 +75,11 @@ G_M55933_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; byrRegs +[x20]
mov x23, x6
; byrRegs +[x23]
- ;; size=64 bbWeight=1 PerfScore 12.00
+ ;; size=68 bbWeight=1 PerfScore 13.00
G_M55933_IG02: ; bbWeight=1, gcVars=0000000000400000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=1900008 {x3 x20 x23 x24}, gcvars, byref
; byrRegs +[x3]
ldr w0, [x3]
- str w0, [fp, #0x24] // [V06 loc0]
+ str w0, [fp, #0x2C] // [V06 loc0]
;; size=8 bbWeight=1 PerfScore 4.00
G_M55933_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
; byrRegs -[x3]
@@ -92,19 +93,20 @@ G_M55933_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
; gcrRegs -[x0]
; byrRegs +[x0]
ldrb w25, [x0, w1, UXTW #2]
- ldr w0, [fp, #0x24] // [V06 loc0]
+ ldr w0, [fp, #0x2C] // [V06 loc0]
; byrRegs -[x0]
- sub w0, w0, #1
+ sub w26, w0, #1
+ sxtw w0, w26
cmp w0, w22
bhs G_M55933_IG14
- ;; size=44 bbWeight=8 PerfScore 144.00
+ ;; size=48 bbWeight=8 PerfScore 148.00
G_M55933_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
ldrh w2, [x24, w0, UXTW #2]
- ldr x26, [x1, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x08]
+ ldr x27, [x1, #0x08]
+ ; gcrRegs +[x27]
+ ldr w0, [x27, #0x08]
cmp w0, w2
bhi G_M55933_IG13
ldr x0, [x1, #0x10]
@@ -117,7 +119,7 @@ G_M55933_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
ldr x2, [x2]
ldr wzr, [x0]
blr x2
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
sxtw w2, w0
;; size=60 bbWeight=2 PerfScore 52.00
@@ -125,83 +127,80 @@ G_M55933_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
tbz w25, #2, G_M55933_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M55933_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ldr w0, [fp, #0x24] // [V06 loc0]
- str w0, [x23]
+ ldr w1, [fp, #0x2C] // [V06 loc0]
+ str w1, [x23]
;; size=8 bbWeight=2 PerfScore 6.00
G_M55933_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- ldr w0, [fp, #0x24] // [V06 loc0]
- cmp w0, w21
+ ldr w1, [fp, #0x2C] // [V06 loc0]
+ cmp w1, w21
ble G_M55933_IG17
;; size=12 bbWeight=8 PerfScore 28.00
G_M55933_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
tbnz w25, #1, G_M55933_IG17
- ldr w0, [x20, #0x08]
- ldr w1, [x19, #0xA4]
- lsl w1, w0, w1
- orr w4, w1, w2
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- ldr w5, [x1, #0x08]
- cmp w4, w5
+ ldr w1, [x20, #0x08]
+ ldr w5, [x19, #0xA4]
+ lsl w5, w1, w5
+ orr w4, w5, w2
+ ldr x5, [x19, #0x20]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w4, w0
bhs G_M55933_IG12
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr w1, [x1, w4, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #0
+ add x5, x5, #16
+ ; gcrRegs -[x5]
+ ; byrRegs +[x5]
+ ldr w5, [x5, w4, UXTW #2]
+ ; byrRegs -[x5]
+ cmp w5, #0
ble G_M55933_IG15
;; size=52 bbWeight=4 PerfScore 82.00
G_M55933_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- str w1, [x20, #0x08]
+ str w5, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
G_M55933_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
mov w25, #1
;; size=4 bbWeight=8 PerfScore 4.00
G_M55933_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- str xzr, [fp, #0x18] // [V21 tmp11]
+ str xzr, [fp, #0x20] // [V21 tmp11]
cbz w25, G_M55933_IG18
- ldr w0, [fp, #0x24] // [V06 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x24] // [V06 loc0]
+ str w26, [fp, #0x2C] // [V06 loc0]
b G_M55933_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=16 bbWeight=4 PerfScore 16.00
G_M55933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x23-x24]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55933_IG13: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs +[x19 x26]
+G_M55933_IG13: ; bbWeight=2, gcrefRegs=8080000 {x19 x27}, byrefRegs=1900000 {x20 x23 x24}, byref
+ ; gcrRegs +[x19 x27]
; byrRegs +[x20 x23-x24]
- add x0, x26, #16
- ; byrRegs +[x0]
- ldr w2, [x0, w2, UXTW #2]
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w2, [x1, w2, UXTW #2]
b G_M55933_IG05
;; size=12 bbWeight=2 PerfScore 9.00
G_M55933_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs -[x26]
- ; byrRegs -[x0]
+ ; gcrRegs -[x27]
+ ; byrRegs -[x1]
movn w2, #0
b G_M55933_IG05
;; size=8 bbWeight=2 PerfScore 3.00
G_M55933_IG15: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
- ldr w5, [x1, #0x08]
- cmp w0, w5
+ ldr x5, [x19, #0x10]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w1, w0
bhs G_M55933_IG12
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x1, [x1, w0, UXTW #3]
...
+4 (+1.82%) : 9565.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
@@ -10,7 +10,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01 ] ( 3, 3 ) struct ( 8) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Text.Json.JsonDocumentOptions>
-; V02 loc0 [V02,T02] ( 4, 4 ) ref -> x21 class-hnd exact single-def <ubyte[]>
+; V02 loc0 [V02,T01] ( 5, 5 ) ref -> x21 class-hnd exact single-def <ubyte[]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
@@ -20,11 +20,11 @@
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp9 [V12,T04] ( 2, 4 ) long -> x2 "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+; V12 tmp9 [V12,T06] ( 2, 4 ) long -> x2 "Inlining Arg"
+; V13 tmp10 [V13 ] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-; V15 tmp12 [V15,T03] ( 2, 2 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp13 [V16,T01] ( 4, 4 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T05] ( 2, 2 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T00] ( 4, 4 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
@@ -33,21 +33,20 @@
;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0xc)" P-INDEP
-; V25 tmp22 [V25,T05] ( 2, 4 ) int -> [fp+0x28] do-not-enreg[] "field V07._maxDepth (fldOffset=0x0)" P-DEP
-; V26 tmp23 [V26,T06] ( 2, 4 ) ubyte -> [fp+0x2C] do-not-enreg[] "field V07._commentHandling (fldOffset=0x4)" P-DEP
-; V27 tmp24 [V27,T07] ( 2, 4 ) ubyte -> [fp+0x2D] do-not-enreg[] "field V07.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
-; V28 tmp25 [V28,T10] ( 2, 2 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T11] ( 2, 2 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V25 tmp22 [V25,T07] ( 2, 4 ) int -> [fp+0x28] do-not-enreg[] "field V07._maxDepth (fldOffset=0x0)" P-DEP
+; V26 tmp23 [V26,T08] ( 2, 4 ) ubyte -> [fp+0x2C] do-not-enreg[] "field V07._commentHandling (fldOffset=0x4)" P-DEP
+; V27 tmp24 [V27,T09] ( 2, 4 ) ubyte -> [fp+0x2D] do-not-enreg[] "field V07.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
+; V28 tmp25 [V28,T11] ( 2, 2 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T12] ( 2, 2 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> x21 "field V13._object (fldOffset=0x0)" P-INDEP
-;* V33 tmp30 [V33,T13] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V34 tmp31 [V34,T12] ( 2, 2 ) int -> x19 "field V13._length (fldOffset=0xc)" P-INDEP
+; V32 tmp29 [V32,T02] ( 3, 5 ) ref -> [fp+0x18] do-not-enreg[] "field V13._object (fldOffset=0x0)" P-DEP
+; V33 tmp30 [V33,T03] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[] "field V13._index (fldOffset=0x8)" P-DEP
+; V34 tmp31 [V34,T04] ( 3, 5 ) int -> [fp+0x24] do-not-enreg[] "field V13._length (fldOffset=0xc)" P-DEP
;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref "field V14._object (fldOffset=0x0)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x8)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0xc)" P-INDEP
-; V38 tmp35 [V38,T08] ( 2, 4 ) struct ( 8) [fp+0x20] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
-; V39 tmp36 [V39,T00] ( 5, 10 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Memory`1[ubyte]>
+; V38 tmp35 [V38,T10] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
;
; Lcl frame size = 40
@@ -56,7 +55,7 @@ G_M33801_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x38]
str x21, [sp, #0x48]
mov fp, sp
- str xzr, [fp, #0x10] // [V39 tmp36]
+ str xzr, [fp, #0x18] // [V13 tmp10]
str x2, [fp, #0x30] // [V01 arg1]
mov x20, x0
; byrRegs +[x20]
@@ -86,29 +85,30 @@ G_M33801_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
ldr x3, [x3]
blr x3
; byrRegs -[x0-x1 x20]
- ldr w19, [x21, #0x08]
+ str x21, [fp, #0x18] // [V32 tmp29]
+ str wzr, [fp, #0x20] // [V33 tmp30]
+ ldr w0, [x21, #0x08]
+ str w0, [fp, #0x24] // [V34 tmp31]
add x0, fp, #48 // [V01 arg1]
movz x1, #0xD1FFAB1E // code for System.Text.Json.JsonDocumentOptions:GetReaderOptions():System.Text.Json.JsonReaderOptions:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcrRegs -[x21]
str x0, [fp, #0x28] // [V07 tmp4]
- str x21, [fp, #0x10] // [V39 tmp36]
- stp wzr, w19, [fp, #0x18] // [V39 tmp36+0x08], [V39 tmp36+0x0c]
- ldr x0, [fp, #0x28] // [V07 tmp4]
- str x0, [fp, #0x20] // [V38 tmp35]
- ldp x0, x1, [fp, #0x10] // [V39 tmp36], [V39 tmp36+0x08]
+ ldr x2, [fp, #0x28] // [V07 tmp4]
+ str x2, [fp, #0x10] // [V38 tmp35]
+ ldp x2, x0, [fp, #0x10] // [V38 tmp35], [V13 tmp10]
; gcrRegs +[x0]
- ldr x2, [fp, #0x20] // [V38 tmp35]
+ ldr x1, [fp, #0x20] // [V13 tmp10+0x08]
mov w3, wzr
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x21]
- ;; size=148 bbWeight=1 PerfScore 41.00
+ ;; size=152 bbWeight=1 PerfScore 42.00
G_M33801_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
@@ -125,7 +125,7 @@ G_M33801_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 20, PerfScore 52.50, instruction count 55, allocated bytes for code 220 (MethodHash=26bd7bf6) for method System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 53.50, instruction count 56, allocated bytes for code 224 (MethodHash=26bd7bf6) for method System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+12.50%) : 1281.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 6.50) ref -> [fp+0x18] this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
+; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
; V01 loc0 [V01,T02] ( 3, 2.50) ref -> x1 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T03] ( 3, 2.50) int -> x3
+; V02 loc1 [V02,T03] ( 3, 2.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
-; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x2 single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
+; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x3 single-def "argument with side effect"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 2, 2 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M7274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
+ str x19, [sp, #0x38]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7274_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x18]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M7274_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
- ldr w2, [x0, #0x14]
- sub w3, w2, #1
- ldr w4, [x1, #0x08]
- cmp w4, w3
+ ldr w0, [x19, #0x14]
+ sub w2, w0, #1
+ ldr w3, [x1, #0x08]
+ cmp w3, w2
bls G_M7274_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- add w2, w2, #1
- str w2, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x20]
- ; gcrRegs +[x2]
- ubfiz x3, x3, #5, #32
- add x3, x3, #16
- add x1, x1, x3
+G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ add w0, w0, #1
+ str w0, [x19, #0x14]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ubfiz x0, x2, #5, #32
+ add x0, x0, #16
+ add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ldp q16, q17, [x1]
- stp q16, q17, [fp, #0x20]
- add x1, fp, #32 // [V04 tmp1]
+ ldp x0, x2, [x1]
+ stp x0, x2, [fp, #0x18]
+ ldp x0, x2, [x1, #0x10]
+ stp x0, x2, [fp, #0x28]
+ add x1, fp, #24 // [V04 tmp1]
; byrRegs -[x1]
- ldr x0, [x2, #0x08]
- ldr x2, [x2, #0x18]
- ; gcrRegs -[x2]
- blr x2
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- str d0, [x0, #0x08]
+ ldr x2, [x3, #0x18]
+ blr x2
+ ; gcrRegs -[x0 x3]
+ str d0, [x19, #0x08]
mov w0, #1
- ; gcrRegs -[x0]
- ;; size=64 bbWeight=0.50 PerfScore 11.25
+ ;; size=64 bbWeight=0.50 PerfScore 12.75
G_M7274_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars -{V00}
- str xzr, [x0, #0x08]
- movn w1, #0
- str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ str xzr, [x19, #0x08]
+ movn w0, #0
+ str w0, [x19, #0x14]
mov w0, wzr
- ; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M7274_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 27.25, instruction count 32, allocated bytes for code 128 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 32.25, instruction count 36, allocated bytes for code 144 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +98,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
+ E4 end
benchmarks.run_pgo.linux.arm64.checked.mch
-44 (-26.83%) : 94049.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-44 (-26.83%) : 93540.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-48 (-22.22%) : 93474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
+4 (+1.00%) : 23894.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
@@ -14,25 +14,23 @@
; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] must-init "handle histogram profile tmp"
; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] must-init "argument with side effect"
; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp6 [V10 ] ( 1, 1 ) struct (32) [fp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
-; V11 tmp7 [V11 ] ( 1, 1 ) struct (32) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
+; V09 tmp5 [V09 ] ( 1, 1 ) struct (32) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
+; V10 tmp6 [V10 ] ( 1, 1 ) struct (32) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.RegularExpressions.RegexCache+Key>
;
; Lcl frame size = 160
G_M38051_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0xB0]!
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
stp q16, q16, [x9, #0x40]
stp q16, q16, [x9, #0x60]
stp xzr, xzr, [x9, #0x80]
- str xzr, [x9, #0x90]
str x0, [fp, #0xA8] // [V00 arg0]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ ;; size=40 bbWeight=1 PerfScore 8.50
G_M38051_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0xA8] // [V00 arg0]
; gcrRegs +[x0]
@@ -49,8 +47,6 @@ G_M38051_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
; gcrRegs +[x0]
str x0, [fp, #0xA0] // [V01 loc0]
- ldr x0, [fp, #0xA8] // [V00 arg0]
- str x0, [fp, #0x50] // [V09 tmp5]
ldr x0, [fp, #0xA0] // [V01 loc0]
str x0, [fp, #0x68] // [V06 tmp2]
ldr x0, [fp, #0x68] // [V06 tmp2]
@@ -73,14 +69,14 @@ G_M38051_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str x0, [fp, #0x58] // [V08 tmp4]
ldr x2, [fp, #0x58] // [V08 tmp4]
; gcrRegs +[x2]
- ldr x1, [fp, #0x50] // [V09 tmp5]
- ; gcrRegs +[x1]
movz x4, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
add x0, fp, #128 // [V02 loc1]
; gcrRegs -[x0]
+ ldr x1, [fp, #0xA8] // [V00 arg0]
+ ; gcrRegs +[x1]
mov w3, wzr
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
@@ -88,13 +84,15 @@ G_M38051_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x5, [x5]
blr x5
; gcrRegs -[x1-x2]
- ;; size=172 bbWeight=1 PerfScore 57.50
+ ;; size=164 bbWeight=1 PerfScore 54.50
G_M38051_IG03: ; bbWeight=1, nogc, extend
- ldp q16, q17, [fp, #0x80]
- stp q16, q17, [fp, #0x30]
- ;; size=8 bbWeight=1 PerfScore 3.00
+ ldp x0, x1, [fp, #0x80]
+ stp x0, x1, [fp, #0x38]
+ ldp x0, x1, [fp, #0x90]
+ stp x0, x1, [fp, #0x48]
+ ;; size=16 bbWeight=1 PerfScore 8.00
G_M38051_IG04: ; bbWeight=1, isz, extend
- add x0, fp, #48 // [V10 tmp6]
+ add x0, fp, #56 // [V09 tmp5]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -131,12 +129,14 @@ G_M38051_IG04: ; bbWeight=1, isz, extend
str x0, [fp, #0x78] // [V03 loc2]
;; size=112 bbWeight=1 PerfScore 30.50
G_M38051_IG05: ; bbWeight=1, nogc, extend
- ldp q16, q17, [fp, #0x80]
- stp q16, q17, [fp, #0x10]
- ;; size=8 bbWeight=1 PerfScore 3.00
-G_M38051_IG06: ; bbWeight=1, extend
- add x0, fp, #16 // [V11 tmp7]
+ ldp x0, x1, [fp, #0x80]
; gcrRegs -[x0]
+ stp x0, x1, [fp, #0x18]
+ ldp x0, x1, [fp, #0x90]
+ stp x0, x1, [fp, #0x28]
+ ;; size=16 bbWeight=1 PerfScore 8.00
+G_M38051_IG06: ; bbWeight=1, extend
+ add x0, fp, #24 // [V10 tmp6]
ldr x1, [fp, #0x78] // [V03 loc2]
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -159,7 +159,7 @@ G_M38051_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 400, prolog size 40, PerfScore 118.00, instruction count 100, allocated bytes for code 400 (MethodHash=a2596b5c) for method System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
+; Total bytes of code 404, prolog size 36, PerfScore 124.00, instruction count 101, allocated bytes for code 404 (MethodHash=a2596b5c) for method System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -170,7 +170,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 100 (0x00064) Actual length = 400 (0x000190)
+ Function Length : 101 (0x00065) Actual length = 404 (0x000194)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.88%) : 94487.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M44302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44302_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44302_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M44302_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
+4 (+6.67%) : 85393.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
benchmarks.run_tiered.linux.arm64.checked.mch
-44 (-26.83%) : 50617.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-48 (-22.22%) : 50563.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
-24 (-22.22%) : 2604.dasm - BenchmarkDotNet.Characteristics.Characteristic
1[System.Nullable1[System.Guid]]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Nullable`1[System.Guid]):this (Tier0)@@ -5,44 +5,34 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] this class-hnd <BenchmarkDotNet.Characteristics.Characteristic`1[System.Nullable`1[System.Guid]]>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <BenchmarkDotNet.Characteristics.CharacteristicObject>
-; V02 arg2 [V02 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] this class-hnd <BenchmarkDotNet.Characteristics.Characteristic`1[System.Nullable`1[System.Guid]]>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] class-hnd <BenchmarkDotNet.Characteristics.CharacteristicObject>
+; V02 arg2 [V02 ] ( 1, 1 ) byref -> [fp+0x28] do-not-enreg[]
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) struct (24) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V06 tmp3 [V06 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V04 tmp1 [V04 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M37147_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x40]!
mov fp, sp
- str xzr, [fp, #0x18] // [V05 tmp2]
- str xzr, [fp, #0x10] // [V06 tmp3]
- str x0, [fp, #0x48] // [V00 this]
- str x1, [fp, #0x40] // [V01 arg1]
- str x2, [fp, #0x38] // [V02 arg2]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ str x0, [fp, #0x38] // [V00 this]
+ str x1, [fp, #0x30] // [V01 arg1]
+ str x2, [fp, #0x28] // [V02 arg2]
+ ;; size=20 bbWeight=1 PerfScore 4.50
G_M37147_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x40] // [V01 arg1]
- ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V05 tmp2]
- ldr x0, [fp, #0x48] // [V00 this]
- str x0, [fp, #0x10] // [V06 tmp3]
- ldr x0, [fp, #0x38] // [V02 arg2]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x20]
- ldr w1, [x0, #0x10]
- str w1, [fp, #0x30]
- ldr x0, [fp, #0x18] // [V05 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x10] // [V06 tmp3]
+ ldr x2, [fp, #0x28] // [V02 arg2]
+ ; byrRegs +[x2]
+ ldp x0, x1, [x2]
+ stp x0, x1, [fp, #0x10]
+ ldr w0, [x2, #0x10]
+ str w0, [fp, #0x20]
+ add x2, fp, #16 // [V04 tmp1]
+ ; byrRegs -[x2]
+ ldr x1, [fp, #0x38] // [V00 this]
; gcrRegs +[x1]
- add x2, fp, #32 // [V04 tmp1]
+ ldr x0, [fp, #0x30] // [V01 arg1]
+ ; gcrRegs +[x0]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -50,13 +40,13 @@ G_M37147_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr wzr, [x0]
blr x3
; gcrRegs -[x0-x1]
- ;; size=72 bbWeight=1 PerfScore 30.00
+ ;; size=56 bbWeight=1 PerfScore 24.00
G_M37147_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 108, prolog size 16, PerfScore 38.50, instruction count 27, allocated bytes for code 108 (MethodHash=a7496ee4) for method BenchmarkDotNet.Characteristics.Characteristic`1[System.Nullable`1[System.Guid]]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Nullable`1[System.Guid]):this (Tier0)
+; Total bytes of code 84, prolog size 8, PerfScore 30.50, instruction count 21, allocated bytes for code 84 (MethodHash=a7496ee4) for method BenchmarkDotNet.Characteristics.Characteristic`1[System.Nullable`1[System.Guid]]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Nullable`1[System.Guid]):this (Tier0)
; ============================================================
Unwind Info:
@@ -67,7 +57,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ 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)
@@ -75,7 +65,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+8 (+1.57%) : 55884.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)@@ -9,28 +9,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
+; V00 this [V00,T04] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T25] ( 4, 3 ) byref -> [fp+0xA8] EH-live single-def tier0-frame
+; V02 arg2 [V02,T25] ( 4, 3 ) byref -> [fp+0xB8] EH-live single-def tier0-frame
; V03 arg3 [V03,T19] ( 3, 10 ) int -> x21 single-def
-; V04 arg4 [V04,T09] ( 6, 32 ) byref -> x20 single-def
+; V04 arg4 [V04,T08] ( 6, 32 ) byref -> x20 single-def
; V05 arg5 [V05,T22] ( 3, 4 ) byref -> x23 single-def
-; V06 loc0 [V06,T11] ( 7, 27 ) int -> [fp+0x8C] do-not-enreg[Z] EH-live tier0-frame
-; V07 loc1 [V07,T15] ( 3, 20 ) ubyte -> x25
+; V06 loc0 [V06,T13] ( 6, 23 ) int -> [fp+0x9C] do-not-enreg[Z] EH-live tier0-frame
+; V07 loc1 [V07,T14] ( 3, 20 ) ubyte -> x25
;* V08 loc2 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc3 [V09,T28] ( 3, 2 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 4, 24 ) int -> x2 "Inline return value spill temp"
-; V12 tmp2 [V12,T08] ( 3, 36 ) int -> x0 "Inlining Arg"
+; V11 tmp1 [V11,T10] ( 4, 24 ) int -> x2 "Inline return value spill temp"
+; V12 tmp2 [V12,T07] ( 3, 36 ) int -> x0 "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V14 tmp4 [V14,T24] ( 3, 6 ) int -> x2 "Inline return value spill temp"
; V15 tmp5 [V15,T18] ( 3, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V16 tmp6 [V16,T23] ( 3, 6 ) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V16 tmp6 [V16,T23] ( 3, 6 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T16] ( 4, 16 ) int -> x2 "Inlining Arg"
; V18 tmp8 [V18,T17] ( 3, 14 ) ubyte -> x25 "Inline return value spill temp"
-; V19 tmp9 [V19,T10] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
-; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x1 "Inline stloc first use temp"
-; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V19 tmp9 [V19,T09] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
+; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x5 "Inline stloc first use temp"
+; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V24 tmp14 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -40,38 +40,39 @@
; V28 tmp18 [V28,T20] ( 2, 9 ) int -> x22 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V31 tmp21 [V31,T06] ( 3, 48 ) ref -> x0 "arr expr"
-; V32 tmp22 [V32,T07] ( 3, 48 ) int -> x1 "index expr"
-; V33 tmp23 [V33,T13] ( 3, 24 ) ref -> x1 "arr expr"
-; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x1 "arr expr"
-; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x0 "index expr"
+; V31 tmp21 [V31,T05] ( 3, 48 ) ref -> x0 "arr expr"
+; V32 tmp22 [V32,T06] ( 3, 48 ) int -> x1 "index expr"
+; V33 tmp23 [V33,T11] ( 3, 24 ) ref -> x5 "arr expr"
+; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x5 "arr expr"
+; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x1 "index expr"
; V36 tmp26 [V36,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V37 tmp27 [V37,T04] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V38 PSPSym [V38,T29] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 24 ) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
+; V37 PSPSym [V37,T29] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V38 cse0 [V38,T12] ( 3, 24 ) int -> x1 "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 20 ) int -> x26 "CSE - aggressive"
+; V40 cse2 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M55933_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ stp x25, x26, [sp, #0x58]
+ str x27, [sp, #0x68]
mov fp, sp
- str xzr, [fp, #0x10] // [V21 tmp11]
- add xip1, sp, #208
- str xip1, [fp, #0x18] // [V38 PSPSym]
- ldr x19, [fp, #0xC0]
+ str xzr, [fp, #0x18] // [V21 tmp11]
+ add xip1, sp, #224
+ str xip1, [fp, #0x20] // [V37 PSPSym]
+ ldr x19, [fp, #0xD0]
; gcrRegs +[x19]
- ldr w21, [fp, #0xA4]
- ldp x23, x20, [fp, #0x90]
+ ldr w21, [fp, #0xB4]
+ ldp x23, x20, [fp, #0xA0]
; byrRegs +[x20 x23]
- ldr x24, [fp, #0xB0]
+ ldr x24, [fp, #0xC0]
; byrRegs +[x24]
- ldr w22, [fp, #0xB8]
- ;; size=56 bbWeight=8 PerfScore 152.00
+ ldr w22, [fp, #0xC8]
+ ;; size=60 bbWeight=8 PerfScore 160.00
G_M55933_IG02: ; bbWeight=8, gcVars=0000000002000000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, gcvars, byref, isz
; GC ptr vars +{V02}
ldr x0, [x19, #0x18]
@@ -84,19 +85,20 @@ G_M55933_IG02: ; bbWeight=8, gcVars=0000000002000000 {V02}, gcrefRegs=800
; gcrRegs -[x0]
; byrRegs +[x0]
ldrb w25, [x0, w1, UXTW #2]
- ldr w0, [fp, #0x8C] // [V06 loc0]
+ ldr w0, [fp, #0x9C] // [V06 loc0]
; byrRegs -[x0]
- sub w0, w0, #1
+ sub w26, w0, #1
+ sxtw w0, w26
cmp w0, w22
bhs G_M55933_IG13
- ;; size=44 bbWeight=8 PerfScore 144.00
+ ;; size=48 bbWeight=8 PerfScore 148.00
G_M55933_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
ldrh w2, [x24, w0, UXTW #2]
- ldr x26, [x1, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x08]
+ ldr x27, [x1, #0x08]
+ ; gcrRegs +[x27]
+ ldr w0, [x27, #0x08]
cmp w0, w2
bhi G_M55933_IG12
ldr x0, [x1, #0x10]
@@ -109,7 +111,7 @@ G_M55933_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
ldr x2, [x2]
ldr wzr, [x0]
blr x2
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
sxtw w2, w0
;; size=60 bbWeight=2 PerfScore 52.00
@@ -117,83 +119,80 @@ G_M55933_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
tbz w25, #2, G_M55933_IG06
;; size=4 bbWeight=8 PerfScore 8.00
G_M55933_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ldr w0, [fp, #0x8C] // [V06 loc0]
- str w0, [x23]
+ ldr w1, [fp, #0x9C] // [V06 loc0]
+ str w1, [x23]
;; size=8 bbWeight=2 PerfScore 6.00
G_M55933_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- ldr w0, [fp, #0x8C] // [V06 loc0]
- cmp w0, w21
+ ldr w1, [fp, #0x9C] // [V06 loc0]
+ cmp w1, w21
ble G_M55933_IG16
;; size=12 bbWeight=8 PerfScore 28.00
G_M55933_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
tbnz w25, #1, G_M55933_IG16
- ldr w0, [x20, #0x08]
- ldr w1, [x19, #0xA4]
- lsl w1, w0, w1
- orr w4, w1, w2
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- ldr w5, [x1, #0x08]
- cmp w4, w5
+ ldr w1, [x20, #0x08]
+ ldr w5, [x19, #0xA4]
+ lsl w5, w1, w5
+ orr w4, w5, w2
+ ldr x5, [x19, #0x20]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w4, w0
bhs G_M55933_IG11
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr w1, [x1, w4, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #0
+ add x5, x5, #16
+ ; gcrRegs -[x5]
+ ; byrRegs +[x5]
+ ldr w5, [x5, w4, UXTW #2]
+ ; byrRegs -[x5]
+ cmp w5, #0
ble G_M55933_IG14
;; size=52 bbWeight=4 PerfScore 82.00
G_M55933_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- str w1, [x20, #0x08]
+ str w5, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
G_M55933_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
mov w25, #1
;; size=4 bbWeight=8 PerfScore 4.00
G_M55933_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- str xzr, [fp, #0x10] // [V21 tmp11]
+ str xzr, [fp, #0x18] // [V21 tmp11]
cbz w25, G_M55933_IG17
- ldr w0, [fp, #0x8C] // [V06 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x8C] // [V06 loc0]
+ str w26, [fp, #0x9C] // [V06 loc0]
b G_M55933_IG02
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=16 bbWeight=4 PerfScore 16.00
G_M55933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x23-x24]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55933_IG12: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs +[x19 x26]
+G_M55933_IG12: ; bbWeight=2, gcrefRegs=8080000 {x19 x27}, byrefRegs=1900000 {x20 x23 x24}, byref
+ ; gcrRegs +[x19 x27]
; byrRegs +[x20 x23-x24]
- add x0, x26, #16
- ; byrRegs +[x0]
- ldr w2, [x0, w2, UXTW #2]
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w2, [x1, w2, UXTW #2]
b G_M55933_IG04
;; size=12 bbWeight=2 PerfScore 9.00
G_M55933_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs -[x26]
- ; byrRegs -[x0]
+ ; gcrRegs -[x27]
+ ; byrRegs -[x1]
movn w2, #0
b G_M55933_IG04
;; size=8 bbWeight=2 PerfScore 3.00
G_M55933_IG14: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
- ldr w5, [x1, #0x08]
- cmp w0, w5
+ ldr x5, [x19, #0x10]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w1, w0
bhs G_M55933_IG11
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x1, [x1, w0, UXTW #3]
+ add x5, x5, #16
...
+12 (+2.86%) : 25187.dasm - System.Globalization.TextInfo:ChangeCaseCommonSystem.Globalization.TextInfo+ToUpperConversion:this (Tier1)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 26 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> x19 this class-hnd single-def <System.Globalization.TextInfo>
+; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <System.Globalization.TextInfo>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-;* V03 loc0 [V03,T22] ( 0, 0 ) ubyte -> zero-ref
+;* V03 loc0 [V03,T21] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04 ] ( 5, 2.50) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
@@ -60,7 +60,7 @@
;* V49 tmp39 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp40 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp41 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V52 tmp42 [V52,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V52 tmp42 [V52,T22] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V53 tmp43 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp44 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp45 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
@@ -69,7 +69,7 @@
;* V58 tmp48 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V59 tmp49 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V60 tmp50 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V61 tmp51 [V61,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V61 tmp51 [V61,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp52 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V63 tmp53 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V64 tmp54 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -79,7 +79,7 @@
;* V68 tmp58 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V69 tmp59 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V70 tmp60 [V70,T02] ( 4, 2.50) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V71 tmp61 [V71,T01] ( 5, 3.50) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V71 tmp61 [V71,T00] ( 5, 3.50) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V72 tmp62 [V72,T03] ( 4, 2.50) byref -> x22 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V73 tmp63 [V73,T04] ( 4, 2.50) int -> x23 single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V74 tmp64 [V74 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -102,35 +102,34 @@
;* V91 tmp81 [V91 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V92 tmp82 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp83 [V93 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-;* V94 tmp84 [V94,T16] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
-;* V95 tmp85 [V95,T25] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
-;* V96 tmp86 [V96,T17] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
-;* V97 tmp87 [V97,T26] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V94 tmp84 [V94,T15] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
+;* V95 tmp85 [V95,T24] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
+;* V96 tmp86 [V96,T16] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V97 tmp87 [V97,T25] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
;* V98 tmp88 [V98 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp89 [V99 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V100 tmp90 [V100,T18] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V100 tmp90 [V100,T17] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp91 [V101 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-;* V102 tmp92 [V102,T19] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
-;* V103 tmp93 [V103,T27] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
+;* V102 tmp92 [V102,T18] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V103 tmp93 [V103,T26] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V104 tmp94 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp95 [V105 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
-;* V106 tmp96 [V106,T20] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+;* V106 tmp96 [V106,T19] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp97 [V107 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-;* V108 tmp98 [V108,T21] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
-;* V109 tmp99 [V109,T28] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+;* V108 tmp98 [V108,T20] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V109 tmp99 [V109,T27] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
;* V110 tmp100 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp101 [V111 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
;* V112 tmp102 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V113 tmp103 [V113 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
; V114 tmp104 [V114,T05] ( 2, 2 ) long -> x21 "Cast away GC"
; V115 tmp105 [V115,T06] ( 2, 2 ) long -> x22 "Cast away GC"
-;* V116 tmp106 [V116,T15] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V117 tmp107 [V117,T07] ( 2, 2 ) long -> x1 "argument with side effect"
-; V118 tmp108 [V118,T08] ( 2, 2 ) int -> x2 "argument with side effect"
-; V119 tmp109 [V119,T09] ( 2, 2 ) long -> x3 "argument with side effect"
-; V120 cse0 [V120,T13] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V121 cse1 [V121,T14] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V122 cse2 [V122,T10] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V116 tmp106 [V116,T07] ( 2, 2 ) long -> x2 "argument with side effect"
+; V117 tmp107 [V117,T08] ( 2, 2 ) int -> x3 "argument with side effect"
+; V118 tmp108 [V118,T09] ( 2, 2 ) long -> x4 "argument with side effect"
+; V119 cse0 [V119,T13] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V120 cse1 [V120,T14] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V121 cse2 [V121,T10] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 24
@@ -141,20 +140,20 @@ G_M14148_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
str x23, [sp, #0x48]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V09 loc6], [V07 loc4]
- mov x19, x0
- ; gcrRegs +[x19]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov x21, x1
; byrRegs +[x21]
- mov w20, w2
+ mov w19, w2
mov x22, x3
; byrRegs +[x22]
mov w23, w4
;; size=44 bbWeight=1 PerfScore 8.00
-G_M14148_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- cbnz w20, G_M14148_IG04
+G_M14148_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ cbnz w19, G_M14148_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M14148_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -162,13 +161,13 @@ G_M14148_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
str wzr, [fp, #0x20] // [V04 loc1]
- ldrb w0, [x19, #0x29]
+ ldrb w0, [x20, #0x29]
cbnz w0, G_M14148_IG05
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -177,8 +176,8 @@ G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
blr x1
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x29]
+G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x29]
cmp w0, #2
beq G_M14148_IG06
cmp w0, #1
@@ -197,11 +196,11 @@ G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
blr x2
; gcrRegs -[x0]
;; size=64 bbWeight=0.50 PerfScore 7.25
-G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x29]
+G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x29]
cmp w0, #2
bne G_M14148_IG08
- cmp w20, #0
+ cmp w19, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
movk x1, #0xD1FFAB1E LSL #16
@@ -217,7 +216,7 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
blr x1
mov x0, x21
; byrRegs +[x0]
- mov w1, w20
+ mov w1, w19
mov x2, x22
; byrRegs +[x2]
mov w3, w23
@@ -237,7 +236,7 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
;; size=144 bbWeight=0.50 PerfScore 16.75
G_M14148_IG07: ; bbWeight=0.50, epilog, nogc, extend
@@ -247,30 +246,33 @@ G_M14148_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M14148_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref
- ; gcrRegs +[x19]
+G_M14148_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
stp x22, x21, [fp, #0x10] // [V09 loc6], [V07 loc4]
- ldr w0, [fp, #0x20] // [V04 loc1]
- sbfiz x0, x0, #1, #32
- add x1, x21, x0
- ldr w2, [fp, #0x20] // [V04 loc1]
- sub w2, w20, w2
- add x3, x22, x0
- mov x0, x19
- ; gcrRegs +[x0]
+ ldr w1, [fp, #0x20] // [V04 loc1]
+ sbfiz x1, x1, #1, #32
+ add x2, x21, x1
+ ldr w3, [fp, #0x20] // [V04 loc1]
+ sub w3, w19, w3
+ add x4, x22, x1
+ mov x1, x2
+ mov w2, w3
+ mov x3, x4
ldr w4, [fp, #0x20] // [V04 loc1]
sub w4, w23, w4
+ mov x0, x20
+ ; gcrRegs +[x0]
mov w5, #1
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
blr x6
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0 x20]
; byrRegs -[x21-x22]
stp xzr, xzr, [fp, #0x10] // [V09 loc6], [V07 loc4]
- ;; size=68 bbWeight=0.50 PerfScore 8.75
+ ;; size=80 bbWeight=0.50 PerfScore 9.50
G_M14148_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -279,7 +281,7 @@ G_M14148_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 420, prolog size 24, PerfScore 56.25, instruction count 105, allocated bytes for code 420 (MethodHash=53d9c8bb) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 432, prolog size 24, PerfScore 57.00, instruction count 108, allocated bytes for code 432 (MethodHash=53d9c8bb) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -290,7 +292,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.88%) : 51192.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M44302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44302_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44302_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M44302_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
coreclr_tests.run.linux.arm64.checked.mch
-48 (-30.00%) : 542550.dasm - (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
@@ -11,7 +11,7 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) multireg-arg single-def <System.Runtime.Intrinsics.Vector256`1[int]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.S11U>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
-; V03 arg3 [V03,T04] ( 3, 3 ) struct (16) [fp+0x60] do-not-enreg[SA] multireg-arg single-def <ABIStress.S9U>
+; V03 arg3 [V03,T01] ( 4, 4 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <ABIStress.S9U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4P>
;* V05 arg5 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Int128>
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S3U>
@@ -25,89 +25,72 @@
;* V14 arg14 [V14 ] ( 0, 0 ) float -> zero-ref single-def
;* V15 arg15 [V15 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
;* V16 arg16 [V16 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S3U>
-; V17 arg17 [V17,T11] ( 1, 1 ) struct (16) [fp+0xC8] do-not-enreg[S] single-def <ABIStress.S15U>
-; V18 arg18 [V18,T12] ( 1, 1 ) struct (16) [fp+0xD8] do-not-enreg[SF] single-def <ABIStress.S12U>
+; V17 arg17 [V17,T06] ( 2, 2 ) struct (16) [fp+0x88] do-not-enreg[SA] multireg-arg single-def <ABIStress.S15U>
+; V18 arg18 [V18,T07] ( 1, 1 ) struct (16) [fp+0x98] do-not-enreg[SF] single-def <ABIStress.S12U>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2P>
;* V21 tmp2 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S4U>
;* V22 tmp3 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S2P>
-;* V23 tmp4 [V23,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V24 tmp5 [V24,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V25 tmp6 [V25,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V26 tmp7 [V26,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T22] ( 2, 2 ) simd16 -> d0 HFA(simd16) single-def "field V00._lower (fldOffset=0x0)" P-INDEP
-; V28 tmp9 [V28,T23] ( 2, 2 ) simd16 -> d1 HFA(simd16) single-def "field V00._upper (fldOffset=0x10)" P-INDEP
-; V29 tmp10 [V29,T06] ( 1, 1 ) ubyte -> x2 single-def "field V02.F0 (fldOffset=0x0)" P-INDEP
-; V30 tmp11 [V30,T07] ( 1, 1 ) int -> x5 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
-; V31 tmp12 [V31,T08] ( 1, 1 ) long -> x6 single-def "field V05._lower (fldOffset=0x0)" P-INDEP
-; V32 tmp13 [V32,T09] ( 1, 1 ) long -> x7 single-def "field V05._upper (fldOffset=0x8)" P-INDEP
+;* V23 tmp4 [V23,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V24 tmp5 [V24,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V25 tmp6 [V25,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V26 tmp7 [V26,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T17] ( 2, 2 ) simd16 -> d0 HFA(simd16) single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+; V28 tmp9 [V28,T18] ( 2, 2 ) simd16 -> d1 HFA(simd16) single-def "field V00._upper (fldOffset=0x10)" P-INDEP
+; V29 tmp10 [V29,T02] ( 1, 1 ) ubyte -> x2 single-def "field V02.F0 (fldOffset=0x0)" P-INDEP
+; V30 tmp11 [V30,T03] ( 1, 1 ) int -> x5 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
+; V31 tmp12 [V31,T04] ( 1, 1 ) long -> x6 single-def "field V05._lower (fldOffset=0x0)" P-INDEP
+; V32 tmp13 [V32,T05] ( 1, 1 ) long -> x7 single-def "field V05._upper (fldOffset=0x8)" P-INDEP
;* V33 tmp14 [V33 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15.F0 (fldOffset=0x0)" P-INDEP
-;* V34 tmp15 [V34,T17] ( 0, 0 ) short -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
-;* V35 tmp16 [V35,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
-;* V36 tmp17 [V36,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
-;* V37 tmp18 [V37,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
-;* V38 tmp19 [V38,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
+;* V34 tmp15 [V34,T12] ( 0, 0 ) short -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
+;* V35 tmp16 [V35,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
+;* V36 tmp17 [V36,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
+;* V37 tmp18 [V37,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
+;* V38 tmp19 [V38,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
;* V39 tmp20 [V39 ] ( 0, 0 ) short -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
-; V40 tmp21 [V40,T00] ( 5, 10 ) struct ( 8) [fp+0x58] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
-; V41 tmp22 [V41,T02] ( 3, 6 ) struct (16) [fp+0x48] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S9U>
-; V42 tmp23 [V42,T05] ( 2, 4 ) int -> x2 "argument with side effect"
-; V43 tmp24 [V43,T03] ( 3, 6 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S15U>
-; V44 tmp25 [V44,T01] ( 4, 8 ) struct (32) [fp+0x18] HFA(simd16) do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Runtime.Intrinsics.Vector256`1[int]>
-;* V45 tmp26 [V45,T10] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V40 tmp21 [V40,T00] ( 5, 10 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
;
-; Lcl frame size = 96
+; Lcl frame size = 32
G_M63451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp x3, x4, [fp, #0x60] // [V03 arg3], [V03 arg3+0x08]
+ stp x3, x4, [fp, #0x20] // [V03 arg3], [V03 arg3+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M63451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x60]
- str x0, [fp, #0x48]
- ldrb w0, [fp, #0x68]
- strb w0, [fp, #0x50]
- ldrb w2, [fp, #0xE0] // [V18 arg18+0x08]
- ldr x0, [fp, #0xC8]
- str x0, [fp, #0x38]
- ldr x0, [fp, #0xCF]
- str x0, [fp, #0x3F]
- str q0, [fp, #0x18] // [V44 tmp25]
- str q1, [fp, #0x28] // [V44 tmp25+0x10]
- mov w0, #6
- strb w0, [fp, #0x58] // [V40 tmp21]
- mov w0, #36
- strb w0, [fp, #0x59] // [V40 tmp21+0x01]
- mov w0, #53
- strb w0, [fp, #0x5A] // [V40 tmp21+0x02]
- mov w0, #255
- strb w0, [fp, #0x5B] // [V40 tmp21+0x03]
+ mov w7, #6
+ strb w7, [fp, #0x18] // [V40 tmp21]
+ mov w7, #36
+ strb w7, [fp, #0x19] // [V40 tmp21+0x01]
+ mov w7, #53
+ strb w7, [fp, #0x1A] // [V40 tmp21+0x02]
+ mov w7, #255
+ strb w7, [fp, #0x1B] // [V40 tmp21+0x03]
nop
- ;; size=80 bbWeight=1 PerfScore 22.50
+ ;; size=36 bbWeight=1 PerfScore 6.50
G_M63451_IG03: ; bbWeight=1, nogc, extend
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movk x0, #0xD1FFAB1E LSL #48
- str x0, [fp, #0x70] // [V06 arg6]
- ldp x0, x1, [fp, #0x48] // [V41 tmp22], [V41 tmp22+0x08]
- ldp x3, x4, [fp, #0x38] // [V43 tmp24], [V43 tmp24+0x08]
- ldr q0, [fp, #0x18] // [V44 tmp25]
- ldr q1, [fp, #0x28] // [V44 tmp25+0x10]
- ldr w7, [fp, #0x58] // [V40 tmp21]
+ movz x7, #0xD1FFAB1E
+ movk x7, #0xD1FFAB1E LSL #16
+ movk x7, #0xD1FFAB1E LSL #32
+ movk x7, #0xD1FFAB1E LSL #48
+ str x7, [fp, #0x30] // [V06 arg6]
+ ldr w7, [fp, #0x18] // [V40 tmp21]
+ ldp x0, x1, [fp, #0x20] // [V03 arg3], [V03 arg3+0x08]
+ ldp x3, x4, [fp, #0x88] // [V17 arg17], [V17 arg17+0x08]
+ ldrb w2, [fp, #0xA0] // [V18 arg18+0x08]
movn w6, #0xD1FFAB1E
movz x5, #0xD1FFAB1E
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
movk x5, #0xD1FFAB1E LSL #48
- ;; size=60 bbWeight=1 PerfScore 17.50
+ ;; size=56 bbWeight=1 PerfScore 15.50
G_M63451_IG04: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x70
+ ldp fp, lr, [sp], #0x30
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 160, prolog size 12, PerfScore 44.50, instruction count 40, allocated bytes for code 160 (MethodHash=47390824) for method (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 26.50, instruction count 28, allocated bytes for code 112 (MethodHash=47390824) for method (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,7 +109,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
-44 (-26.83%) : 263980.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-16 (-26.67%) : 543042.dasm - (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
@@ -8,44 +8,39 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 3 ) struct (16) [fp+0x30] do-not-enreg[SA] multireg-arg single-def <ABIStress.S10U>
+; V00 arg0 [V00,T00] ( 4, 4 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <ABIStress.S10U>
;* V01 arg1 [V01 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) single-def <System.Runtime.Intrinsics.Vector128`1[int]>
;* V02 arg2 [V02 ] ( 0, 0 ) short -> zero-ref single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V05 tmp2 [V05,T03] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V06 tmp3 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V07 tmp4 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
-;* V08 tmp5 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F1 (fldOffset=0x1)" P-INDEP
-; V09 tmp6 [V09,T00] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V10 tmp7 [V10,T01] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S10U>
+;* V05 tmp2 [V05,T02] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
+;* V08 tmp5 [V08,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F1 (fldOffset=0x1)" P-INDEP
+; V09 tmp6 [V09,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M42108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp x0, x1, [fp, #0x30] // [V00 arg0], [V00 arg0+0x08]
+ stp x0, x1, [fp, #0x20] // [V00 arg0], [V00 arg0+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M42108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30]
- str x0, [fp, #0x18]
- ldrh w0, [fp, #0x38]
- strh w0, [fp, #0x20]
- mov w0, #191
- strb w0, [fp, #0x28] // [V09 tmp6]
- mov w0, #168
- strb w0, [fp, #0x29] // [V09 tmp6+0x01]
- ldp x0, x1, [fp, #0x18] // [V10 tmp7], [V10 tmp7+0x08]
- ldrh w2, [fp, #0x28] // [V09 tmp6]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ mov w2, #191
+ strb w2, [fp, #0x18] // [V09 tmp6]
+ mov w2, #168
+ strb w2, [fp, #0x19] // [V09 tmp6+0x01]
+ ldrh w2, [fp, #0x18] // [V09 tmp6]
+ ldp x0, x1, [fp, #0x20] // [V00 arg0], [V00 arg0+0x08]
+ ;; size=24 bbWeight=1 PerfScore 8.00
G_M42108_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 18.50, instruction count 15, allocated bytes for code 60 (MethodHash=cee55b83) for method (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
+; Total bytes of code 44, prolog size 12, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=cee55b83) for method (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +51,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -64,7 +59,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+4 (+3.85%) : 622340.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
@@ -12,21 +12,20 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <NotEmptyStructQ>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (16) [fp+0x20] do-not-enreg[XSA] multireg-arg addr-exposed "UNBOXing a register returnable nullable" <System.Nullable`1[NotEmptyStructQ]>
-;* V04 tmp2 [V04,T07] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <System.Nullable`1[NotEmptyStructQ]>
+;* V04 tmp2 [V04,T06] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <System.Nullable`1[NotEmptyStructQ]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "spilled call-like call argument" <NotEmptyStructQ>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <NotEmptyStructQ>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
; V08 tmp6 [V08,T04] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
-;* V09 tmp7 [V09,T08] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Nullable`1[NotEmptyStructQ]>
+;* V09 tmp7 [V09,T07] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Nullable`1[NotEmptyStructQ]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <NotEmptyStructQ>
-;* V11 tmp9 [V11,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V12 tmp10 [V12,T10] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp9 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V12 tmp10 [V12,T09] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[000..001)"
-; V14 tmp12 [V14,T05] ( 2, 2 ) ubyte -> x1 single-def "V04.[000..001)"
-; V15 tmp13 [V15,T00] ( 3, 6 ) byref -> x0 single-def "Spilling address for field-by-field copy"
+; V14 tmp12 [V14,T05] ( 2, 2 ) ubyte -> x0 single-def "V04.[000..001)"
+; V15 tmp13 [V15,T00] ( 3, 6 ) byref -> x1 single-def "Spilling address for field-by-field copy"
; V16 tmp14 [V16,T03] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <NotEmptyStructQ>
-; V17 tmp15 [V17,T06] ( 2, 2 ) long -> x0 "argument with side effect"
-; V18 cse0 [V18,T02] ( 2, 1.50) long -> x0 "CSE - aggressive"
+; V17 cse0 [V17,T02] ( 2, 1.50) long -> x2 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -43,26 +42,27 @@ G_M2442_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
movk x1, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs -[x2]
- add x0, fp, #32 // [V03 tmp1]
- ; byrRegs +[x0]
- ldrb w1, [x0]
- ldr x0, [x0, #0x04]
- ; byrRegs -[x0]
- cbz w1, G_M2442_IG04
+ add x1, fp, #32 // [V03 tmp1]
+ ; byrRegs +[x1]
+ ldrb w0, [x1]
+ ldr x2, [x1, #0x04]
+ cbz w0, G_M2442_IG04
;; size=36 bbWeight=1 PerfScore 10.50
G_M2442_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x1]
mov w1, #1
strb w1, [fp, #0x18] // [V16 tmp14]
mov w1, #101
str w1, [fp, #0x1C] // [V16 tmp14+0x04]
ldr x1, [fp, #0x18] // [V16 tmp14]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for Helper:Compare(NotEmptyStructQ,NotEmptyStructQ):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
b G_M2442_IG05
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M2442_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -71,7 +71,7 @@ G_M2442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 20.50, instruction count 26, allocated bytes for code 104 (MethodHash=b6abf675) for method NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
+; Total bytes of code 108, prolog size 8, PerfScore 20.75, instruction count 27, allocated bytes for code 108 (MethodHash=b6abf675) for method NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.88%) : 444581.dasm - SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
@@ -8,50 +8,46 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) int -> x0 single-def
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> x1 single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> x7 single-def
; V02 arg2 [V02,T03] ( 3, 3 ) int -> x2 single-def
; V03 arg3 [V03,T04] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T05] ( 3, 3 ) int -> x4 single-def
-; V05 arg5 [V05,T06] ( 3, 3 ) int -> x5 single-def
+; V05 arg5 [V05,T06] ( 3, 3 ) int -> x8 single-def
; V06 arg6 [V06,T07] ( 3, 3 ) int -> x6 single-def
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <SP1d+S>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T13] ( 2, 2 ) int -> x3 single-def "field V07.i0 (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T14] ( 2, 2 ) int -> x2 single-def "field V07.i1 (fldOffset=0x4)" P-INDEP
+; V09 tmp1 [V09,T08] ( 2, 2 ) int -> x3 single-def "field V07.i0 (fldOffset=0x0)" P-INDEP
+; V10 tmp2 [V10,T09] ( 2, 2 ) int -> x2 single-def "field V07.i1 (fldOffset=0x4)" P-INDEP
; V11 tmp3 [V11,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <SP1d+S>
-; V12 tmp4 [V12,T08] ( 2, 4 ) int -> x1 "argument with side effect"
-; V13 tmp5 [V13,T09] ( 2, 4 ) int -> x7 "argument with side effect"
-; V14 tmp6 [V14,T10] ( 2, 4 ) int -> x4 "argument with side effect"
-; V15 tmp7 [V15,T11] ( 2, 4 ) int -> x5 "argument with side effect"
-; V16 tmp8 [V16,T12] ( 2, 4 ) int -> x6 "argument with side effect"
;
; Lcl frame size = 16
G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w7, w1
+ mov w8, w5
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M13440_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- sxtw w7, w0
stp w3, w2, [fp, #0x18] // [V11 tmp3], [V11 tmp3+0x04]
- mov w0, w1
- mov w1, w7
- mov w2, w4
- mov w3, w5
- mov w4, w6
ldr x5, [fp, #0x18] // [V11 tmp3]
+ mov w1, w0
+ mov w2, w4
+ mov w3, w8
+ mov w4, w6
+ mov w0, w7
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
blr x6
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=48 bbWeight=1 PerfScore 11.00
G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 68 (MethodHash=0379cb7f) for method SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 15.50, instruction count 18, allocated bytes for code 72 (MethodHash=0379cb7f) for method SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
+36 (+13.85%) : 543758.dasm - (dynamicClass):ABIStress_TailCaller965(ABIStress.S12U,System.Int128,System.Numerics.Vector
1[int],ABIStress.S9U,ABIStress.I128_1,ABIStress.S4U,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S5U,double,ABIStress.S6U,ABIStress.Hfa2,System.Runtime.Intrinsics.Vector1281[int],ubyte,long):int (FullOpts)@@ -8,17 +8,17 @@
; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 4 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg single-def <ABIStress.S12U>
+; V00 arg0 [V00,T02] ( 4, 4 ) struct (16) [fp+0x50] do-not-enreg[SFA] multireg-arg single-def <ABIStress.S12U>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Int128>
;* V02 arg2 [V02 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) single-def <System.Numerics.Vector`1[int]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.S9U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.I128_1>
-; V05 arg5 [V05,T12] ( 1, 1 ) struct ( 8) [fp+0x50] do-not-enreg[S] single-def <ABIStress.S4U>
+; V05 arg5 [V05,T09] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] single-def <ABIStress.S4U>
;* V06 arg6 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] single-def <ABIStress.S13U>
;* V07 arg7 [V07 ] ( 0, 0 ) struct (32) zero-ref HFA(double) multireg-arg single-def <ABIStress.Hfa2>
-; V08 arg8 [V08,T11] ( 2, 2 ) struct ( 8) [fp+0x68] do-not-enreg[S] single-def <ABIStress.S5U>
+; V08 arg8 [V08,T10] ( 1, 1 ) struct ( 8) [fp+0x78] do-not-enreg[S] single-def <ABIStress.S5U>
;* V09 arg9 [V09 ] ( 0, 0 ) double -> zero-ref single-def
-; V10 arg10 [V10,T13] ( 1, 1 ) struct ( 8) [fp+0x70] do-not-enreg[S] single-def <ABIStress.S6U>
+; V10 arg10 [V10,T11] ( 1, 1 ) struct ( 8) [fp+0x80] do-not-enreg[S] single-def <ABIStress.S6U>
;* V11 arg11 [V11 ] ( 0, 0 ) struct (32) zero-ref HFA(double) do-not-enreg[S] single-def <ABIStress.Hfa2>
;* V12 arg12 [V12 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) single-def <System.Runtime.Intrinsics.Vector128`1[int]>
;* V13 arg13 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def
@@ -33,134 +33,139 @@
;* V22 tmp7 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S4P>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S1P>
;* V24 tmp9 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S8P>
-; V25 tmp10 [V25,T00] ( 13, 26 ) struct (16) [fp+0x30] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <ABIStress.S11U>
+; V25 tmp10 [V25,T00] ( 13, 26 ) struct (16) [fp+0x40] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <ABIStress.S11U>
;* V26 tmp11 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S1P>
-;* V27 tmp12 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V28 tmp13 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V29 tmp14 [V29,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V30 tmp15 [V30,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V31 tmp16 [V31,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V32 tmp17 [V32,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V33 tmp18 [V33,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V34 tmp19 [V34,T21] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V35 tmp20 [V35,T22] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V36 tmp21 [V36,T23] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V37 tmp22 [V37,T24] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V38 tmp23 [V38,T25] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V39 tmp24 [V39,T26] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp25 [V40,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V41 tmp26 [V41,T28] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp27 [V42,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V43 tmp28 [V43,T09] ( 1, 1 ) long -> x2 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-; V44 tmp29 [V44,T10] ( 1, 1 ) long -> x3 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
-; V45 tmp30 [V45,T41] ( 1, 1 ) double -> d1 single-def "field V07.F0 (fldOffset=0x0)" P-INDEP
-; V46 tmp31 [V46,T42] ( 1, 1 ) double -> d2 single-def "field V07.F1 (fldOffset=0x8)" P-INDEP
-; V47 tmp32 [V47,T43] ( 1, 1 ) double -> d3 single-def "field V07.F2 (fldOffset=0x10)" P-INDEP
-; V48 tmp33 [V48,T39] ( 2, 2 ) double -> d4 single-def "field V07.F3 (fldOffset=0x18)" P-INDEP
-;* V49 tmp34 [V49,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F0 (fldOffset=0x0)" P-INDEP
-;* V50 tmp35 [V50,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F1 (fldOffset=0x1)" P-INDEP
-;* V51 tmp36 [V51,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F0 (fldOffset=0x0)" P-INDEP
-;* V52 tmp37 [V52,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F1 (fldOffset=0x1)" P-INDEP
-;* V53 tmp38 [V53,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F2 (fldOffset=0x2)" P-INDEP
+;* V27 tmp12 [V27,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V28 tmp13 [V28,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V29 tmp14 [V29,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V30 tmp15 [V30,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V31 tmp16 [V31,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V32 tmp17 [V32,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V33 tmp18 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V34 tmp19 [V34,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V35 tmp20 [V35,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V36 tmp21 [V36,T21] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V37 tmp22 [V37,T22] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V38 tmp23 [V38,T23] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V39 tmp24 [V39,T24] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp25 [V40,T25] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V41 tmp26 [V41,T26] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp27 [V42,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V43 tmp28 [V43,T07] ( 1, 1 ) long -> x2 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V44 tmp29 [V44,T08] ( 1, 1 ) long -> x3 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+; V45 tmp30 [V45,T37] ( 1, 1 ) double -> d1 single-def "field V07.F0 (fldOffset=0x0)" P-INDEP
+; V46 tmp31 [V46,T38] ( 1, 1 ) double -> d2 single-def "field V07.F1 (fldOffset=0x8)" P-INDEP
+; V47 tmp32 [V47,T39] ( 1, 1 ) double -> d3 single-def "field V07.F2 (fldOffset=0x10)" P-INDEP
+; V48 tmp33 [V48,T36] ( 3, 3 ) double -> d4 single-def "field V07.F3 (fldOffset=0x18)" P-INDEP
+;* V49 tmp34 [V49,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F0 (fldOffset=0x0)" P-INDEP
+;* V50 tmp35 [V50,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F1 (fldOffset=0x1)" P-INDEP
+;* V51 tmp36 [V51,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F0 (fldOffset=0x0)" P-INDEP
+;* V52 tmp37 [V52,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F1 (fldOffset=0x1)" P-INDEP
+;* V53 tmp38 [V53,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F2 (fldOffset=0x2)" P-INDEP
;* V54 tmp39 [V54 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
;* V55 tmp40 [V55 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F1 (fldOffset=0x1)" P-INDEP
-;* V56 tmp41 [V56,T35] ( 0, 0 ) int -> zero-ref single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
+;* V56 tmp41 [V56,T33] ( 0, 0 ) int -> zero-ref single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
;* V57 tmp42 [V57 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
;* V58 tmp43 [V58 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.F1 (fldOffset=0x1)" P-INDEP
;* V59 tmp44 [V59 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.F2 (fldOffset=0x2)" P-INDEP
-;* V60 tmp45 [V60,T36] ( 0, 0 ) long -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
+;* V60 tmp45 [V60,T34] ( 0, 0 ) long -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
;* V61 tmp46 [V61 ] ( 0, 0 ) int -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
-;* V62 tmp47 [V62,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V23.F0 (fldOffset=0x0)" P-INDEP
+;* V62 tmp47 [V62,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V23.F0 (fldOffset=0x0)" P-INDEP
;* V63 tmp48 [V63 ] ( 0, 0 ) long -> zero-ref single-def "field V24.F0 (fldOffset=0x0)" P-INDEP
;* V64 tmp49 [V64 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.F0 (fldOffset=0x0)" P-INDEP
-; V65 tmp50 [V65,T03] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V66 tmp51 [V66,T01] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
-; V67 tmp52 [V67,T40] ( 2, 4 ) double -> d0 "argument with side effect"
-; V68 tmp53 [V68,T04] ( 2, 4 ) long -> x0 "argument with side effect"
-; V69 tmp54 [V69,T05] ( 2, 4 ) long -> x1 "argument with side effect"
-; V70 tmp55 [V70,T06] ( 2, 4 ) long -> x2 "argument with side effect"
-; V71 tmp56 [V71,T38] ( 3, 6 ) double -> d0 "argument with side effect"
-; V72 tmp57 [V72,T07] ( 2, 4 ) int -> x5 "argument with side effect"
-; V73 rat0 [V73,T08] ( 2, 4 ) struct ( 8) [fp+0x18] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S4U>
+; V65 tmp50 [V65,T03] ( 3, 6 ) struct ( 8) [fp+0x38] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
+; V66 tmp51 [V66,T01] ( 4, 8 ) struct ( 8) [fp+0x30] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
+; V67 rat0 [V67,T05] ( 2, 4 ) struct ( 8) [fp+0x28] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S4U>
+; V68 rat1 [V68,T04] ( 3, 6 ) struct ( 8) [fp+0x20] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S5U>
+; V69 rat2 [V69,T06] ( 2, 4 ) struct ( 8) [fp+0x18] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S6U>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M63761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- stp x0, x1, [fp, #0x40] // [V00 arg0], [V00 arg0+0x08]
+ stp x0, x1, [fp, #0x50] // [V00 arg0], [V00 arg0+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M63761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- str xzr, [fp, #0x30]
- str wzr, [fp, #0x37]
- mov w0, #62
- strb w0, [fp, #0x30] // [V25 tmp10]
- mov w0, #133
- strb w0, [fp, #0x31] // [V25 tmp10+0x01]
- mov w0, #188
- strb w0, [fp, #0x32] // [V25 tmp10+0x02]
- mov w0, #17
- strb w0, [fp, #0x33] // [V25 tmp10+0x03]
- mov w0, #44
- strb w0, [fp, #0x34] // [V25 tmp10+0x04]
- mov w0, #182
- strb w0, [fp, #0x35] // [V25 tmp10+0x05]
- mov w0, #76
- strb w0, [fp, #0x36] // [V25 tmp10+0x06]
- mov w0, #121
- strb w0, [fp, #0x37] // [V25 tmp10+0x07]
- mov w0, #144
- strb w0, [fp, #0x38] // [V25 tmp10+0x08]
- mov w0, #100
- strb w0, [fp, #0x39] // [V25 tmp10+0x09]
- mov w0, #75
- strb w0, [fp, #0x3A] // [V25 tmp10+0x0a]
- fmov d0, d4
- ldp x1, x0, [fp, #0x68] // [V08 arg8], [V10 arg10]
- ldr x2, [fp, #0x68] // [V08 arg8]
+ str xzr, [fp, #0x40]
+ str wzr, [fp, #0x47]
+ mov w4, #62
+ strb w4, [fp, #0x40] // [V25 tmp10]
+ mov w4, #133
+ strb w4, [fp, #0x41] // [V25 tmp10+0x01]
+ mov w4, #188
+ strb w4, [fp, #0x42] // [V25 tmp10+0x02]
+ mov w4, #17
+ strb w4, [fp, #0x43] // [V25 tmp10+0x03]
+ mov w4, #44
+ strb w4, [fp, #0x44] // [V25 tmp10+0x04]
+ mov w4, #182
+ strb w4, [fp, #0x45] // [V25 tmp10+0x05]
+ mov w4, #76
+ strb w4, [fp, #0x46] // [V25 tmp10+0x06]
+ mov w4, #121
+ strb w4, [fp, #0x47] // [V25 tmp10+0x07]
+ mov w4, #144
+ strb w4, [fp, #0x48] // [V25 tmp10+0x08]
+ mov w4, #100
+ strb w4, [fp, #0x49] // [V25 tmp10+0x09]
+ mov w4, #75
+ strb w4, [fp, #0x4A] // [V25 tmp10+0x0a]
mov w4, #176
- strb w4, [fp, #0x28] // [V65 tmp50]
+ strb w4, [fp, #0x38] // [V65 tmp50]
mov w4, #110
- strb w4, [fp, #0x29] // [V65 tmp50+0x01]
- ldrb w5, [fp, #0x42] // [V00 arg0+0x02]
+ strb w4, [fp, #0x39] // [V65 tmp50+0x01]
mov w4, #238
- strb w4, [fp, #0x20] // [V66 tmp51]
+ strb w4, [fp, #0x30] // [V66 tmp51]
mov w4, #21
- strb w4, [fp, #0x21] // [V66 tmp51+0x01]
+ strb w4, [fp, #0x31] // [V66 tmp51+0x01]
mov w4, #79
- strb w4, [fp, #0x22] // [V66 tmp51+0x02]
+ strb w4, [fp, #0x32] // [V66 tmp51+0x02]
nop
- ;; size=156 bbWeight=1 PerfScore 34.00
+ ;; size=140 bbWeight=1 PerfScore 26.50
G_M63761_IG03: ; bbWeight=1, nogc, extend
- ldr w4, [fp, #0x50] // [V05 arg5]
- str w4, [fp, #0x18] // [V73 rat0]
+ ldr w4, [fp, #0x60] // [V05 arg5]
+ str w4, [fp, #0x28] // [V67 rat0]
+ ldr w4, [fp, #0x78]
+ str w4, [fp, #0x20]
+ ldrb w4, [fp, #0x7C]
+ strb w4, [fp, #0x24]
+ ldr w4, [fp, #0x80]
+ str w4, [fp, #0x18]
+ ldrh w4, [fp, #0x84]
+ strh w4, [fp, #0x1C]
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- str w4, [fp, #0x50] // [V05 arg5]
+ str w4, [fp, #0x60] // [V05 arg5]
movz x4, #0xD1FFAB1E
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
movk x4, #0xD1FFAB1E LSL #48
- str x4, [fp, #0x58] // [V05 arg5+0x08]
+ str x4, [fp, #0x68] // [V05 arg5+0x08]
mov w4, #229
- str w4, [fp, #0x60] // [V05 arg5+0x10]
- ldp x4, x6, [fp, #0x30] // [V25 tmp10]
- stp x4, x6, [fp, #0x68] // [V05 arg5+0x18]
- ldrb w4, [fp, #0x45] // [V00 arg0+0x05]
- str w4, [fp, #0x78] // [V05 arg5+0x28]
- fmov d1, d0
- ldrh w4, [fp, #0x28] // [V65 tmp50]
- ldr w6, [fp, #0x20] // [V66 tmp51]
- ldr w7, [fp, #0x18] // [V73 rat0]
+ str w4, [fp, #0x70] // [V05 arg5+0x10]
+ ldp x4, x6, [fp, #0x40] // [V25 tmp10]
+ stp x4, x6, [fp, #0x78] // [V05 arg5+0x18]
+ ldrb w4, [fp, #0x55] // [V00 arg0+0x05]
+ str w4, [fp, #0x88] // [V05 arg5+0x28]
+ ldrh w4, [fp, #0x38] // [V65 tmp50]
+ ldr w6, [fp, #0x30] // [V66 tmp51]
+ ldr x1, [fp, #0x20] // [V68 rat1]
+ mov x2, x1
+ fmov d1, d4
+ fmov d0, d4
+ ldrb w5, [fp, #0x52] // [V00 arg0+0x02]
+ ldr x0, [fp, #0x18] // [V69 rat2]
+ ldr w7, [fp, #0x28] // [V67 rat0]
mov w3, #0xD1FFAB1E
- ;; size=84 bbWeight=1 PerfScore 23.50
+ ;; size=136 bbWeight=1 PerfScore 42.50
G_M63761_IG04: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
...
libraries.crossgen2.linux.arm64.checked.mch
-12 (-21.43%) : 188789.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[System.DateTime]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[System.DateTime]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M46195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M46195_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M46195_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-21.43%) : 188814.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[ulong]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M16550_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-21.43%) : 188803.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[long]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M61747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M61747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M61747_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+24 (+5.83%) : 141890.dasm - System.Reflection.Metadata.Ecma335.CustomAttributeDecoder
1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)@@ -8,61 +8,59 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 10 ) byref -> x19 this single-def
-; V01 TypeCtx [V01,T15] ( 6, 4.50) long -> x24 single-def
-; V02 arg1 [V02,T05] ( 3, 6 ) byref -> x21 single-def
-; V03 arg2 [V03,T06] ( 3, 6 ) byref -> x22 single-def
-; V04 arg3 [V04,T07] ( 6, 8 ) int -> x23 single-def
-; V05 arg4 [V05,T03] ( 3, 12 ) byref -> x20 single-def
-; V06 loc0 [V06,T16] ( 3, 5 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V07 loc1 [V07,T04] ( 4, 12.50) int -> x26
-; V08 loc2 [V08 ] ( 2, 8 ) struct (24) [fp+0x50] do-not-enreg[XS] must-init addr-exposed <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
+; V00 this [V00,T04] ( 4, 10 ) byref -> x20 this single-def
+; V01 TypeCtx [V01,T11] ( 6, 4.50) long -> x24 single-def
+; V02 arg1 [V02,T07] ( 3, 6 ) byref -> x22 single-def
+; V03 arg2 [V03,T08] ( 3, 6 ) byref -> x23 single-def
+; V04 arg3 [V04,T05] ( 6, 8 ) int -> x21 single-def
+; V05 arg4 [V05,T02] ( 3, 12 ) byref -> x19 single-def
+; V06 loc0 [V06,T12] ( 3, 5 ) ref -> x25 class-hnd single-def <<unknown class>>
+; V07 loc1 [V07,T03] ( 4, 12.50) int -> x26
+; V08 loc2 [V08 ] ( 2, 8 ) struct (24) [fp+0x48] do-not-enreg[XS] must-init addr-exposed <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]>
; V11 tmp2 [V11,T09] ( 2, 8 ) ref -> x0 "field V10.<Type>k__BackingField (fldOffset=0x0)" P-INDEP
; V12 tmp3 [V12,T10] ( 2, 8 ) ref -> x2 "field V10.<Value>k__BackingField (fldOffset=0x8)" P-INDEP
-; V13 tmp4 [V13,T17] ( 2, 2 ) long -> x0 "argument with side effect"
-; V14 tmp5 [V14 ] ( 2, 16 ) struct (32) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Reflection.Metadata.BlobReader>
-; V15 tmp6 [V15,T01] ( 2, 16 ) long -> x1 "argument with side effect"
-;* V16 tmp7 [V16,T11] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V17 tmp8 [V17,T12] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V18 tmp9 [V18 ] ( 2, 16 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
-; V19 tmp10 [V19,T02] ( 2, 16 ) long -> x1 "argument with side effect"
-;* V20 tmp11 [V20,T13] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V21 tmp12 [V21,T14] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V22 cse0 [V22,T08] ( 3, 8.50) long -> x24 hoist "CSE - aggressive"
+; V13 tmp4 [V13,T14] ( 2, 2 ) long -> x0 "argument with side effect"
+; V14 tmp5 [V14 ] ( 2, 16 ) struct (32) [fp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Reflection.Metadata.BlobReader>
+; V15 tmp6 [V15,T00] ( 2, 16 ) long -> x1 "argument with side effect"
+; V16 tmp7 [V16 ] ( 2, 16 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
+; V17 tmp8 [V17,T01] ( 2, 16 ) long -> x1 "argument with side effect"
+; V18 cse0 [V18,T06] ( 3, 8.50) long -> x24 hoist "CSE - aggressive"
+; V19 cse1 [V19,T13] ( 2, 4.50) long -> x27 hoist "CSE - aggressive"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
G_M22533_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0xB0]!
- stp x19, x20, [sp, #0x70]
- stp x21, x22, [sp, #0x80]
- stp x23, x24, [sp, #0x90]
- stp x25, x26, [sp, #0xA0]
+ stp x19, x20, [sp, #0x68]
+ stp x21, x22, [sp, #0x78]
+ stp x23, x24, [sp, #0x88]
+ stp x25, x26, [sp, #0x98]
+ str x27, [sp, #0xA8]
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 x1, [fp, #0x68]
- mov x19, x0
- ; byrRegs +[x19]
- mov x24, x1
- mov x21, x2
- ; byrRegs +[x21]
- mov x22, x3
- ; byrRegs +[x22]
- mov w23, w4
- mov x20, x5
+ str x1, [fp, #0x60]
+ mov x20, x0
; byrRegs +[x20]
- ;; size=72 bbWeight=1 PerfScore 13.50
-G_M22533_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=780000 {x19 x20 x21 x22}, byref, isz
- cbnz w23, G_M22533_IG05
+ mov x24, x1
+ mov x22, x2
+ ; byrRegs +[x22]
+ mov x23, x3
+ ; byrRegs +[x23]
+ mov w21, w4
+ mov x19, x5
+ ; byrRegs +[x19]
+ ;; size=76 bbWeight=1 PerfScore 14.50
+G_M22533_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=D80000 {x19 x20 x22 x23}, byref, isz
+ cbnz w21, G_M22533_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M22533_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19-x22]
+ ; byrRegs -[x19-x20 x22-x23]
mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -79,22 +77,23 @@ G_M22533_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x0, [x0, #0x08]
;; size=44 bbWeight=0.50 PerfScore 8.25
G_M22533_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0xA0]
- ldp x23, x24, [sp, #0x90]
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
+ ldr x27, [sp, #0xA8]
+ ldp x25, x26, [sp, #0x98]
+ ldp x23, x24, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0xB0
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=780000 {x19 x20 x21 x22}, gcvars, byref, isz
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=D80000 {x19 x20 x22 x23}, gcvars, byref, isz
; gcrRegs -[x0]
- ; byrRegs +[x19-x22]
+ ; byrRegs +[x19-x20 x22-x23]
mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- mov w1, w23
+ mov w1, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
@@ -103,7 +102,7 @@ G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov x25, x0
; gcrRegs +[x25]
mov w26, wzr
- cmp w23, #0
+ cmp w21, #0
ble G_M22533_IG09
mov x0, x24
; gcrRegs -[x0]
@@ -112,36 +111,39 @@ G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x1, [x11]
blr x1
mov x24, x0
- ;; size=80 bbWeight=0.50 PerfScore 9.75
-G_M22533_IG06: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=780000 {x19 x20 x21 x22}, byref
+ adrp x27, [HIGH RELOC #0xD1FFAB1E]
+ add x27, x27, [LOW RELOC #0xD1FFAB1E]
+ ;; size=88 bbWeight=0.50 PerfScore 10.25
+G_M22533_IG06: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=D80000 {x19 x20 x22 x23}, byref
mov x1, x24
- ldp q16, q17, [x20]
- stp q16, q17, [fp, #0x30]
- add x3, fp, #48 // [V14 tmp5]
- mov x0, x19
+ ldp x3, x8, [x19]
+ stp x3, x8, [fp, #0x28]
+ ldp x3, x8, [x19, #0x10]
+ stp x3, x8, [fp, #0x38]
+ add x3, fp, #40 // [V14 tmp5]
+ add x8, fp, #72 // [V08 loc2]
+ mov x0, x20
; byrRegs +[x0]
- mov x2, x21
+ mov x2, x22
; byrRegs +[x2]
- add x8, fp, #80 // [V08 loc2]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x27
mov w4, wzr
ldr x5, [x11]
blr x5
; byrRegs -[x0 x2]
mov x1, x24
- ;; size=52 bbWeight=4 PerfScore 50.00
+ ;; size=56 bbWeight=4 PerfScore 72.00
G_M22533_IG07: ; bbWeight=4, nogc, extend
- ldp x0, x2, [fp, #0x50]
- stp x0, x2, [fp, #0x18]
- ldr x0, [fp, #0x60]
- str x0, [fp, #0x28]
+ ldp x0, x2, [fp, #0x48]
+ stp x0, x2, [fp, #0x10]
+ ldr x0, [fp, #0x58]
+ str x0, [fp, #0x20]
;; size=16 bbWeight=4 PerfScore 28.00
G_M22533_IG08: ; bbWeight=4, isz, extend
- add x3, fp, #24 // [V18 tmp9]
- mov x0, x19
+ add x3, fp, #16 // [V16 tmp7]
+ mov x0, x20
; byrRegs +[x0]
- mov x2, x22
+ mov x2, x23
; byrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,11 +162,11 @@ G_M22533_IG08: ; bbWeight=4, isz, extend
blr x3
; gcrRegs -[x0-x2]
add w26, w26, #1
- cmp w26, w23
+ cmp w26, w21
blt G_M22533_IG06
;; size=72 bbWeight=4 PerfScore 72.00
G_M22533_IG09: ; bbWeight=0.50, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19-x22]
+ ; byrRegs -[x19-x20 x22-x23]
mov x0, x25
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -175,26 +177,27 @@ G_M22533_IG09: ; bbWeight=0.50, gcrefRegs=2000000 {x25}, byrefRegs=0000 {
; gcrRegs -[x25]
;; size=24 bbWeight=0.50 PerfScore 4.25
G_M22533_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0xA0]
- ldp x23, x24, [sp, #0x90]
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
+ ldr x27, [sp, #0xA8]
+ ldp x25, x26, [sp, #0x98]
+ ldp x23, x24, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0xB0
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
-; Total bytes of code 412, prolog size 48, PerfScore 192.75, instruction count 103, allocated bytes for code 412 (MethodHash=ae16a7fa) for method System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)
+; Total bytes of code 436, prolog size 52, PerfScore 218.25, instruction count 109, allocated bytes for code 436 (MethodHash=ae16a7fa) for method System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -205,10 +208,13 @@ Unwind Info:
---- Unwind codes ----
...
+20 (+6.02%) : 72648.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 12, 12 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -23,7 +23,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V13 tmp9 [V13 ] ( 4, 6 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V14 tmp10 [V14,T03] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V14 tmp10 [V14,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V07.array (fldOffset=0x0)" P-INDEP
@@ -32,16 +32,14 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref "field V11._bits (fldOffset=0x0)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) long -> zero-ref "field V11._bits0 (fldOffset=0x8)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
-; V23 tmp19 [V23,T10] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V23 tmp19 [V23,T08] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
; V24 tmp20 [V24 ] ( 4, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V13.array (fldOffset=0x0)" P-DEP
; V25 tmp21 [V25 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V26 tmp22 [V26,T00] ( 9, 18 ) ref -> x19 single-def "argument with side effect"
-; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V29 tmp25 [V29,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V30 tmp26 [V30,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V31 tmp27 [V31,T09] ( 2, 4 ) int -> x5 "argument with side effect"
-; V32 tmp28 [V32,T08] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V26 tmp22 [V26,T03] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
+; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V29 tmp25 [V29,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V30 tmp26 [V30,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
;
; Lcl frame size = 64
@@ -100,14 +98,9 @@ G_M12801_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=40 bbWeight=0.50 PerfScore 6.00
G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x19, x1]
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
+ ldrsb wzr, [x20]
adrp x3, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x3, x3, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x3]
@@ -121,44 +114,56 @@ G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=000
adrp x5, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x5, x5, [LOW RELOC #0xD1FFAB1E]
ldr x5, [x5]
- ldrb w5, [x19, x5]
+ ldr x5, [x19, x5]
+ ; gcrRegs +[x5]
adrp x6, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x6, x6, [LOW RELOC #0xD1FFAB1E]
ldr x6, [x6]
- ldr x6, [x19, x6]
- ; gcrRegs +[x6]
+ ldrb w6, [x19, x6]
adrp x7, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x7, x7, [LOW RELOC #0xD1FFAB1E]
ldr x7, [x7]
- add x7, x19, x7
- ; byrRegs +[x7]
- ;; size=104 bbWeight=1 PerfScore 45.50
-G_M12801_IG06: ; bbWeight=1, nogc, extend
- ldp x8, x11, [x7]
- stp x8, x11, [fp, #0x18]
- ldr x8, [x7, #0x10]
- str x8, [fp, #0x28]
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M12801_IG07: ; bbWeight=1, extend
- adrp x7, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; byrRegs -[x7]
- add x7, x7, [LOW RELOC #0xD1FFAB1E]
- ldr x7, [x7]
ldr x7, [x19, x7]
; gcrRegs +[x7]
- str x7, [sp] // [V04 OutArgs]
- mov x7, xzr
- str x7, [sp, #0x08] // [V04 OutArgs+0x08]
- str x0, [sp, #0x10] // [V04 OutArgs+0x10]
- mov x0, x19
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ add x0, x19, x0
+ ; byrRegs +[x0]
+ ;; size=104 bbWeight=1 PerfScore 45.50
+G_M12801_IG06: ; bbWeight=1, nogc, extend
+ ldp x8, x11, [x0]
+ stp x8, x11, [fp, #0x18]
+ ldr x8, [x0, #0x10]
+ str x8, [fp, #0x28]
+ ;; size=16 bbWeight=1 PerfScore 9.00
+G_M12801_IG07: ; bbWeight=1, extend
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
+ ; byrRegs -[x0]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ ldr x0, [x19, x0]
+ ; gcrRegs +[x0]
+ str x0, [sp] // [V04 OutArgs]
+ mov x0, xzr
+ str x0, [sp, #0x08] // [V04 OutArgs+0x08]
+ str x1, [sp, #0x10] // [V04 OutArgs+0x10]
+ mov x1, x3
+ mov x3, x4
+ mov x4, x5
+ mov w5, w6
+ ; gcrRegs -[x5]
+ mov x6, x7
+ ; gcrRegs +[x6]
add x7, fp, #24 // [V25 tmp21]
; gcrRegs -[x7]
+ mov x0, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x8, [x11]
blr x8
; gcrRegs -[x1-x4 x6 x19-x20]
- ;; size=56 bbWeight=1 PerfScore 16.50
+ ;; size=76 bbWeight=1 PerfScore 19.00
G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp, #0x18]
@@ -166,7 +171,7 @@ G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 3.50
-; Total bytes of code 332, prolog size 28, PerfScore 107.50, instruction count 83, allocated bytes for code 332 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 352, prolog size 28, PerfScore 110.00, instruction count 88, allocated bytes for code 352 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
; ============================================================
Unwind Info:
@@ -177,7 +182,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)
+4 (+7.14%) : 88016.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable1[int]):this (FullOpts)@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
; V03 arg3 [V03,T04] ( 3, 3 ) ubyte -> x3 single-def
@@ -17,33 +17,30 @@
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Nullable`1[int]>
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x5 single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V10 tmp2 [V10,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V11 tmp3 [V11,T12] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp4 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V13 tmp5 [V13,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V14 tmp6 [V14,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V15 tmp7 [V15,T09] ( 2, 4 ) int -> x2 "argument with side effect"
-; V16 tmp8 [V16,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V17 tmp9 [V17,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x11 single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V10 tmp2 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp3 [V11,T07] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+; V12 tmp4 [V12,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 16
G_M26014_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M26014_IG02: ; bbWeight=1, gcrefRegs=0033 {x0 x1 x4 x5}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1 x4-x5]
- uxtb w2, w3
- mov x3, x4
- ; gcrRegs +[x3]
- mov x4, x5
+ mov x11, x5
+ ; gcrRegs +[x11]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26014_IG02: ; bbWeight=1, gcrefRegs=0813 {x0 x1 x4 x11}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0-x1 x4]
strb wzr, [fp, #0x18] // [V12 tmp4]
str wzr, [fp, #0x1C] // [V12 tmp4+0x04]
ldr x5, [fp, #0x18] // [V12 tmp4]
- ; gcrRegs -[x5]
+ uxtb w2, w3
+ mov x3, x4
+ ; gcrRegs +[x3]
+ mov x4, x11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ ; gcrRegs -[x11]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x6, [x11]
blr x6
@@ -54,7 +51,7 @@ G_M26014_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 14.50, instruction count 15, allocated bytes for code 60 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ 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)
libraries.pmi.linux.arm64.checked.mch
-12 (-20.00%) : 238105.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) short -> x0 single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
+; V03 tmp1 [V03,T01] ( 2, 2 ) short -> x0 single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M31891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M31891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strh w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.DateTimeOffset,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M31891_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-20.00%) : 238129.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[ulong]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[ulong],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M16550_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-20.00%) : 238118.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[long]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M61747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M61747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[long],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M61747_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+4 (+6.67%) : 178487.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
+4 (+6.67%) : 220164.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
+16 (+6.90%) : 62144.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 15, 15 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V19 tmp14 [V19,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V19 tmp14 [V19,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
@@ -37,30 +37,27 @@
;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._bits0 (fldOffset=0x8)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._capacity (fldOffset=0x10)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref "field V16.array (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T15] ( 3, 2 ) ref -> x22 single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T14] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V32 tmp27 [V32,T00] ( 12, 24 ) ref -> x19 single-def "argument with side effect"
-; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp30 [V35,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V36 tmp31 [V36,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V37 tmp32 [V37,T09] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V38 tmp33 [V38,T11] ( 2, 4 ) int -> x6 "argument with side effect"
-; V39 tmp34 [V39,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V40 tmp35 [V40,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V41 tmp36 [V41,T10] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
+; V29 tmp24 [V29,T12] ( 3, 2 ) ref -> x3 single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T11] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V32 tmp27 [V32,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V35 tmp30 [V35,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V36 tmp31 [V36,T09] ( 2, 4 ) int -> x0 "argument with side effect"
+; V37 tmp32 [V37,T10] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T07] ( 2, 4 ) ref -> x8 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V31 tmp26], [V31 tmp26+0x08]
- str xzr, [fp, #0x28] // [V31 tmp26+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V31 tmp26], [V31 tmp26+0x08]
+ str xzr, [fp, #0x20] // [V31 tmp26+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -75,12 +72,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x3, xzr
+ ; gcrRegs +[x3]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x3] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -92,73 +89,79 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldr x2, [x19, #0x28]
- ; gcrRegs +[x2]
- mov x3, x22
+ mov x3, x0
; gcrRegs +[x3]
- ldp x4, x5, [x19, #0x40]
- ; gcrRegs +[x4-x5]
- ldrb w6, [x19, #0x30]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldr x9, [x19, #0x50]
- ; gcrRegs +[x9]
- ;; size=40 bbWeight=1 PerfScore 26.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldr x4, [x19, #0x28]
+ ; gcrRegs +[x4]
+ ldp x5, x6, [x19, #0x40]
+ ; gcrRegs +[x5-x6]
+ ldrb w7, [x19, #0x30]
+ ldrb w0, [x19, #0x31]
+ ldrb w1, [x19, #0x32]
+ ldr x8, [x19, #0x50]
+ ; gcrRegs +[x8]
+ ;; size=32 bbWeight=1 PerfScore 25.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x10, x11, [x19, #0x58]
- stp x10, x11, [fp, #0x18]
- ldr x10, [x19, #0x68]
- str x10, [fp, #0x28]
+ ldp x9, x10, [x19, #0x58]
+ stp x9, x10, [fp, #0x10]
+ ldr x9, [x19, #0x68]
+ str x9, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w10, [x19, #0x33]
- str w10, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x10, [x19, #0x70]
- ; gcrRegs +[x10]
- str x10, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w9, [x19, #0x33]
+ str w9, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x9, [x19, #0x70]
+ ; gcrRegs +[x9]
+ str x9, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov x2, x4
+ mov x4, x5
+ mov x5, x6
+ mov w6, w7
+ ; gcrRegs -[x6]
+ mov w7, w0
+ str w1, [sp] // [V05 OutArgs]
+ str x8, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x0, fp, #16 // [V31 tmp26]
+ str x0, [sp, #0x10] // [V05 OutArgs+0x10]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str x9, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V31 tmp26]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
movz x8, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x8]
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x9-x10 x19-x22]
- ;; size=60 bbWeight=1 PerfScore 18.50
+ ; gcrRegs -[x1-x5 x9 x19-x21]
+ ;; size=84 bbWeight=1 PerfScore 21.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 232, prolog size 28, PerfScore 74.25, instruction count 58, allocated bytes for code 232 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 248, prolog size 28, PerfScore 77.25, instruction count 62, allocated bytes for code 248 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -166,9 +169,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
libraries_tests.run.linux.arm64.Release.mch
-40 (-27.03%) : 1503.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
@@ -5,72 +5,56 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.String>
-; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x48] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.String>
+; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M26555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ str xzr, [fp, #0x28] // [V04 loc0]
+ str xzr, [fp, #0x30] // [V04 loc0+0x08]
+ str xzr, [fp, #0x38] // [V04 loc0+0x10]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ ;; size=36 bbWeight=1 PerfScore 8.50
G_M26555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x48]
- str wzr, [fp, #0x58]
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V07 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x20] // [V08 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x18] // [V09 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x10] // [V10 tmp5]
- ldp x0, x1, [fp, #0x48]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x30]
- ldr w0, [fp, #0x58]
- str w0, [fp, #0x40]
- ldr x0, [fp, #0x28] // [V07 tmp2]
- ; gcrRegs +[x0]
- ldr x1, [fp, #0x20] // [V08 tmp3]
+ stp xzr, xzr, [fp, #0x28]
+ str wzr, [fp, #0x38]
+ ldp x1, x2, [fp, #0x28]
+ stp x1, x2, [fp, #0x10]
+ ldr w1, [fp, #0x38]
+ str w1, [fp, #0x20]
+ add x4, fp, #16 // [V06 tmp1]
+ ldr x1, [fp, #0x50] // [V01 arg1]
; gcrRegs +[x1]
- ldr x2, [fp, #0x18] // [V09 tmp4]
+ ldr x2, [fp, #0x48] // [V02 arg2]
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V10 tmp5]
+ ldr x3, [fp, #0x40] // [V03 arg3]
; gcrRegs +[x3]
- add x4, fp, #48 // [V06 tmp1]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x3]
- ;; size=96 bbWeight=1 PerfScore 35.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M26555_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 46.50, instruction count 37, allocated bytes for code 148 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
+; Total bytes of code 108, prolog size 20, PerfScore 33.50, instruction count 27, allocated bytes for code 108 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
; ============================================================
Unwind Info:
@@ -81,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-40 (-27.03%) : 8187.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
@@ -5,72 +5,56 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.String>
-; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x48] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.String>
+; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M26555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ str xzr, [fp, #0x28] // [V04 loc0]
+ str xzr, [fp, #0x30] // [V04 loc0+0x08]
+ str xzr, [fp, #0x38] // [V04 loc0+0x10]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ ;; size=36 bbWeight=1 PerfScore 8.50
G_M26555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x48]
- str wzr, [fp, #0x58]
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V07 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x20] // [V08 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x18] // [V09 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x10] // [V10 tmp5]
- ldp x0, x1, [fp, #0x48]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x30]
- ldr w0, [fp, #0x58]
- str w0, [fp, #0x40]
- ldr x0, [fp, #0x28] // [V07 tmp2]
- ; gcrRegs +[x0]
- ldr x1, [fp, #0x20] // [V08 tmp3]
+ stp xzr, xzr, [fp, #0x28]
+ str wzr, [fp, #0x38]
+ ldp x1, x2, [fp, #0x28]
+ stp x1, x2, [fp, #0x10]
+ ldr w1, [fp, #0x38]
+ str w1, [fp, #0x20]
+ add x4, fp, #16 // [V06 tmp1]
+ ldr x1, [fp, #0x50] // [V01 arg1]
; gcrRegs +[x1]
- ldr x2, [fp, #0x18] // [V09 tmp4]
+ ldr x2, [fp, #0x48] // [V02 arg2]
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V10 tmp5]
+ ldr x3, [fp, #0x40] // [V03 arg3]
; gcrRegs +[x3]
- add x4, fp, #48 // [V06 tmp1]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x3]
- ;; size=96 bbWeight=1 PerfScore 35.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M26555_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 46.50, instruction count 37, allocated bytes for code 148 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
+; Total bytes of code 108, prolog size 20, PerfScore 33.50, instruction count 27, allocated bytes for code 108 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -81,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-44 (-26.83%) : 42022.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
+36 (+6.43%) : 349954.dasm - System.Linq.Parallel.IndexedSelectQueryOperator
2[int,System.Collections.Generic.KeyValuePair2[int,System.Collections.Generic.KeyValuePair2[int,int]]]:Open(System.Linq.Parallel.QuerySettings,ubyte):System.Linq.Parallel.QueryResults1[System.Collections.Generic.KeyValuePair2[int,System.Collections.Generic.KeyValuePair2[int,int]]]:this (Tier1)@@ -9,38 +9,34 @@
;
; V00 this [V00,T01] ( 6, 3.80) ref -> x20 this class-hnd single-def <System.Linq.Parallel.IndexedSelectQueryOperator`2[int,System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
; V01 arg1 [V01,T00] ( 7, 6 ) byref -> x19 single-def
-; V02 arg2 [V02,T03] ( 7, 3 ) ubyte -> x21 single-def
+; V02 arg2 [V02,T04] ( 7, 3 ) ubyte -> x21 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Linq.Parallel.QueryResults`1[int]>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T04] ( 4, 5 ) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Linq.Parallel.QueryOperator`1[int]>
-; V06 tmp2 [V06,T06] ( 6, 2.50) ref -> x22 "guarded devirt return temp"
+; V05 tmp1 [V05,T03] ( 5, 5.40) ref -> x0 class-hnd single-def "spilling ret_expr" <System.Linq.Parallel.QueryOperator`1[int]>
+; V06 tmp2 [V06,T05] ( 7, 3 ) ref -> x22 "guarded devirt return temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Parallel.OrderingQueryOperator`1[int]>
-; V08 tmp4 [V08,T15] ( 3, 0.60) ref -> x22 "guarded devirt return temp"
-; V09 tmp5 [V09,T08] ( 4, 1.80) ref -> x0 single-def "guarded devirt arg temp"
+; V08 tmp4 [V08,T11] ( 3, 0.60) ref -> x22 "guarded devirt return temp"
+; V09 tmp5 [V09,T07] ( 5, 2.02) ref -> x0 single-def "guarded devirt arg temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Parallel.OrderingQueryOperator`1[int]>
-; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> x24 class-hnd "Inline return value spill temp" <System.Linq.Parallel.QueryResults`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
-; V12 tmp8 [V12,T07] ( 6, 2.40) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.UnaryQueryOperator`2+UnaryQueryOperatorResults[int,System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
-; V13 tmp9 [V13,T02] ( 9, 5.40) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.IndexedSelectQueryOperator`2+IndexedSelectQueryOperatorResults[int,System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
+; V11 tmp7 [V11,T09] ( 3, 1.50) ref -> x23 class-hnd "Inline return value spill temp" <System.Linq.Parallel.QueryResults`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
+; V12 tmp8 [V12,T06] ( 6, 2.40) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.UnaryQueryOperator`2+UnaryQueryOperatorResults[int,System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
+; V13 tmp9 [V13,T02] ( 9, 5.40) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Parallel.IndexedSelectQueryOperator`2+IndexedSelectQueryOperatorResults[int,System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]>
; V14 tmp10 [V14,T10] ( 2, 1 ) int -> x0 "guarded devirt return temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Parallel.ListQueryResults`1[int]>
-; V16 tmp12 [V16,T16] ( 3, 0.60) int -> x0 "guarded devirt return temp"
-; V17 tmp13 [V17,T11] ( 3, 1.20) ref -> x0 single-def "guarded devirt arg temp"
+; V16 tmp12 [V16,T12] ( 3, 0.60) int -> x0 "guarded devirt return temp"
+; V17 tmp13 [V17,T08] ( 5, 1.80) ref -> x0 single-def "guarded devirt arg temp"
;* V18 tmp14 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Linq.Parallel.ListQueryResults`1[int]>
-; V19 tmp15 [V19 ] ( 6, 2 ) struct (48) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Linq.Parallel.QuerySettings>
-; V20 tmp16 [V20,T12] ( 3, 1.20) ref -> x0 single-def "argument with side effect"
-; V21 tmp17 [V21,T14] ( 3, 0.67) ref -> x0 single-def "argument with side effect"
-; V22 tmp18 [V22,T13] ( 2, 0.76) ref -> x0 single-def "argument with side effect"
-; V23 cse0 [V23,T05] ( 5, 2.80) long -> x23 "CSE - aggressive"
+; V19 tmp15 [V19 ] ( 6, 2 ) struct (48) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Linq.Parallel.QuerySettings>
;
-; Lcl frame size = 48
+; Lcl frame size = 56
G_M27812_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
+ stp x19, x20, [sp, #0x48]
+ stp x21, x22, [sp, #0x58]
+ str x23, [sp, #0x68]
mov fp, sp
- add x9, fp, #16
+ add x9, fp, #24
movi v16.16b, #0
stp q16, q16, [x9]
stp xzr, xzr, [x9, #0x20]
@@ -70,13 +66,15 @@ G_M27812_IG03: ; bbWeight=0.30, gcrefRegs=100001 {x0 x20}, byrefRegs=8000
bne G_M27812_IG06
;; size=28 bbWeight=0.30 PerfScore 2.70
G_M27812_IG04: ; bbWeight=0.19, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, nogc
- ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x10]
- ldr q16, [x19, #0x20]
- str q16, [fp, #0x30]
- ;; size=16 bbWeight=0.19 PerfScore 1.51
+ ldp x1, x2, [x19]
+ stp x1, x2, [fp, #0x18]
+ ldp x1, x2, [x19, #0x10]
+ stp x1, x2, [fp, #0x28]
+ ldp x1, x2, [x19, #0x20]
+ stp x1, x2, [fp, #0x38]
+ ;; size=24 bbWeight=0.19 PerfScore 2.83
G_M27812_IG05: ; bbWeight=0.19, extend
- add x1, fp, #16 // [V19 tmp15]
+ add x1, fp, #24 // [V19 tmp15]
uxtb w2, w21
movz x3, #0xD1FFAB1E // code for System.Linq.Parallel.OrderingQueryOperator`1[int]:Open(System.Linq.Parallel.QuerySettings,ubyte):System.Linq.Parallel.QueryResults`1[int]:this
movk x3, #0xD1FFAB1E LSL #16
@@ -89,13 +87,15 @@ G_M27812_IG05: ; bbWeight=0.19, extend
;; size=36 bbWeight=0.19 PerfScore 1.51
G_M27812_IG06: ; bbWeight=0.11, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, nogc
; gcrRegs -[x22]
- ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x10]
- ldr q16, [x19, #0x20]
- str q16, [fp, #0x30]
- ;; size=16 bbWeight=0.11 PerfScore 0.89
+ ldp x1, x2, [x19]
+ stp x1, x2, [fp, #0x18]
+ ldp x1, x2, [x19, #0x10]
+ stp x1, x2, [fp, #0x28]
+ ldp x1, x2, [x19, #0x20]
+ stp x1, x2, [fp, #0x38]
+ ;; size=24 bbWeight=0.11 PerfScore 1.67
G_M27812_IG07: ; bbWeight=0.11, extend
- add x1, fp, #16 // [V19 tmp15]
+ add x1, fp, #24 // [V19 tmp15]
uxtb w2, w21
ldr x3, [x0]
ldr x3, [x3, #0x50]
@@ -110,13 +110,15 @@ G_M27812_IG08: ; bbWeight=0.30, gcrefRegs=500000 {x20 x22}, byrefRegs=800
;; size=4 bbWeight=0.30 PerfScore 0.30
G_M27812_IG09: ; bbWeight=0.20, gcrefRegs=100001 {x0 x20}, byrefRegs=80000 {x19}, byref, nogc
; gcrRegs -[x22] +[x0]
- ldp q16, q17, [x19]
- stp q16, q17, [fp, #0x10]
- ldr q16, [x19, #0x20]
- str q16, [fp, #0x30]
- ;; size=16 bbWeight=0.20 PerfScore 1.60
+ ldp x1, x2, [x19]
+ stp x1, x2, [fp, #0x18]
+ ldp x1, x2, [x19, #0x10]
+ stp x1, x2, [fp, #0x28]
+ ldp x1, x2, [x19, #0x20]
+ stp x1, x2, [fp, #0x38]
+ ;; size=24 bbWeight=0.20 PerfScore 3.00
G_M27812_IG10: ; bbWeight=0.20, extend
- add x1, fp, #16 // [V19 tmp15]
+ add x1, fp, #24 // [V19 tmp15]
uxtb w2, w21
ldr x3, [x0]
ldr x3, [x3, #0x50]
@@ -127,45 +129,46 @@ G_M27812_IG10: ; bbWeight=0.20, extend
;; size=28 bbWeight=0.20 PerfScore 2.30
G_M27812_IG11: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=80000 {x19}, byref, isz
; gcrRegs -[x0]
- ldr x23, [x22]
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- cmp x23, x0
+ ldr x0, [x22]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x0, x1
beq G_M27812_IG13
;; size=24 bbWeight=1 PerfScore 6.00
G_M27812_IG12: ; bbWeight=0.50, gcrefRegs=500000 {x20 x22}, byrefRegs=80000 {x19}, byref, isz
mov x0, x22
; gcrRegs +[x0]
- ldr x1, [x23, #0x48]
+ ldr x1, [x22]
+ ldr x1, [x1, #0x48]
ldr x1, [x1, #0x28]
blr x1
; gcrRegs -[x0]
cbz w0, G_M27812_IG15
- ;; size=20 bbWeight=0.50 PerfScore 4.25
+ ;; size=24 bbWeight=0.50 PerfScore 5.75
G_M27812_IG13: ; bbWeight=0.30, gcrefRegs=500000 {x20 x22}, byrefRegs=80000 {x19}, byref, isz
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x24, x0
- ; gcrRegs +[x24]
- add x14, x24, #8
+ mov x23, x0
+ ; gcrRegs +[x23]
+ add x14, x23, #8
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x22]
; byrRegs -[x14]
- add x14, x24, #16
+ add x14, x23, #16
; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- add x14, x24, #32
+ add x14, x23, #32
; byrRegs +[x14]
mov x13, x19
; byrRegs +[x13]
@@ -176,19 +179,20 @@ G_M27812_IG13: ; bbWeight=0.30, gcrefRegs=500000 {x20 x22}, byrefRegs=800
stp x12, x15, [x14], #0x10
ldp x12, x15, [x13], #0x10
stp x12, x15, [x14], #0x10
- strb w21, [x24, #0x18]
- add x14, x24, #80
+ strb w21, [x23, #0x18]
+ add x14, x23, #80
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x13-x14]
- ldr x0, [x24, #0x08]
+ ldr x0, [x23, #0x08]
; gcrRegs +[x0]
- movz x11, #0xD1FFAB1E
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #0xD1FFAB1E LSL #32
- cmp x23, x11
+ ldr x11, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x11, x1
bne G_M27812_IG18
ldr x0, [x0, #0x08]
movz x11, #0xD1FFAB1E // code for <unknown method>
@@ -197,36 +201,36 @@ G_M27812_IG13: ; bbWeight=0.30, gcrefRegs=500000 {x20 x22}, byrefRegs=800
ldr x1, [x11]
blr x1
; gcrRegs -[x0]
- ;; size=140 bbWeight=0.30 PerfScore 11.25
-G_M27812_IG14: ; bbWeight=0.30, gcrefRegs=1000000 {x24}, byrefRegs=0000 {}, byref
- str w0, [x24, #0x58]
+ ;; size=144 bbWeight=0.30 PerfScore 12.15
+G_M27812_IG14: ; bbWeight=0.30, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
+ str w0, [x23, #0x58]
b G_M27812_IG16
;; size=8 bbWeight=0.30 PerfScore 0.60
G_M27812_IG15: ; bbWeight=0.20, gcrefRegs=500000 {x20 x22}, byrefRegs=80000 {x19}, byref
- ; gcrRegs -[x24] +[x20 x22]
+ ; gcrRegs -[x23] +[x20 x22]
; byrRegs +[x19]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
- mov x24, x0
- ; gcrRegs +[x24]
- add x14, x24, #8
+ mov x23, x0
+ ; gcrRegs +[x23]
+ add x14, x23, #8
; byrRegs +[x14]
mov x15, x22
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x22]
; byrRegs -[x14]
- add x14, x24, #16
+ add x14, x23, #16
; byrRegs +[x14]
mov x15, x20
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x20]
; byrRegs -[x14]
- add x14, x24, #32
...
+16 (+6.67%) : 685807.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -7,9 +7,9 @@
; 1 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.48) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.48) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V20 tmp15 [V20,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -37,31 +37,28 @@
;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "field V15._bits0 (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._capacity (fldOffset=0x10)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T16] ( 3, 1.50) ref -> x22 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T15] ( 3, 2.48) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp28 [V33,T00] ( 13, 26 ) ref -> x19 single-def "argument with side effect"
-; V34 tmp29 [V34,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V35 tmp30 [V35,T11] ( 2, 4 ) int -> x2 "argument with side effect"
-; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V37 tmp32 [V37,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V38 tmp33 [V38,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V39 tmp34 [V39,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V40 tmp35 [V40,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V41 tmp36 [V41,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V42 tmp37 [V42,T14] ( 2, 4 ) int -> x9 "argument with side effect"
-; V43 tmp38 [V43,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V30 tmp25 [V30,T13] ( 3, 1.50) ref -> x4 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T12] ( 3, 2.48) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V33 tmp28 [V33,T08] ( 2, 4 ) int -> x3 "argument with side effect"
+; V34 tmp29 [V34,T04] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V35 tmp30 [V35,T05] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V37 tmp32 [V37,T09] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T10] ( 2, 4 ) int -> x0 "argument with side effect"
+; V39 tmp34 [V39,T11] ( 2, 4 ) int -> x8 "argument with side effect"
+; V40 tmp35 [V40,T07] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 88
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub sp, sp, #128
stp fp, lr, [sp, #0x38]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x68]
+ str x21, [sp, #0x78]
add fp, sp, #56
- stp xzr, xzr, [fp, #0x10] // [V32 tmp27], [V32 tmp27+0x08]
- str xzr, [fp, #0x20] // [V32 tmp27+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V32 tmp27], [V32 tmp27+0x08]
+ str xzr, [fp, #0x28] // [V32 tmp27+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -86,81 +83,88 @@ G_M26558_IG03: ; bbWeight=0.48, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.48 PerfScore 3.84
-G_M26558_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldrb w2, [x19, #0x30]
- ldr x3, [x19, #0x28]
- ; gcrRegs +[x3]
- mov x4, x22
+ mov x4, x0
; gcrRegs +[x4]
- ldp x5, x6, [x19, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldrb w9, [x19, #0x33]
- ldr x10, [x19, #0x50]
- ; gcrRegs +[x10]
- ;; size=44 bbWeight=1 PerfScore 29.00
+ ;; size=40 bbWeight=0.48 PerfScore 3.84
+G_M26558_IG04: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldrb w3, [x19, #0x30]
+ ldr x5, [x19, #0x28]
+ ; gcrRegs +[x5]
+ ldp x6, x7, [x19, #0x40]
+ ; gcrRegs +[x6-x7]
+ ldrb w1, [x19, #0x31]
+ ldrb w0, [x19, #0x32]
+ ldrb w8, [x19, #0x33]
+ ldr x9, [x19, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=36 bbWeight=1 PerfScore 28.00
G_M26558_IG05: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x19, #0x58]
- stp x11, x13, [fp, #0x10]
- ldr x11, [x19, #0x68]
- str x11, [fp, #0x20]
+ ldp x10, x11, [x19, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x19, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG06: ; bbWeight=1, extend
- ldrb w11, [x19, #0x34]
- str w11, [sp, #0x20] // [V05 OutArgs+0x20]
- ldr x11, [x19, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x28] // [V05 OutArgs+0x28]
- str x0, [sp, #0x30] // [V05 OutArgs+0x30]
+ ldrb w10, [x19, #0x34]
+ str w10, [sp, #0x20] // [V05 OutArgs+0x20]
+ ldr x10, [x19, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x28] // [V05 OutArgs+0x28]
+ str x2, [sp, #0x30] // [V05 OutArgs+0x30]
+ mov w2, w3
+ ; gcrRegs -[x2]
+ mov x3, x5
+ ; gcrRegs +[x3]
+ mov x5, x6
+ mov x6, x7
+ mov w7, w1
+ ; gcrRegs -[x7]
+ str w0, [sp] // [V05 OutArgs]
+ str w8, [sp, #0x08] // [V05 OutArgs+0x08]
+ str x9, [sp, #0x10] // [V05 OutArgs+0x10]
+ add x1, fp, #24 // [V32 tmp27]
+ str x1, [sp, #0x18] // [V05 OutArgs+0x18]
+ mov x1, x21
+ ; gcrRegs +[x1]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str w9, [sp, #0x08] // [V05 OutArgs+0x08]
- str x10, [sp, #0x10] // [V05 OutArgs+0x10]
- add x8, fp, #16 // [V32 tmp27]
- str x8, [sp, #0x18] // [V05 OutArgs+0x18]
+ ; gcrRegs +[x0]
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3-x6 x10-x11 x19-x22]
- ;; size=64 bbWeight=1 PerfScore 19.50
+ ; gcrRegs -[x1 x3-x6 x9-x10 x19-x21]
+ ;; size=88 bbWeight=1 PerfScore 22.50
G_M26558_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp, #0x38]
add sp, sp, #128
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M26558_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x21]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x4, xzr
+ ; gcrRegs +[x4]
b G_M26558_IG04
;; size=8 bbWeight=0.02 PerfScore 0.03
-; Total bytes of code 240, prolog size 28, PerfScore 77.37, instruction count 60, allocated bytes for code 240 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
+; Total bytes of code 256, prolog size 28, PerfScore 80.37, instruction count 64, allocated bytes for code 256 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
; ============================================================
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
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,9 +172,12 @@ Unwind Info:
---- Unwind codes ----
E2 07 add_fp 7 (0x07); add fp, sp, #56
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
47 save_fplr #7 (0x07); stp fp, lr, [sp, #56]
08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
E4 end
+ E4 end
+ E4 end
+ E4 end
+4 (+6.67%) : 690244.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-32 (-27.59%) : 114076.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:
1[ubyte],System.Span1[ubyte],int,byref,byref):ubyte (FullOpts)@@ -10,58 +10,45 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T04] ( 3, 3 ) int -> x4 single-def
-; V03 arg3 [V03,T02] ( 3, 3 ) byref -> x7 single-def
-; V04 arg4 [V04,T03] ( 3, 3 ) byref -> x8 single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) int -> x4 single-def
+; V03 arg3 [V03,T00] ( 3, 3 ) byref -> x7 single-def
+; V04 arg4 [V04,T01] ( 3, 3 ) byref -> x8 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
+; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref
-; V08 tmp3 [V08,T11] ( 3, 3 ) byref -> x5 single-def
+; V08 tmp3 [V08,T08] ( 3, 3 ) byref -> x5 single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T05] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T07] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T08] ( 2, 2 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V15 tmp10 [V15 ] ( 3, 6 ) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed "field V06._controlFlags (fldOffset=0x0)" P-DEP
-; V16 tmp11 [V16 ] ( 3, 6 ) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V06.<TagValue>k__BackingField (fldOffset=0x4)" P-DEP
-; V17 tmp12 [V17,T09] ( 2, 4 ) struct ( 8) [fp+0x30] do-not-enreg[S] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V18 tmp13 [V18,T00] ( 4, 8 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp14 [V19,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V20 tmp15 [V20,T10] ( 2, 4 ) int -> x4 "argument with side effect"
+; V11 tmp6 [V11,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp7 [V12,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T06] ( 2, 2 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp10 [V15 ] ( 3, 6 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._controlFlags (fldOffset=0x0)" P-DEP
+; V16 tmp11 [V16 ] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V06.<TagValue>k__BackingField (fldOffset=0x4)" P-DEP
+; V17 tmp12 [V17,T07] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M25606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x20] // [V18 tmp13]
- str xzr, [fp, #0x10] // [V19 tmp14]
mov x7, x5
; byrRegs +[x7]
mov x8, x6
; byrRegs +[x8]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M25606_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0185 {x0 x2 x7 x8}, byref
; byrRegs +[x0 x2]
- str xzr, [fp, #0x38] // [V06 tmp1]
- add x5, fp, #56 // [V06 tmp1]
+ str xzr, [fp, #0x18] // [V06 tmp1]
+ add x5, fp, #24 // [V06 tmp1]
; byrRegs +[x5]
strb wzr, [x5]
mov w6, #12
str w6, [x5, #0x04]
- str x0, [fp, #0x20] // [V18 tmp13]
- str w1, [fp, #0x28] // [V18 tmp13+0x08]
- str x2, [fp, #0x10] // [V19 tmp14]
- str w3, [fp, #0x18] // [V19 tmp14+0x08]
- ldr x0, [fp, #0x38] // [V06 tmp1]
- ; byrRegs -[x0]
- str x0, [fp, #0x30] // [V17 tmp12]
- ldp x0, x1, [fp, #0x20] // [V18 tmp13], [V18 tmp13+0x08]
- ; byrRegs +[x0]
- ldp x2, x3, [fp, #0x10] // [V19 tmp14], [V19 tmp14+0x08]
- ldr x5, [fp, #0x30] // [V17 tmp12]
+ ldr x5, [fp, #0x18] // [V06 tmp1]
; byrRegs -[x5]
+ str x5, [fp, #0x10] // [V17 tmp12]
+ ldr x5, [fp, #0x10] // [V17 tmp12]
mov x6, x7
; byrRegs +[x6]
mov x7, x8
@@ -72,13 +59,13 @@ G_M25606_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0185 {x0 x2 x7
ldr x8, [x8]
blr x8
; byrRegs -[x0 x2 x6-x7]
- ;; size=84 bbWeight=1 PerfScore 25.50
+ ;; size=60 bbWeight=1 PerfScore 15.50
G_M25606_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 16, PerfScore 32.00, instruction count 29, allocated bytes for code 116 (MethodHash=7f649bf9) for method System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 20.00, instruction count 21, allocated bytes for code 84 (MethodHash=7f649bf9) for method System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ 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)
@@ -97,7 +84,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-16.67%) : 257653.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests+<>cDisplayClass10:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,42 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> x1 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> x0 "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> x0 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M52572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V13 tmp11], [V13 tmp11+0x08]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M52572_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
- mov x1, x0
- ; gcrRegs +[x1]
- ldrsb wzr, [x1]
- str x1, [fp, #0x18] // [V13 tmp11]
- strb wzr, [fp, #0x28] // [V12 tmp10]
- strb wzr, [fp, #0x29] // [V12 tmp10+0x01]
- ldr x1, [fp, #0x20] // [V13 tmp11+0x08]
- ; gcrRegs -[x1]
- ldrh w2, [fp, #0x28] // [V12 tmp10]
+ ldrsb wzr, [x0]
+ strb wzr, [fp, #0x18] // [V12 tmp10]
+ strb wzr, [fp, #0x19] // [V12 tmp10+0x01]
+ ldrh w2, [fp, #0x18] // [V12 tmp10]
+ mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonArray:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonArray
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=52 bbWeight=1 PerfScore 19.00
+ ;; size=44 bbWeight=1 PerfScore 16.00
G_M52572_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 72, prolog size 12, PerfScore 23.50, instruction count 18, allocated bytes for code 72 (MethodHash=419932a3) for method System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 19.50, instruction count 15, allocated bytes for code 60 (MethodHash=419932a3) for method System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ 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)
@@ -73,7 +66,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-16.67%) : 260297.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>cDisplayClass160:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,42 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> x1 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> x0 "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> x0 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M18200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V13 tmp11], [V13 tmp11+0x08]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M18200_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
- mov x1, x0
- ; gcrRegs +[x1]
- ldrsb wzr, [x1]
- str x1, [fp, #0x18] // [V13 tmp11]
- strb wzr, [fp, #0x28] // [V12 tmp10]
- strb wzr, [fp, #0x29] // [V12 tmp10+0x01]
- ldr x1, [fp, #0x20] // [V13 tmp11+0x08]
- ; gcrRegs -[x1]
- ldrh w2, [fp, #0x28] // [V12 tmp10]
+ ldrsb wzr, [x0]
+ strb wzr, [fp, #0x18] // [V12 tmp10]
+ strb wzr, [fp, #0x19] // [V12 tmp10+0x01]
+ ldrh w2, [fp, #0x18] // [V12 tmp10]
+ mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=52 bbWeight=1 PerfScore 19.00
+ ;; size=44 bbWeight=1 PerfScore 16.00
G_M18200_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 72, prolog size 12, PerfScore 23.50, instruction count 18, allocated bytes for code 72 (MethodHash=e2eeb8e7) for method System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 19.50, instruction count 15, allocated bytes for code 60 (MethodHash=e2eeb8e7) for method System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ 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)
@@ -73,7 +66,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+8 (+7.69%) : 261729.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
@@ -8,36 +8,35 @@
; 1 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Text.Json.Serialization.Tests.JsonDocumentClass>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Text.Json.Serialization.Tests.JsonDocumentClass>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Json.JsonDocumentOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V06 tmp4 [V06 ] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref
-;* V08 tmp6 [V08,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp9 [V11,T03] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V11 tmp9 [V11,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-;* V15 tmp13 [V15,T07] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
-;* V16 tmp14 [V16,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
-;* V17 tmp15 [V17,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V15 tmp13 [V15,T08] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
+;* V17 tmp15 [V17,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref "field V04._object (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
-;* V24 tmp22 [V24,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25,T10] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-;* V26 tmp24 [V26,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0xc)" P-INDEP
-; V27 tmp25 [V27,T00] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V28 tmp26 [V28,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
-;* V29 cse0 [V29,T04] ( 0, 0 ) ref -> zero-ref "CSE - aggressive"
+; V24 tmp22 [V24,T02] ( 3, 5 ) ref -> [fp+0x18] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP
+; V25 tmp23 [V25,T03] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[] single-def "field V06._index (fldOffset=0x8)" P-DEP
+; V26 tmp24 [V26,T04] ( 3, 5 ) int -> [fp+0x24] do-not-enreg[] single-def "field V06._length (fldOffset=0xc)" P-DEP
+; V27 tmp25 [V27,T00] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
+; V28 cse0 [V28,T06] ( 2, 2 ) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -45,22 +44,24 @@ G_M62249_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x30]!
str x19, [sp, #0x28]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V28 tmp26], [V28 tmp26+0x08]
+ stp xzr, xzr, [fp, #0x18] // [V06 tmp4], [V06 tmp4+0x08]
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M62249_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- str x0, [fp, #0x10] // [V28 tmp26]
- mov w0, #129
- stp w0, wzr, [fp, #0x1C] // [V28 tmp26+0x0c], [V27 tmp25]
- strb wzr, [fp, #0x24] // [V27 tmp25+0x04]
- strb wzr, [fp, #0x25] // [V27 tmp25+0x05]
- ldp x0, x1, [fp, #0x10] // [V28 tmp26], [V28 tmp26+0x08]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ str x2, [fp, #0x18] // [V24 tmp22]
+ str wzr, [fp, #0x20] // [V25 tmp23]
+ mov w2, #129
+ str w2, [fp, #0x24] // [V26 tmp24]
+ str wzr, [fp, #0x10] // [V27 tmp25]
+ strb wzr, [fp, #0x14] // [V27 tmp25+0x04]
+ strb wzr, [fp, #0x15] // [V27 tmp25+0x05]
+ ldp x2, x0, [fp, #0x10] // [V27 tmp25], [V06 tmp4]
; gcrRegs +[x0]
- ldr x2, [fp, #0x20] // [V27 tmp25]
+ ldr x1, [fp, #0x20] // [V06 tmp4+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -73,14 +74,14 @@ G_M62249_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x19]
; byrRegs -[x14]
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=80 bbWeight=1 PerfScore 20.50
G_M62249_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 104, prolog size 16, PerfScore 26.50, instruction count 26, allocated bytes for code 104 (MethodHash=de8b0cd6) for method System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 28.50, instruction count 28, allocated bytes for code 112 (MethodHash=de8b0cd6) for method System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+10.00%) : 259568.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:
@@ -14,59 +14,60 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V06 tmp4 [V06 ] ( 5, 10 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-;* V13 tmp11 [V13,T03] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
-;* V14 tmp12 [V14,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
-;* V15 tmp13 [V15,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V13 tmp11 [V13,T04] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
+;* V15 tmp13 [V15,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "field V04._object (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
-;* V22 tmp20 [V22,T02] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
-;* V23 tmp21 [V23,T06] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-;* V24 tmp22 [V24,T07] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0xc)" P-INDEP
-; V25 tmp23 [V25,T00] ( 4, 8 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V26 tmp24 [V26,T01] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
+; V22 tmp20 [V22,T01] ( 3, 5 ) ref -> [fp+0x20] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP
+; V23 tmp21 [V23,T02] ( 3, 5 ) int -> [fp+0x28] do-not-enreg[] single-def "field V06._index (fldOffset=0x8)" P-DEP
+; V24 tmp22 [V24,T03] ( 3, 5 ) int -> [fp+0x2C] do-not-enreg[] single-def "field V06._length (fldOffset=0xc)" P-DEP
+; V25 tmp23 [V25,T00] ( 4, 8 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
;
; Lcl frame size = 32
G_M36232_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V26 tmp24], [V26 tmp24+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V06 tmp4], [V06 tmp4+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M36232_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- str x0, [fp, #0x18] // [V26 tmp24]
- mov w0, #21
- stp w0, wzr, [fp, #0x24] // [V26 tmp24+0x0c], [V25 tmp23]
- strb wzr, [fp, #0x2C] // [V25 tmp23+0x04]
- strb wzr, [fp, #0x2D] // [V25 tmp23+0x05]
- ldp x0, x1, [fp, #0x18] // [V26 tmp24], [V26 tmp24+0x08]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ str x2, [fp, #0x20] // [V22 tmp20]
+ str wzr, [fp, #0x28] // [V23 tmp21]
+ mov w2, #21
+ str w2, [fp, #0x2C] // [V24 tmp22]
+ str wzr, [fp, #0x18] // [V25 tmp23]
+ strb wzr, [fp, #0x1C] // [V25 tmp23+0x04]
+ strb wzr, [fp, #0x1D] // [V25 tmp23+0x05]
+ ldp x2, x0, [fp, #0x18] // [V25 tmp23], [V06 tmp4]
; gcrRegs +[x0]
- ldr x2, [fp, #0x28] // [V25 tmp23]
+ ldr x1, [fp, #0x28] // [V06 tmp4+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=60 bbWeight=1 PerfScore 16.50
+ ;; size=68 bbWeight=1 PerfScore 18.50
G_M36232_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 12, PerfScore 21.00, instruction count 20, allocated bytes for code 80 (MethodHash=6ea77277) for method System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
+; Total bytes of code 88, prolog size 12, PerfScore 23.00, instruction count 22, allocated bytes for code 88 (MethodHash=6ea77277) for method System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -77,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+12.35%) : 73218.dasm - System.Collections.Tests.IGenericSharedAPI_Tests
1[System.ValueTuple2[int,int]]:AddToCollection(System.Collections.Generic.IEnumerable1[System.ValueTuple2[int,int]],int):this (FullOpts)@@ -7,25 +7,22 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 10, 57 ) ref -> x20 this class-hnd single-def <System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[int,int]]>
-; V01 arg1 [V01,T02] ( 6, 43 ) ref -> x19 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[int,int]]>
-; V02 arg2 [V02,T14] ( 4, 7 ) int -> x21 single-def
-; V03 loc0 [V03,T10] ( 5, 25 ) int -> x22
-; V04 loc1 [V04,T05] ( 3, 65 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V05 loc2 [V05 ] ( 5, 80 ) struct ( 8) [fp+0x18] do-not-enreg[SB] must-init <System.ValueTuple`2[int,int]>
+; V00 this [V00,T05] ( 10, 65 ) ref -> x19 this class-hnd single-def <System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[int,int]]>
+; V01 arg1 [V01,T09] ( 7, 31 ) ref -> x20 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[int,int]]>
+; V02 arg2 [V02,T13] ( 4, 7 ) int -> x21 single-def
+; V03 loc0 [V03,T07] ( 5, 41 ) int -> x22
+; V04 loc1 [V04,T06] ( 4, 53 ) ref -> x25 class-hnd single-def <<unknown class>>
+; V05 loc2 [V05 ] ( 6, 76 ) struct ( 8) [fp+0x18] do-not-enreg[SB] must-init <System.ValueTuple`2[int,int]>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T11] ( 3, 24 ) int -> x1 "impSpillLclRefs"
-; V08 tmp2 [V08,T08] ( 3, 48 ) int -> x1 "impSpillLclRefs"
-; V09 tmp3 [V09,T03] ( 5, 80 ) int -> [fp+0x18] do-not-enreg[] "field V05.Item1 (fldOffset=0x0)" P-DEP
-; V10 tmp4 [V10,T04] ( 5, 80 ) int -> [fp+0x1C] do-not-enreg[] "field V05.Item2 (fldOffset=0x4)" P-DEP
-; V11 tmp5 [V11,T00] ( 6,272 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.ValueTuple`2[int,int]>
-;* V12 tmp6 [V12,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V13 tmp7 [V13,T01] ( 2,128 ) ref -> x0 "argument with side effect"
-;* V14 tmp8 [V14,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V15 tmp9 [V15,T16] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V16 cse0 [V16,T12] ( 4, 14 ) long -> x24 "CSE - aggressive"
-; V17 cse1 [V17,T13] ( 4, 10 ) long -> x26 "CSE - aggressive"
-; V18 cse2 [V18,T09] ( 4, 35 ) long -> x23 "CSE - aggressive"
+; V07 tmp1 [V07,T10] ( 3, 24 ) int -> x1 "impSpillLclRefs"
+; V08 tmp2 [V08,T02] ( 3, 96 ) int -> x1 "impSpillLclRefs"
+; V09 tmp3 [V09,T03] ( 6, 76 ) int -> [fp+0x18] do-not-enreg[] "field V05.Item1 (fldOffset=0x0)" P-DEP
+; V10 tmp4 [V10,T04] ( 6, 76 ) int -> [fp+0x1C] do-not-enreg[] "field V05.Item2 (fldOffset=0x4)" P-DEP
+; V11 tmp5 [V11,T00] ( 8,224 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.ValueTuple`2[int,int]>
+; V12 tmp6 [V12,T01] ( 2,128 ) ref -> x0 "argument with side effect"
+; V13 cse0 [V13,T11] ( 4, 22 ) long -> x24 "CSE - aggressive"
+; V14 cse1 [V14,T12] ( 4, 10 ) long -> x26 "CSE - aggressive"
+; V15 cse2 [V15,T08] ( 4, 35 ) long -> x23 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -37,24 +34,24 @@ G_M15374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x50]
mov fp, sp
str xzr, [fp, #0x18] // [V05 loc2]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
mov w21, w2
;; size=40 bbWeight=1 PerfScore 8.00
G_M15374_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov w22, #0xD1FFAB1E
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- ldr x23, [x20]
+ ldr x23, [x19]
ldr x24, [x23, #0x48]
ldr x1, [x24, #0x28]
blr x1
mov x25, x0
; gcrRegs +[x25]
- mov x0, x20
- mov x1, x19
+ mov x0, x19
+ mov x1, x20
; gcrRegs +[x1]
ldr x26, [x23, #0x60]
ldr x2, [x26, #0x10]
@@ -63,33 +60,44 @@ G_M15374_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cmp w0, w21
bge G_M15374_IG07
;; size=56 bbWeight=1 PerfScore 21.00
-G_M15374_IG03: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref
+G_M15374_IG03: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz
sxtw w1, w22
add w22, w1, #1
- mov x0, x20
- ; gcrRegs +[x0]
- ldr x2, [x24, #0x20]
- blr x2
- ; gcrRegs -[x0]
- str x0, [fp, #0x18] // [V05 loc2]
- b G_M15374_IG05
- ;; size=28 bbWeight=4 PerfScore 30.00
-G_M15374_IG04: ; bbWeight=8, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref
- sxtw w1, w22
- add w22, w1, #1
- mov x0, x20
- ; gcrRegs +[x0]
- ldr x2, [x24, #0x20]
- blr x2
- ; gcrRegs -[x0]
- str x0, [fp, #0x18] // [V05 loc2]
- ;; size=24 bbWeight=8 PerfScore 52.00
-G_M15374_IG05: ; bbWeight=32, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V05 loc2]
- str x0, [fp, #0x10] // [V11 tmp5]
mov x0, x19
; gcrRegs +[x0]
+ ldr x2, [x24, #0x20]
+ blr x2
+ ; gcrRegs -[x0]
+ str x0, [fp, #0x18] // [V05 loc2]
+ ldr x1, [fp, #0x18] // [V05 loc2]
+ str x1, [fp, #0x10] // [V11 tmp5]
ldr x1, [fp, #0x10] // [V11 tmp5]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ mov x2, x25
+ ; gcrRegs +[x2]
+ movz x3, #0xD1FFAB1E // code for <unknown method>
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ ldr x3, [x3]
+ blr x3
+ ; gcrRegs -[x0 x2]
+ cbz w0, G_M15374_IG05
+ ;; size=68 bbWeight=4 PerfScore 76.00
+G_M15374_IG04: ; bbWeight=16, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz
+ sxtw w1, w22
+ add w22, w1, #1
+ mov x0, x19
+ ; gcrRegs +[x0]
+ ldr x2, [x24, #0x20]
+ blr x2
+ ; gcrRegs -[x0]
+ str x0, [fp, #0x18] // [V05 loc2]
+ ldr x1, [fp, #0x18] // [V05 loc2]
+ str x1, [fp, #0x10] // [V11 tmp5]
+ ldr x1, [fp, #0x10] // [V11 tmp5]
+ mov x0, x20
+ ; gcrRegs +[x0]
mov x2, x25
; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -99,7 +107,9 @@ G_M15374_IG05: ; bbWeight=32, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=
blr x3
; gcrRegs -[x0 x2]
cbnz w0, G_M15374_IG04
- mov x0, x20
+ ;; size=68 bbWeight=16 PerfScore 304.00
+G_M15374_IG05: ; bbWeight=32, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz
+ mov x0, x19
; gcrRegs +[x0]
ldr x1, [x23, #0x58]
ldr x1, [x1, #0x38]
@@ -116,21 +126,21 @@ G_M15374_IG05: ; bbWeight=32, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=
blr x3
; gcrRegs -[x0 x2]
cbnz w0, G_M15374_IG04
- ;; size=100 bbWeight=32 PerfScore 1024.00
+ ;; size=56 bbWeight=32 PerfScore 624.00
G_M15374_IG06: ; bbWeight=4, gcrefRegs=2180000 {x19 x20 x25}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x18] // [V05 loc2]
- str x0, [fp, #0x10] // [V11 tmp5]
- mov x0, x20
- ; gcrRegs +[x0]
- mov x1, x19
- ; gcrRegs +[x1]
+ ldr x2, [fp, #0x18] // [V05 loc2]
+ str x2, [fp, #0x10] // [V11 tmp5]
ldr x2, [fp, #0x10] // [V11 tmp5]
+ mov x1, x20
+ ; gcrRegs +[x1]
+ mov x0, x19
+ ; gcrRegs +[x0]
ldr x3, [x26, #0x18]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
ldr x2, [x26, #0x10]
blr x2
@@ -148,7 +158,7 @@ G_M15374_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 324, prolog size 28, PerfScore 1207.00, instruction count 81, allocated bytes for code 324 (MethodHash=3d9ec3f1) for method System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[int,int]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[int,int]],int):this (FullOpts)
+; Total bytes of code 364, prolog size 28, PerfScore 1105.00, instruction count 91, allocated bytes for code 364 (MethodHash=3d9ec3f1) for method System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[int,int]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[int,int]],int):this (FullOpts)
; ============================================================
Unwind Info:
@@ -159,7 +169,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 81 (0x00051) Actual length = 324 (0x000144)
+ Function Length : 91 (0x0005b) Actual length = 364 (0x00016c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.linux.arm64.checked.mch
-12 (-15.79%) : 13675.dasm - Microsoft.ML.Trainers.SdcaTrainerBase
3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase3+Visitor[System.Canon,System.Canon,System.__Canon]):this (FullOpts)@@ -9,43 +9,37 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]>
; V01 arg1 [V01,T00] ( 5, 5 ) long -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T01] ( 4, 4 ) ref -> x3 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x3 single-def "argument with side effect"
-; V06 tmp3 [V06,T06] ( 2, 4 ) long -> x2 "argument with side effect"
-; V07 tmp4 [V07,T05] ( 2, 4 ) byref -> x0 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V05 tmp2 [V05,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
;
; Lcl frame size = 0
G_M22309_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22309_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x2]
mov x3, x2
; gcrRegs +[x3]
- mov x2, x1
- ; gcrRegs -[x2]
- ldr x0, [x0, #0x08]
- ldr w4, [x0, #0x08]
- cmp w1, w4
- bhs G_M22309_IG04
- add x0, x0, #16
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M22309_IG02: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ ldr x2, [x0, #0x08]
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
; gcrRegs -[x0]
- ; byrRegs +[x0]
- ubfiz x1, x1, #2, #32
- add x0, x0, x1
- mov x1, x2
- mov x2, x0
+ cmp w1, w0
+ bhs G_M22309_IG04
+ add x2, x2, #16
+ ; gcrRegs -[x2]
; byrRegs +[x2]
+ ubfiz x0, x1, #2, #32
+ add x2, x2, x0
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- ; byrRegs -[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=52 bbWeight=1 PerfScore 17.50
+ ;; size=36 bbWeight=1 PerfScore 15.50
G_M22309_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x3
@@ -59,7 +53,7 @@ G_M22309_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 21.00, instruction count 19, allocated bytes for code 76 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 64, prolog size 12, PerfScore 19.50, instruction count 16, allocated bytes for code 64 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ 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)
-20 (-14.29%) : 26061.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 13, 13 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T03] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,12 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp18 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T00] ( 11, 22 ) ref -> x4 single-def "argument with side effect"
-; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V25 tmp21 [V25,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V26 tmp22 [V26,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V27 tmp23 [V27,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V28 tmp24 [V28,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V29 tmp25 [V29,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V30 tmp26 [V30,T12] ( 2, 4 ) int -> x8 "argument with side effect"
-; V31 tmp27 [V31,T13] ( 2, 4 ) int -> x9 "argument with side effect"
-; V32 tmp28 [V32,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V23 tmp19 [V23,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V25 tmp21 [V25,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V26 tmp22 [V26,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V27 tmp23 [V27,T09] ( 2, 4 ) int -> x8 "argument with side effect"
+; V28 tmp24 [V28,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -51,37 +47,30 @@ G_M55914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M55914_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs +[x0-x3]
- mov x4, x0
- ; gcrRegs +[x4]
- ldp x5, x6, [x4, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x4, #0x30]
- ldrb w8, [x4, #0x31]
- ldrb w9, [x4, #0x32]
- ldr x10, [x4, #0x50]
- ; gcrRegs +[x10]
- ;; size=24 bbWeight=1 PerfScore 16.50
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=20 bbWeight=1 PerfScore 16.00
G_M55914_IG03: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x4, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x4, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M55914_IG04: ; bbWeight=1, extend
- ldrb w11, [x4, #0x33]
- str w11, [sp, #0x18] // [V04 OutArgs+0x18]
- ldr x11, [x4, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V04 OutArgs+0x20]
- ldr x4, [x4, #0x18]
- str x4, [sp, #0x28] // [V04 OutArgs+0x28]
- mov x4, x5
- mov x5, x6
- mov w6, w7
- ; gcrRegs -[x6]
- mov w7, w8
- str w9, [sp] // [V04 OutArgs]
- str x10, [sp, #0x08] // [V04 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ str w10, [sp, #0x18] // [V04 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V04 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V04 OutArgs+0x28]
+ str w8, [sp] // [V04 OutArgs]
+ str x9, [sp, #0x08] // [V04 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp18]
str x8, [sp, #0x10] // [V04 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -89,15 +78,15 @@ G_M55914_IG04: ; bbWeight=1, extend
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x10-x11]
- ;; size=76 bbWeight=1 PerfScore 23.00
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M55914_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 140, prolog size 12, PerfScore 53.00, instruction count 35, allocated bytes for code 140 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 50.50, instruction count 30, allocated bytes for code 120 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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)
-16 (-12.50%) : 15358.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan
1[ubyte],int,byref,System.Nullable1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1ubyte@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> x2 single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) byref -> x5 single-def
-; V03 arg3 [V03,T01] ( 5, 5 ) struct (16) [fp+0x40] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> x2 single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) byref -> x5 single-def
+; V03 arg3 [V03,T00] ( 5, 5 ) struct (16) [fp+0x30] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
@@ -20,41 +20,38 @@
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp7 [V12,T05] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V18 tmp13 [V18,T09] ( 3, 2 ) ubyte -> x3 "field V10._controlFlags (fldOffset=0x0)" P-INDEP
-; V19 tmp14 [V19,T10] ( 3, 2 ) int -> x7 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
-; V20 tmp15 [V20,T11] ( 2, 2 ) byref -> x0 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp16 [V21,T12] ( 2, 2 ) int -> x1 "field V11._length (fldOffset=0x8)" P-INDEP
-; V22 tmp17 [V22,T13] ( 2, 2 ) ubyte -> x3 "V04.[000..001)"
-; V23 tmp18 [V23,T14] ( 2, 1.50) ubyte -> x4 "V04.[004..005)"
-; V24 tmp19 [V24,T15] ( 2, 1.50) int -> x6 "V04.[008..012)"
-; V25 tmp20 [V25,T08] ( 3, 3 ) struct (16) [fp+0x30] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
-; V26 tmp21 [V26,T02] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V27 tmp22 [V27,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V28 tmp23 [V28,T07] ( 2, 4 ) int -> x2 "argument with side effect"
-;* V29 cse0 [V29,T16] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V18 tmp13 [V18,T07] ( 3, 2 ) ubyte -> x3 "field V10._controlFlags (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T08] ( 3, 2 ) int -> x7 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V20 tmp15 [V20,T09] ( 2, 2 ) byref -> x0 single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp16 [V21,T10] ( 2, 2 ) int -> x1 "field V11._length (fldOffset=0x8)" P-INDEP
+; V22 tmp17 [V22,T11] ( 2, 2 ) ubyte -> x3 "V04.[000..001)"
+; V23 tmp18 [V23,T12] ( 2, 1.50) ubyte -> x4 "V04.[004..005)"
+; V24 tmp19 [V24,T13] ( 2, 1.50) int -> x6 "V04.[008..012)"
+; V25 tmp20 [V25,T06] ( 3, 3 ) struct (16) [fp+0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
+; V26 tmp21 [V26,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
+;* V27 cse0 [V27,T14] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M37843_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x40]!
mov fp, sp
- str xzr, [fp, #0x30] // [V25 tmp20]
- str xzr, [fp, #0x18] // [V27 tmp22]
- stp x4, x5, [fp, #0x40] // [V03 arg3], [V03 arg3+0x08]
+ str xzr, [fp, #0x20] // [V25 tmp20]
+ stp x4, x5, [fp, #0x30] // [V03 arg3], [V03 arg3+0x08]
mov x5, x3
; byrRegs +[x5]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M37843_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0021 {x0 x5}, byref, isz
; byrRegs +[x0]
- ldrb w3, [fp, #0x40] // [V03 arg3]
- ldrb w4, [fp, #0x44] // [V03 arg3+0x04]
- ldr w6, [fp, #0x48] // [V03 arg3+0x08]
+ ldrb w3, [fp, #0x30] // [V03 arg3]
+ ldrb w4, [fp, #0x34] // [V03 arg3+0x04]
+ ldr w6, [fp, #0x38] // [V03 arg3+0x08]
cbnz w3, G_M37843_IG04
;; size=16 bbWeight=1 PerfScore 7.00
G_M37843_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0021 {x0 x5}, byref
@@ -67,12 +64,9 @@ G_M37843_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0021 {x0 x5}
sxtw w7, w6
;; size=8 bbWeight=0.50 PerfScore 0.50
G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0021 {x0 x5}, byref
- str x0, [fp, #0x18] // [V27 tmp22]
- str w1, [fp, #0x20] // [V27 tmp22+0x08]
- strb w3, [fp, #0x28] // [V26 tmp21]
- str w7, [fp, #0x2C] // [V26 tmp21+0x04]
- ldp x0, x1, [fp, #0x18] // [V27 tmp22], [V27 tmp22+0x08]
- ldr x3, [fp, #0x28] // [V26 tmp21]
+ strb w3, [fp, #0x18] // [V26 tmp21]
+ str w7, [fp, #0x1C] // [V26 tmp21+0x04]
+ ldr x3, [fp, #0x18] // [V26 tmp21]
mov w4, #2
movz x6, #0xD1FFAB1E // code for System.Formats.Asn1.AsnDecoder:GetIntegerContents(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,byref):System.ReadOnlySpan`1[ubyte]
movk x6, #0xD1FFAB1E LSL #16
@@ -80,16 +74,16 @@ G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0021 {x0 x5}, b
ldr x6, [x6]
blr x6
; byrRegs -[x5]
- stp x0, x1, [fp, #0x30] // [V25 tmp20], [V25 tmp20+0x08]
- ldr x0, [fp, #0x30] // [V25 tmp20]
- ldr w1, [fp, #0x38] // [V25 tmp20+0x08]
- ;; size=60 bbWeight=1 PerfScore 20.00
+ stp x0, x1, [fp, #0x20] // [V25 tmp20], [V25 tmp20+0x08]
+ ldr x0, [fp, #0x20] // [V25 tmp20]
+ ldr w1, [fp, #0x28] // [V25 tmp20+0x08]
+ ;; size=48 bbWeight=1 PerfScore 15.00
G_M37843_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 16, PerfScore 35.50, instruction count 32, allocated bytes for code 128 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 29.50, instruction count 28, allocated bytes for code 112 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
@@ -100,7 +94,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -108,7 +102,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+8 (+3.92%) : 27406.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -8,8 +8,8 @@
; 0 inlinees with PGO data; 12 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 12, 12 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V14 tmp10 [V14,T03] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V14 tmp10 [V14,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V07.array (fldOffset=0x0)" P-INDEP
@@ -31,32 +31,29 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref "field V11._bits (fldOffset=0x0)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) long -> zero-ref "field V11._bits0 (fldOffset=0x8)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
-; V23 tmp19 [V23,T11] ( 3, 2 ) ref -> x21 single-def "field V12.array (fldOffset=0x0)" P-INDEP
-; V24 tmp20 [V24,T10] ( 3, 2.50) ref -> x2 single-def "field V13.array (fldOffset=0x0)" P-INDEP
-; V25 tmp21 [V25 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V26 tmp22 [V26,T00] ( 9, 18 ) ref -> x19 single-def "argument with side effect"
-; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V29 tmp25 [V29,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V30 tmp26 [V30,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V31 tmp27 [V31,T09] ( 2, 4 ) int -> x5 "argument with side effect"
-; V32 tmp28 [V32,T08] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V23 tmp19 [V23,T09] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V24 tmp20 [V24,T08] ( 3, 2.50) ref -> x2 single-def "field V13.array (fldOffset=0x0)" P-INDEP
+; V25 tmp21 [V25 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V26 tmp22 [V26,T03] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
+; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V29 tmp25 [V29,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V30 tmp26 [V30,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M12801_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #96
+ sub sp, sp, #80
stp fp, lr, [sp, #0x18]
- stp x19, x20, [sp, #0x48]
- str x21, [sp, #0x58]
+ stp x19, x20, [sp, #0x40]
add fp, sp, #24
- stp xzr, xzr, [fp, #0x18] // [V25 tmp21], [V25 tmp21+0x08]
- str xzr, [fp, #0x28] // [V25 tmp21+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V25 tmp21], [V25 tmp21+0x08]
+ str xzr, [fp, #0x20] // [V25 tmp21+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.00
G_M12801_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x2, [x19, #0x48]
; gcrRegs +[x2]
@@ -64,12 +61,11 @@ G_M12801_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
;; size=8 bbWeight=1 PerfScore 4.00
G_M12801_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x21, xzr
- ; gcrRegs +[x21]
+ mov x2, xzr
+ ; gcrRegs +[x2]
b G_M12801_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M12801_IG04: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -81,67 +77,73 @@ G_M12801_IG04: ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x21, x0
- ; gcrRegs +[x21]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M12801_IG05: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- mov x2, x21
+ mov x2, x0
; gcrRegs +[x2]
- ldp x3, x4, [x19, #0x50]
- ; gcrRegs +[x3-x4]
- ldrb w5, [x19, #0x38]
- ldr x6, [x19, #0x60]
- ; gcrRegs +[x6]
- ;; size=28 bbWeight=1 PerfScore 19.50
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x1, [x19, #0x18]
+ ; gcrRegs +[x1]
+ ldrsb wzr, [x20]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ldp x4, x5, [x19, #0x50]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x19, #0x38]
+ ldr x7, [x19, #0x60]
+ ; gcrRegs +[x7]
+ ;; size=24 bbWeight=1 PerfScore 19.00
G_M12801_IG06: ; bbWeight=1, nogc, extend
- ldp x7, x8, [x19, #0x68]
- stp x7, x8, [fp, #0x18]
- ldr x7, [x19, #0x78]
- str x7, [fp, #0x28]
+ ldp x0, x8, [x19, #0x68]
+ stp x0, x8, [fp, #0x10]
+ ldr x0, [x19, #0x78]
+ str x0, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M12801_IG07: ; bbWeight=1, extend
- ldr x7, [x19, #0x28]
- ; gcrRegs +[x7]
- str x7, [sp] // [V04 OutArgs]
- mov x7, xzr
+ ldr x0, [x19, #0x28]
+ ; gcrRegs +[x0]
+ str x0, [sp] // [V04 OutArgs]
+ mov x0, xzr
+ ; gcrRegs -[x0]
+ str x0, [sp, #0x08] // [V04 OutArgs+0x08]
+ str x1, [sp, #0x10] // [V04 OutArgs+0x10]
+ mov x1, x3
+ mov x3, x4
+ mov x4, x5
+ mov w5, w6
+ ; gcrRegs -[x5]
+ mov x6, x7
+ ; gcrRegs +[x6]
+ add x7, fp, #16 // [V25 tmp21]
; gcrRegs -[x7]
- str x7, [sp, #0x08] // [V04 OutArgs+0x08]
- str x0, [sp, #0x10] // [V04 OutArgs+0x10]
mov x0, x19
- add x7, fp, #24 // [V25 tmp21]
+ ; gcrRegs +[x0]
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x4 x6 x19-x21]
- ;; size=48 bbWeight=1 PerfScore 13.00
+ ; gcrRegs -[x1-x4 x6 x19-x20]
+ ;; size=68 bbWeight=1 PerfScore 15.50
G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x58]
- ldp x19, x20, [sp, #0x48]
+ ldp x19, x20, [sp, #0x40]
ldp fp, lr, [sp, #0x18]
- add sp, sp, #96
+ add sp, sp, #80
ret lr
- ;; size=20 bbWeight=1 PerfScore 5.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
-; Total bytes of code 204, prolog size 28, PerfScore 62.75, instruction count 51, allocated bytes for code 204 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 212, prolog size 24, PerfScore 61.75, instruction count 53, allocated bytes for code 212 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 3
+ Code Words : 2
Epilog Count : 1
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 53 (0x00035) Actual length = 212 (0x0000d4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -149,12 +151,9 @@ Unwind Info:
---- Unwind codes ----
E2 03 add_fp 3 (0x03); add fp, sp, #24
---- Epilog start at index 2 ----
- 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]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64]
43 save_fplr #3 (0x03); stp fp, lr, [sp, #24]
- 06 alloc_s #6 (0x06); sub sp, sp, #96 (0x060)
- E4 end
- E4 end
+ 05 alloc_s #5 (0x05); sub sp, sp, #80 (0x050)
E4 end
E4 end
+16 (+6.90%) : 27166.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 15, 15 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V19 tmp14 [V19,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V19 tmp14 [V19,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
@@ -37,30 +37,27 @@
;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._bits0 (fldOffset=0x8)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._capacity (fldOffset=0x10)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref "field V16.array (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T15] ( 3, 2 ) ref -> x22 single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T14] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V32 tmp27 [V32,T00] ( 12, 24 ) ref -> x19 single-def "argument with side effect"
-; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp30 [V35,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V36 tmp31 [V36,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V37 tmp32 [V37,T09] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V38 tmp33 [V38,T11] ( 2, 4 ) int -> x6 "argument with side effect"
-; V39 tmp34 [V39,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V40 tmp35 [V40,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V41 tmp36 [V41,T10] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
+; V29 tmp24 [V29,T12] ( 3, 2 ) ref -> x3 single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T11] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V32 tmp27 [V32,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V35 tmp30 [V35,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V36 tmp31 [V36,T09] ( 2, 4 ) int -> x0 "argument with side effect"
+; V37 tmp32 [V37,T10] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T07] ( 2, 4 ) ref -> x8 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V31 tmp26], [V31 tmp26+0x08]
- str xzr, [fp, #0x28] // [V31 tmp26+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V31 tmp26], [V31 tmp26+0x08]
+ str xzr, [fp, #0x20] // [V31 tmp26+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -75,12 +72,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x3, xzr
+ ; gcrRegs +[x3]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x3] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -92,73 +89,79 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldr x2, [x19, #0x28]
- ; gcrRegs +[x2]
- mov x3, x22
+ mov x3, x0
; gcrRegs +[x3]
- ldp x4, x5, [x19, #0x40]
- ; gcrRegs +[x4-x5]
- ldrb w6, [x19, #0x30]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldr x9, [x19, #0x50]
- ; gcrRegs +[x9]
- ;; size=40 bbWeight=1 PerfScore 26.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldr x4, [x19, #0x28]
+ ; gcrRegs +[x4]
+ ldp x5, x6, [x19, #0x40]
+ ; gcrRegs +[x5-x6]
+ ldrb w7, [x19, #0x30]
+ ldrb w0, [x19, #0x31]
+ ldrb w1, [x19, #0x32]
+ ldr x8, [x19, #0x50]
+ ; gcrRegs +[x8]
+ ;; size=32 bbWeight=1 PerfScore 25.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x10, x11, [x19, #0x58]
- stp x10, x11, [fp, #0x18]
- ldr x10, [x19, #0x68]
- str x10, [fp, #0x28]
+ ldp x9, x10, [x19, #0x58]
+ stp x9, x10, [fp, #0x10]
+ ldr x9, [x19, #0x68]
+ str x9, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w10, [x19, #0x33]
- str w10, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x10, [x19, #0x70]
- ; gcrRegs +[x10]
- str x10, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w9, [x19, #0x33]
+ str w9, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x9, [x19, #0x70]
+ ; gcrRegs +[x9]
+ str x9, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov x2, x4
+ mov x4, x5
+ mov x5, x6
+ mov w6, w7
+ ; gcrRegs -[x6]
+ mov w7, w0
+ str w1, [sp] // [V05 OutArgs]
+ str x8, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x0, fp, #16 // [V31 tmp26]
+ str x0, [sp, #0x10] // [V05 OutArgs+0x10]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str x9, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V31 tmp26]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
movz x8, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x8]
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x9-x10 x19-x22]
- ;; size=60 bbWeight=1 PerfScore 18.50
+ ; gcrRegs -[x1-x5 x9 x19-x21]
+ ;; size=84 bbWeight=1 PerfScore 21.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 232, prolog size 28, PerfScore 74.25, instruction count 58, allocated bytes for code 232 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 248, prolog size 28, PerfScore 77.25, instruction count 62, allocated bytes for code 248 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -166,9 +169,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
+16 (+12.50%) : 1344.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 6.50) ref -> [fp+0x18] this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
+; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
; V01 loc0 [V01,T02] ( 3, 2.50) ref -> x1 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T03] ( 3, 2.50) int -> x3
+; V02 loc1 [V02,T03] ( 3, 2.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
-; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x2 single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
+; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x3 single-def "argument with side effect"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 2, 2 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M7274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
+ str x19, [sp, #0x38]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7274_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x18]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M7274_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
- ldr w2, [x0, #0x14]
- sub w3, w2, #1
- ldr w4, [x1, #0x08]
- cmp w4, w3
+ ldr w0, [x19, #0x14]
+ sub w2, w0, #1
+ ldr w3, [x1, #0x08]
+ cmp w3, w2
bls G_M7274_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- add w2, w2, #1
- str w2, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x20]
- ; gcrRegs +[x2]
- ubfiz x3, x3, #5, #32
- add x3, x3, #16
- add x1, x1, x3
+G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ add w0, w0, #1
+ str w0, [x19, #0x14]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ubfiz x0, x2, #5, #32
+ add x0, x0, #16
+ add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ldp q16, q17, [x1]
- stp q16, q17, [fp, #0x20]
- add x1, fp, #32 // [V04 tmp1]
+ ldp x0, x2, [x1]
+ stp x0, x2, [fp, #0x18]
+ ldp x0, x2, [x1, #0x10]
+ stp x0, x2, [fp, #0x28]
+ add x1, fp, #24 // [V04 tmp1]
; byrRegs -[x1]
- ldr x0, [x2, #0x08]
- ldr x2, [x2, #0x18]
- ; gcrRegs -[x2]
- blr x2
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- str d0, [x0, #0x08]
+ ldr x2, [x3, #0x18]
+ blr x2
+ ; gcrRegs -[x0 x3]
+ str d0, [x19, #0x08]
mov w0, #1
- ; gcrRegs -[x0]
- ;; size=64 bbWeight=0.50 PerfScore 11.25
+ ;; size=64 bbWeight=0.50 PerfScore 12.75
G_M7274_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars -{V00}
- str xzr, [x0, #0x08]
- movn w1, #0
- str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ str xzr, [x19, #0x08]
+ movn w0, #0
+ str w0, [x19, #0x14]
mov w0, wzr
- ; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M7274_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 27.25, instruction count 32, allocated bytes for code 128 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 32.25, instruction count 36, allocated bytes for code 144 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +98,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
+ E4 end
smoke_tests.nativeaot.linux.arm64.checked.mch
-8 (-8.70%) : 15759.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -9,7 +9,7 @@
;
; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 8
@@ -31,10 +31,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w1, #1
swpal w1, w0, [x0]
; byrRegs -[x0]
- cmp w0, #0
- cset x0, eq
- cbnz w0, G_M21281_IG05
- ;; size=36 bbWeight=1 PerfScore 10.50
+ cbz w0, G_M21281_IG05
+ ;; size=28 bbWeight=1 PerfScore 9.50
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
@@ -56,7 +54,7 @@ G_M21281_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 92, prolog size 12, PerfScore 18.50, instruction count 23, allocated bytes for code 92 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 84, prolog size 12, PerfScore 17.50, instruction count 21, allocated bytes for code 84 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
Cfi Info:
-4 (-8.33%) : 7825.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
@@ -9,44 +9,40 @@
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> x0 class-hnd exact single-def <System.String>
; V01 arg1 [V01,T02] ( 3, 3 ) ushort -> x1 single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) int -> x2 single-def
+; V02 arg2 [V02,T03] ( 3, 3 ) int -> x5 single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> x3 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 "Inlining Arg"
-; V06 tmp2 [V06,T05] ( 2, 4 ) long -> x4 "Cast away GC"
-; V07 tmp3 [V07,T06] ( 2, 4 ) long -> x4 "argument with side effect"
-; V08 tmp4 [V08,T04] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V09 tmp5 [V09,T07] ( 2, 4 ) int -> x5 "argument with side effect"
-; V10 tmp6 [V10,T08] ( 2, 4 ) int -> x6 "argument with side effect"
+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> x4 "Cast away GC"
+; V07 tmp3 [V07,T05] ( 2, 4 ) long -> x4 "argument with side effect"
;
; Lcl frame size = 0
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w5, w2
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0008 {x3}, byref
; gcrRegs +[x0]
; byrRegs +[x3]
- uxth w5, w1
- sxtw w6, w2
mov x4, x3
+ uxth w2, w1
mov x1, x0
; gcrRegs +[x1]
- mov w2, w5
- mov w3, w6
+ mov w3, w5
; byrRegs -[x3]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address
; gcrRegs -[x0]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ;; size=32 bbWeight=1 PerfScore 4.00
+ ;; size=24 bbWeight=1 PerfScore 3.00
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
b Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 48, prolog size 8, PerfScore 7.50, instruction count 12, allocated bytes for code 48 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
+; Total bytes of code 44, prolog size 12, PerfScore 7.00, instruction count 11, allocated bytes for code 44 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
; ============================================================
Cfi Info:
-8 (-8.33%) : 14146.dasm - System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
@@ -9,14 +9,12 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd exact single-def <System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction>
; V01 arg1 [V01,T00] ( 6, 6 ) ref -> x1 class-hnd exact single-def <System.Linq.Expressions.Interpreter.InterpretedFrame>
-; V02 loc0 [V02,T08] ( 3, 3 ) int -> x3
+; V02 loc0 [V02,T06] ( 3, 3 ) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> x1 single-def "arr expr"
-; V06 tmp3 [V06,T02] ( 3, 6 ) int -> x0 "index expr"
+; V04 tmp1 [V04,T04] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V06 tmp3 [V06,T02] ( 3, 6 ) int -> x1 "index expr"
; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V08 tmp5 [V08,T07] ( 2, 4 ) long -> x3 "argument with side effect"
-; V09 tmp6 [V09,T06] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
;
; Lcl frame size = 0
@@ -26,33 +24,33 @@ G_M22389_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M22389_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- ldr x2, [x1, #0x28]
+ ldr x3, [x1, #0x28]
+ ; gcrRegs +[x3]
+ ldr w4, [x1, #0x40]
+ add w2, w4, #1
+ str w2, [x1, #0x40]
+ ldr x2, [x1, #0x08]
; gcrRegs +[x2]
- ldr w3, [x1, #0x40]
- add w4, w3, #1
- str w4, [x1, #0x40]
- sxtw x3, w3
- ldr x1, [x1, #0x08]
- ldr x1, [x1, #0x08]
- ldr w0, [x0, #0x08]
- ; gcrRegs -[x0]
- ldr w4, [x1, #0x08]
- cmp w0, w4
- bhs G_M22389_IG04
- add x1, x1, #16
+ ldr x2, [x2, #0x08]
+ ldr w1, [x0, #0x08]
; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x4, [x1, w0, UXTW #3]
- ; gcrRegs +[x4]
- mov x0, x2
+ ldr w0, [x2, #0x08]
+ ; gcrRegs -[x0]
+ cmp w1, w0
+ bhs G_M22389_IG04
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ldr x2, [x2, w1, UXTW #3]
+ ; gcrRegs +[x2]
+ ; byrRegs -[x2]
+ sxtw x1, w4
+ mov x0, x3
; gcrRegs +[x0]
- mov x1, x3
- ; byrRegs -[x1]
- mov x2, x4
bl CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[x0 x2 x4]
+ ; gcrRegs -[x0 x2-x3]
mov w0, #1
- ;; size=72 bbWeight=1 PerfScore 28.00
+ ;; size=64 bbWeight=1 PerfScore 27.00
G_M22389_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -62,7 +60,7 @@ G_M22389_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 31.50, instruction count 24, allocated bytes for code 96 (MethodHash=ee43a88a) for method System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 30.50, instruction count 22, allocated bytes for code 88 (MethodHash=ee43a88a) for method System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
; ============================================================
Cfi Info:
+8 (+6.67%) : 2583.dasm - Interop+Sys:GetPwUidR(uint,byref,ulong,int):int (FullOpts)
@@ -11,15 +11,14 @@
; V01 arg1 [V01,T00] ( 4, 4 ) byref -> x1 single-def
; V02 arg2 [V02,T02] ( 3, 3 ) long -> x2 single-def
; V03 arg3 [V03,T03] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T08] ( 2, 2 ) int -> x0
+; V04 loc0 [V04,T07] ( 2, 2 ) int -> x0
;* V05 loc1 [V05 ] ( 0, 0 ) long -> zero-ref
; V06 loc2 [V06 ] ( 2, 2 ) byref -> [fp+0x58] must-init pinned
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T04] ( 2, 4 ) int -> x0 "Single return block return value"
; V09 PInvokeFrame [V09 ] ( 3, 3 ) struct (40) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V10 tmp3 [V10,T05] ( 2, 4 ) long -> x1 "Cast away GC"
-; V11 tmp4 [V11,T06] ( 2, 4 ) int -> x0 "argument with side effect"
-; V12 tmp5 [V12,T07] ( 2, 4 ) long -> x1 "argument with side effect"
+; V11 tmp4 [V11,T06] ( 2, 4 ) long -> x1 "argument with side effect"
; TEMP_02 int -> [fp+0x54]
; TEMP_01 int -> [fp+0x50]
; TEMP_04 long -> [fp+0x48]
@@ -40,18 +39,20 @@ G_M11286_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M11286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
; byrRegs +[x1]
str x1, [fp, #0x58] // [V06 loc2]
+ str x1, [fp, #0x48] // [TEMP_04]
str w0, [fp, #0x54] // [TEMP_02]
- stp x2, x1, [fp, #0x40] // [TEMP_03], [TEMP_04]
+ str x2, [fp, #0x40] // [TEMP_03]
str w3, [fp, #0x50] // [TEMP_01]
add x0, fp, #24 // [V09 PInvokeFrame]
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=24 bbWeight=1 PerfScore 5.50
G_M11286_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
bl CORINFO_HELP_JIT_PINVOKE_BEGIN
+ ldr x1, [fp, #0x48] // [TEMP_04]
ldr w0, [fp, #0x54] // [TEMP_02]
- ldp x2, x1, [fp, #0x40] // [TEMP_03], [TEMP_04]
+ ldr x2, [fp, #0x40] // [TEMP_03]
ldr w3, [fp, #0x50] // [TEMP_01]
- ;; size=16 bbWeight=1 PerfScore 8.00
+ ;; size=20 bbWeight=1 PerfScore 9.00
G_M11286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl <unknown method>
mov w19, w0
@@ -70,7 +71,7 @@ G_M11286_IG05: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-; Total bytes of code 120, prolog size 32, PerfScore 31.50, instruction count 30, allocated bytes for code 120 (MethodHash=6f4dd3e9) for method Interop+Sys:GetPwUidR(uint,byref,ulong,int):int (FullOpts)
+; Total bytes of code 128, prolog size 32, PerfScore 33.50, instruction count 32, allocated bytes for code 128 (MethodHash=6f4dd3e9) for method Interop+Sys:GetPwUidR(uint,byref,ulong,int):int (FullOpts)
; ============================================================
Cfi Info:
+16 (+10.81%) : 2387.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
@@ -13,16 +13,15 @@
; V03 arg3 [V03,T03] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T04] ( 3, 3 ) long -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T10] ( 2, 2 ) int -> x19
+; V06 loc1 [V06,T09] ( 2, 2 ) int -> x19
;* V07 loc2 [V07 ] ( 0, 0 ) long -> zero-ref
; V08 loc3 [V08 ] ( 2, 2 ) byref -> [fp+0x58] must-init pinned
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 4, 3 ) byref -> x1 "Inline return value spill temp"
+; V10 tmp1 [V10,T08] ( 4, 3 ) byref -> x1 "Inline return value spill temp"
; V11 tmp2 [V11,T05] ( 2, 4 ) int -> x0 "Single return block return value"
; V12 PInvokeFrame [V12 ] ( 3, 3 ) struct (40) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V13 tmp4 [V13,T06] ( 2, 4 ) long -> x1 "Cast away GC"
-; V14 tmp5 [V14,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V15 tmp6 [V15,T08] ( 2, 4 ) long -> x1 "argument with side effect"
+; V14 tmp5 [V14,T07] ( 2, 4 ) long -> x1 "argument with side effect"
; TEMP_02 int -> [fp+0x54]
; TEMP_01 int -> [fp+0x50]
; TEMP_05 long -> [fp+0x48]
@@ -58,19 +57,23 @@ G_M23060_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M23060_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
str x1, [fp, #0x58] // [V08 loc3]
- stp x1, x0, [fp, #0x40] // [TEMP_04], [TEMP_05]
+ str x1, [fp, #0x48] // [TEMP_05]
uxth w2, w2
- stp w3, w2, [fp, #0x50] // [TEMP_02]
+ str w2, [fp, #0x54] // [TEMP_02]
+ str x0, [fp, #0x40] // [TEMP_04]
+ str w3, [fp, #0x50] // [TEMP_01]
str x4, [fp, #0x38] // [TEMP_03]
add x0, fp, #16 // [V12 PInvokeFrame]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M23060_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
bl CORINFO_HELP_JIT_PINVOKE_BEGIN
- ldp x1, x0, [fp, #0x40] // [TEMP_04], [TEMP_05]
- ldp w3, w2, [fp, #0x50] // [TEMP_02]
+ ldr x1, [fp, #0x48] // [TEMP_05]
+ ldr w2, [fp, #0x54] // [TEMP_02]
+ ldr x0, [fp, #0x40] // [TEMP_04]
+ ldr w3, [fp, #0x50] // [TEMP_01]
ldr x4, [fp, #0x38] // [TEMP_03]
- ;; size=16 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 11.00
G_M23060_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl <unknown method>
mov w19, w0
@@ -91,7 +94,7 @@ G_M23060_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-; Total bytes of code 148, prolog size 32, PerfScore 35.00, instruction count 37, allocated bytes for code 148 (MethodHash=6585a5eb) for method Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
+; Total bytes of code 164, prolog size 32, PerfScore 40.00, instruction count 41, allocated bytes for code 164 (MethodHash=6585a5eb) for method Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
; ============================================================
Cfi Info:
+24 (+14.29%) : 15732.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
@@ -7,9 +7,9 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 2.50) ref -> [fp+0x20] this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> [fp+0x18] class-hnd exact single-def <System.String>
-; V02 arg2 [V02,T02] ( 3, 2.50) ubyte -> x21 single-def
+; V00 this [V00,T01] ( 4, 2.50) ref -> [fp+0x20] this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 4, 3 ) ref -> [fp+0x18] class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T02] ( 4, 2.50) ubyte -> x21 single-def
; V03 loc0 [V03,T05] ( 3, 2.50) long -> x0
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <Interop+ErrorInfo>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -17,10 +17,9 @@
; V07 tmp2 [V07,T04] ( 3, 3 ) int -> x22 "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._error (fldOffset=0x0)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._rawErrno (fldOffset=0x4)" P-INDEP
-; V10 tmp5 [V10,T06] ( 2, 1 ) int -> x19 "field V06._error (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T07] ( 2, 1 ) int -> x22 "field V06._rawErrno (fldOffset=0x4)" P-INDEP
-; V12 tmp7 [V12,T03] ( 4, 3 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
-;* V13 tmp8 [V13,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V10 tmp5 [V10,T06] ( 3, 1 ) int -> x19 "field V06._error (fldOffset=0x0)" P-INDEP
+; V11 tmp6 [V11,T07] ( 3, 1 ) int -> x22 "field V06._rawErrno (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T03] ( 7, 3 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
;
; Lcl frame size = 32
@@ -31,17 +30,17 @@ G_M13357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str x0, [fp, #0x20] // [V00 this]
; GC ptr vars +{V00}
- mov x20, x1
- ; gcrRegs +[x20]
+ mov x19, x1
+ ; gcrRegs +[x19]
mov w21, w2
;; size=28 bbWeight=1 PerfScore 5.50
-G_M13357_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
- str x20, [fp, #0x18] // [V01 arg1]
+G_M13357_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ str x19, [fp, #0x18] // [V01 arg1]
; GC ptr vars +{V01}
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
bl <unknown method>
- ; gcrRegs -[x0 x20]
+ ; gcrRegs -[x0 x19]
cbnz x0, G_M13357_IG07
;; size=16 bbWeight=1 PerfScore 3.50
G_M13357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -54,22 +53,23 @@ G_M13357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M13357_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bl <unknown method>
sxtw w19, w0
- adrp x0, [HIGH RELOC #0xD1FFAB1E]
- add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr w0, [x0]
- cbnz w0, G_M13357_IG08
- ;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M13357_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ add x1, x1, [LOW RELOC #0xD1FFAB1E]
+ ldr w1, [x1]
+ cbnz w1, G_M13357_IG08
stp w19, w22, [fp, #0x28] // [V12 tmp7], [V12 tmp7+0x04]
- ldp x0, x1, [fp, #0x20] // [V00 this], [V12 tmp7]
- ; gcrRegs +[x0]
+ ldr x1, [fp, #0x28] // [V12 tmp7]
uxtb w2, w21
- ; GC ptr vars -{V00}
+ ldr x0, [fp, #0x20] // [V00 this]
+ ; gcrRegs +[x0]
+ ; GC ptr vars -{V00 V01}
bl System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:InternalContinueOnError(Interop+ErrorInfo,ubyte):ubyte:this
; gcrRegs -[x0]
cbz w0, G_M13357_IG09
+ ;; size=48 bbWeight=0.50 PerfScore 7.00
+G_M13357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov x0, xzr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
G_M13357_IG06: ; bbWeight=0.50, epilog, nogc, extend
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
@@ -77,24 +77,29 @@ G_M13357_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
G_M13357_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V01}
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x50
ret lr
;; size=16 bbWeight=0.50 PerfScore 2.00
-G_M13357_IG08: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M13357_IG08: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V01}
bl CORINFO_HELP_POLL_GC
- b G_M13357_IG05
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M13357_IG09: ; bbWeight=0, gcVars=0000000000000002 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00}
+ stp w19, w22, [fp, #0x28] // [V12 tmp7], [V12 tmp7+0x04]
+ ldr x1, [fp, #0x28] // [V12 tmp7]
+ uxtb w2, w21
+ ldr x0, [fp, #0x20] // [V00 this]
+ ; gcrRegs +[x0]
+ ; GC ptr vars -{V00 V01}
+ bl System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:InternalContinueOnError(Interop+ErrorInfo,ubyte):ubyte:this
+ ; gcrRegs -[x0]
+ cbnz w0, G_M13357_IG05
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M13357_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x0, [fp, #0x28] // [V12 tmp7]
ldr x1, [fp, #0x18] // [V01 arg1]
; gcrRegs +[x1]
mov w2, #1
- ; GC ptr vars -{V01}
bl <unknown method>
; gcrRegs -[x1] +[x0]
bl CORINFO_HELP_THROW
@@ -102,7 +107,7 @@ G_M13357_IG09: ; bbWeight=0, gcVars=0000000000000002 {V01}, gcrefRegs=000
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 16, PerfScore 22.00, instruction count 42, allocated bytes for code 168 (MethodHash=29b6cbd2) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 22.50, instruction count 48, allocated bytes for code 192 (MethodHash=29b6cbd2) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
; ============================================================
Cfi Info:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch
2,230
205
28
1,997
-3,020
+444
benchmarks.run_pgo.linux.arm64.checked.mch
6,705
3,473
9
3,223
-67,720
+48
benchmarks.run_tiered.linux.arm64.checked.mch
2,806
2,558
17
231
-59,684
+228
coreclr_tests.run.linux.arm64.checked.mch
13,591
11,523
105
1,963
-374,264
+1,336
libraries.crossgen2.linux.arm64.checked.mch
4,800
963
186
3,651
-14,272
+2,268
libraries.pmi.linux.arm64.checked.mch
7,166
1,354
327
5,485
-14,840
+3,744
libraries_tests.run.linux.arm64.Release.mch
33,531
24,717
605
8,209
-514,908
+7,372
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
18,151
3,325
404
14,422
-35,180
+3,980
realworld.run.linux.arm64.checked.mch
1,714
413
68
1,233
-9,568
+1,052
smoke_tests.nativeaot.linux.arm64.checked.mch
185
36
10
139
-332
+100
90,879
48,567
1,759
40,553
-1,093,788
+20,572
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.arm64.checked.mch
33,632
2,755
30,877
4 (0.01%)
4 (0.01%)
benchmarks.run_pgo.linux.arm64.checked.mch
153,694
60,106
93,588
162 (0.11%)
162 (0.11%)
benchmarks.run_tiered.linux.arm64.checked.mch
63,981
47,942
16,039
2 (0.00%)
2 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch
628,056
383,770
244,286
415 (0.07%)
415 (0.07%)
libraries.crossgen2.linux.arm64.checked.mch
233,777
15
233,762
0 (0.00%)
0 (0.00%)
libraries.pmi.linux.arm64.checked.mch
294,232
6
294,226
8 (0.00%)
8 (0.00%)
libraries_tests.run.linux.arm64.Release.mch
737,381
487,495
249,886
3,456 (0.47%)
3,457 (0.47%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
304,061
21,560
282,501
10 (0.00%)
10 (0.00%)
realworld.run.linux.arm64.checked.mch
33,301
151
33,150
3 (0.01%)
3 (0.01%)
smoke_tests.nativeaot.linux.arm64.checked.mch
19,041
6
19,035
0 (0.00%)
0 (0.00%)
2,501,156
1,003,806
1,497,350
4,060 (0.16%)
4,061 (0.16%)
jit-analyze output
benchmarks.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15577120 (overridden on cmd)
Total bytes of diff: 15574544 (overridden on cmd)
Total bytes of delta: -2576 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 22049.dasm (1.00 % of base)
60 : 1118.dasm (5.79 % of base)
56 : 3830.dasm (0.45 % of base)
48 : 22037.dasm (0.79 % of base)
20 : 12847.dasm (1.24 % of base)
16 : 1281.dasm (12.50 % of base)
16 : 7656.dasm (0.46 % of base)
12 : 1065.dasm (0.96 % of base)
12 : 19687.dasm (0.31 % of base)
12 : 18617.dasm (0.28 % of base)
8 : 33585.dasm (1.06 % of base)
8 : 9856.dasm (1.56 % of base)
4 : 11079.dasm (0.30 % of base)
4 : 12153.dasm (0.75 % of base)
4 : 1837.dasm (1.02 % of base)
4 : 18707.dasm (0.17 % of base)
4 : 19133.dasm (0.70 % of base)
4 : 19972.dasm (0.09 % of base)
4 : 20395.dasm (0.74 % of base)
4 : 22499.dasm (0.28 % of base)
Top file improvements (bytes):
-440 : 8924.dasm (-10.74 % of base)
-140 : 16749.dasm (-6.01 % of base)
-84 : 7114.dasm (-3.42 % of base)
-76 : 28653.dasm (-12.84 % of base)
-64 : 20586.dasm (-9.70 % of base)
-64 : 20697.dasm (-7.41 % of base)
-60 : 7087.dasm (-1.99 % of base)
-48 : 15307.dasm (-2.17 % of base)
-44 : 18761.dasm (-1.68 % of base)
-40 : 8881.dasm (-1.44 % of base)
-36 : 7160.dasm (-2.47 % of base)
-36 : 9630.dasm (-0.33 % of base)
-36 : 1796.dasm (-6.04 % of base)
-32 : 16223.dasm (-3.15 % of base)
-32 : 17646.dasm (-12.90 % of base)
-32 : 28373.dasm (-12.90 % of base)
-32 : 5624.dasm (-10.26 % of base)
-28 : 6978.dasm (-3.83 % of base)
-28 : 6985.dasm (-3.06 % of base)
-24 : 6929.dasm (-3.09 % of base)
60 total files with Code Size differences (34 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
112 (1.00 % of base) : 22049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
60 (5.79 % of base) : 1118.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
56 (0.45 % of base) : 3830.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.79 % of base) : 22037.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
20 (1.24 % of base) : 12847.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
16 (0.46 % of base) : 7656.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
16 (12.50 % of base) : 1281.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
12 (0.28 % of base) : 18617.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (FullOpts)
12 (0.31 % of base) : 19687.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (0.96 % of base) : 1065.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
8 (1.06 % of base) : 33585.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
8 (1.56 % of base) : 9856.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
4 (0.17 % of base) : 18707.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:CreateRootSingleNamespaceDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration],ubyte):Microsoft.CodeAnalysis.CSharp.RootSingleNamespaceDeclaration:this (FullOpts)
4 (0.09 % of base) : 19972.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundBlock (FullOpts)
4 (0.74 % of base) : 20395.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (FullOpts)
4 (0.70 % of base) : 19133.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
4 (0.97 % of base) : 5628.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
4 (0.30 % of base) : 11079.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (FullOpts)
4 (0.28 % of base) : 22499.dasm - System.Diagnostics.Process:ForkAndExecProcess(System.Diagnostics.ProcessStartInfo,System.String,System.String[],System.String[],System.String,ubyte,uint,uint,uint[],byref,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
4 (0.75 % of base) : 12153.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
Top method improvements (bytes):
-440 (-10.74 % of base) : 8924.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-140 (-6.01 % of base) : 16749.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-84 (-3.42 % of base) : 7114.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-76 (-12.84 % of base) : 28653.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-64 (-9.70 % of base) : 20586.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 20697.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-60 (-1.99 % of base) : 7087.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-48 (-2.17 % of base) : 15307.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-44 (-1.68 % of base) : 18761.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-40 (-1.44 % of base) : 8881.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:.ctor(System.Type):this (FullOpts)
-36 (-2.47 % of base) : 7160.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (FullOpts)
-36 (-6.04 % of base) : 1796.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-36 (-0.33 % of base) : 9630.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-32 (-3.15 % of base) : 16223.dasm - Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:ParseStream(System.IO.Stream):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
-32 (-10.26 % of base) : 5624.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[int,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,int,System.__Canon,System.Exception):this (FullOpts)
-32 (-12.90 % of base) : 17646.dasm - System.Text.Json.Document.Tests.Perf_EnumerateArray:Parse():this (FullOpts)
-32 (-12.90 % of base) : 28373.dasm - System.Text.Json.Document.Tests.Perf_EnumerateObject:Parse():this (FullOpts)
-28 (-3.83 % of base) : 6978.dasm - System.Reflection.Emit.RuntimeMethodBuilder:GetTokenNoLock():int:this (FullOpts)
-28 (-3.06 % of base) : 6985.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenInternal(System.Reflection.MethodBase,System.Type[],ubyte):int:this (FullOpts)
-24 (-3.09 % of base) : 6929.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (FullOpts)
Top method regressions (percentages):
16 (12.50 % of base) : 1281.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
60 (5.79 % of base) : 1118.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
4 (1.82 % of base) : 9565.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
8 (1.56 % of base) : 9856.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
20 (1.24 % of base) : 12847.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
4 (1.15 % of base) : 10421.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
8 (1.06 % of base) : 33585.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
4 (1.02 % of base) : 1837.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitCachingMemberAccessor+Cache`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:EvictStaleCacheEntries(long):this (FullOpts)
112 (1.00 % of base) : 22049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
4 (0.97 % of base) : 5628.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
12 (0.96 % of base) : 1065.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
48 (0.79 % of base) : 22037.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
4 (0.76 % of base) : 5024.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreatePropertySetter(System.Reflection.PropertyInfo,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
4 (0.75 % of base) : 12153.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
4 (0.74 % of base) : 20395.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (FullOpts)
4 (0.70 % of base) : 19133.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
4 (0.60 % of base) : 6112.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
16 (0.46 % of base) : 7656.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
56 (0.45 % of base) : 3830.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
4 (0.37 % of base) : 2554.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (FullOpts)
Top method improvements (percentages):
-20 (-14.29 % of base) : 20547.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-16 (-14.29 % of base) : 10708.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
-16 (-13.33 % of base) : 32927.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
-32 (-12.90 % of base) : 17646.dasm - System.Text.Json.Document.Tests.Perf_EnumerateArray:Parse():this (FullOpts)
-32 (-12.90 % of base) : 28373.dasm - System.Text.Json.Document.Tests.Perf_EnumerateObject:Parse():this (FullOpts)
-76 (-12.84 % of base) : 28653.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-16 (-12.50 % of base) : 4363.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-16 (-12.12 % of base) : 3496.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-440 (-10.74 % of base) : 8924.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-32 (-10.26 % of base) : 5624.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[int,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,int,System.__Canon,System.Exception):this (FullOpts)
-64 (-9.70 % of base) : 20586.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-16 (-9.52 % of base) : 3476.dasm - System.Formats.Asn1.AsnDecoder:TryReadInt32(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-64 (-7.41 % of base) : 20697.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-16 (-6.90 % of base) : 3483.dasm - System.Formats.Asn1.AsnDecoder:ReadObjectIdentifier(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.String (FullOpts)
-8 (-6.25 % of base) : 33090.dasm - System.Text.Json.Serialization.Tests.ReadJson`1[int]:DeserializeFromUtf8Bytes():int:this (FullOpts)
-8 (-6.06 % of base) : 5411.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-36 (-6.04 % of base) : 1796.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-140 (-6.01 % of base) : 16749.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-24 (-5.66 % of base) : 9564.dasm - System.Text.Json.Node.Tests.Perf_ParseThenWrite:ParseThenWrite():this (FullOpts)
-8 (-5.56 % of base) : 17812.dasm - System.Text.Json.Serialization.Tests.ReadJson`1[MicroBenchmarks.Serializers.SimpleStructWithProperties]:DeserializeFromUtf8Bytes():MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
benchmarks.run_pgo.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 81135316 (overridden on cmd)
Total bytes of diff: 81067644 (overridden on cmd)
Total bytes of delta: -67672 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 134820.dasm (0.85 % of base)
8 : 85059.dasm (0.66 % of base)
4 : 94487.dasm (5.88 % of base)
4 : 138925.dasm (0.88 % of base)
4 : 78859.dasm (0.85 % of base)
4 : 85393.dasm (6.67 % of base)
4 : 85640.dasm (0.02 % of base)
4 : 23894.dasm (1.00 % of base)
4 : 94233.dasm (0.09 % of base)
Top file improvements (bytes):
-296 : 29027.dasm (-1.50 % of base)
-288 : 81532.dasm (-5.22 % of base)
-272 : 76173.dasm (-5.48 % of base)
-248 : 77878.dasm (-10.65 % of base)
-248 : 81066.dasm (-9.63 % of base)
-208 : 93497.dasm (-5.46 % of base)
-196 : 81610.dasm (-4.73 % of base)
-192 : 75813.dasm (-1.85 % of base)
-184 : 81513.dasm (-2.36 % of base)
-184 : 82740.dasm (-3.00 % of base)
-176 : 152941.dasm (-2.57 % of base)
-176 : 15660.dasm (-2.57 % of base)
-172 : 76832.dasm (-2.72 % of base)
-172 : 76908.dasm (-3.70 % of base)
-168 : 25158.dasm (-2.37 % of base)
-168 : 153302.dasm (-4.25 % of base)
-168 : 16075.dasm (-4.25 % of base)
-160 : 77318.dasm (-4.69 % of base)
-152 : 78205.dasm (-2.85 % of base)
-152 : 81853.dasm (-2.85 % of base)
60 total files with Code Size differences (51 improved, 9 regressed), 31 unchanged.
Top method regressions (bytes):
12 (0.85 % of base) : 134820.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
8 (0.66 % of base) : 85059.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
4 (0.85 % of base) : 78859.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (6.67 % of base) : 85393.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
4 (0.02 % of base) : 85640.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSimpleBinaryOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
4 (0.09 % of base) : 94233.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantTriviaOnly>d__175:MoveNext():ubyte:this (Tier1)
4 (5.88 % of base) : 94487.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (1.00 % of base) : 23894.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
4 (0.88 % of base) : 138925.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String,int,System.TimeSpan):System.Text.RegularExpressions.Regex (Instrumented Tier0)
Top method improvements (bytes):
-296 (-1.50 % of base) : 29027.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Instrumented Tier0)
-288 (-5.22 % of base) : 81532.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-272 (-5.48 % of base) : 76173.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-248 (-9.63 % of base) : 81066.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-248 (-10.65 % of base) : 77878.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-208 (-5.46 % of base) : 93497.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Instrumented Tier0)
-196 (-4.73 % of base) : 81610.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Instrumented Tier0)
-192 (-1.85 % of base) : 75813.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-184 (-3.00 % of base) : 82740.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-184 (-2.36 % of base) : 81513.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Instrumented Tier0)
-176 (-2.57 % of base) : 152941.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-176 (-2.57 % of base) : 15660.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-172 (-3.70 % of base) : 76908.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-172 (-2.72 % of base) : 76832.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-168 (-4.25 % of base) : 153302.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-168 (-4.25 % of base) : 16075.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-168 (-2.37 % of base) : 25158.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Instrumented Tier0)
-160 (-4.69 % of base) : 77318.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-152 (-2.85 % of base) : 78205.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
-152 (-2.85 % of base) : 81853.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
Top method regressions (percentages):
4 (6.67 % of base) : 85393.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
4 (5.88 % of base) : 94487.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (1.00 % of base) : 23894.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
4 (0.88 % of base) : 138925.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String,int,System.TimeSpan):System.Text.RegularExpressions.Regex (Instrumented Tier0)
12 (0.85 % of base) : 134820.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.85 % of base) : 78859.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
8 (0.66 % of base) : 85059.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
4 (0.09 % of base) : 94233.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantTriviaOnly>d__175:MoveNext():ubyte:this (Tier1)
4 (0.02 % of base) : 85640.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindSimpleBinaryOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
Top method improvements (percentages):
-96 (-29.27 % of base) : 82612.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-96 (-29.27 % of base) : 77715.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 82651.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-88 (-27.16 % of base) : 77788.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 94049.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-44 (-26.83 % of base) : 93540.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-24 (-22.22 % of base) : 62439.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.Nullable`1[System.Guid]]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Nullable`1[System.Guid]):this (Tier0)
-48 (-22.22 % of base) : 93474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-28 (-21.88 % of base) : 24310.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
-28 (-21.88 % of base) : 7269.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-56 (-20.90 % of base) : 76398.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-40 (-20.00 % of base) : 60417.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-36 (-18.75 % of base) : 79662.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Instrumented Tier0)
-36 (-18.75 % of base) : 75459.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-24 (-18.75 % of base) : 44857.dasm - System.Xml.Serialization.XmlSerializer:Deserialize(System.Xml.XmlReader,System.String):System.Object:this (Tier0)
-88 (-18.33 % of base) : 93471.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-40 (-17.86 % of base) : 94050.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-40 (-17.86 % of base) : 93541.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-16.67 % of base) : 77809.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-16.67 % of base) : 93942.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Instrumented Tier0)
benchmarks.run_tiered.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 24708980 (overridden on cmd)
Total bytes of diff: 24649524 (overridden on cmd)
Total bytes of delta: -59456 (-0.24 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
60 : 11633.dasm (5.79 % of base)
48 : 51125.dasm (0.80 % of base)
24 : 51042.dasm (0.85 % of base)
20 : 38009.dasm (0.78 % of base)
12 : 25183.dasm (0.96 % of base)
12 : 25187.dasm (2.86 % of base)
8 : 63887.dasm (1.06 % of base)
8 : 55884.dasm (1.57 % of base)
4 : 28990.dasm (0.76 % of base)
4 : 29825.dasm (0.75 % of base)
4 : 45142.dasm (0.85 % of base)
4 : 48851.dasm (0.30 % of base)
4 : 51192.dasm (5.88 % of base)
4 : 45740.dasm (0.70 % of base)
4 : 47578.dasm (0.10 % of base)
4 : 47762.dasm (0.74 % of base)
4 : 47771.dasm (0.88 % of base)
Top file improvements (bytes):
-248 : 44131.dasm (-10.65 % of base)
-208 : 50584.dasm (-6.68 % of base)
-172 : 43083.dasm (-2.72 % of base)
-172 : 43154.dasm (-3.70 % of base)
-160 : 43627.dasm (-4.69 % of base)
-140 : 44063.dasm (-11.82 % of base)
-108 : 42373.dasm (-4.08 % of base)
-104 : 44067.dasm (-8.44 % of base)
-96 : 44000.dasm (-29.27 % of base)
-96 : 44253.dasm (-2.12 % of base)
-92 : 44085.dasm (-16.67 % of base)
-88 : 44065.dasm (-27.16 % of base)
-88 : 50535.dasm (-6.81 % of base)
-88 : 50560.dasm (-18.33 % of base)
-88 : 306.dasm (-10.95 % of base)
-84 : 41536.dasm (-10.40 % of base)
-80 : 44009.dasm (-5.13 % of base)
-80 : 44818.dasm (-13.16 % of base)
-80 : 43979.dasm (-5.21 % of base)
-76 : 26101.dasm (-1.94 % of base)
63 total files with Code Size differences (46 improved, 17 regressed), 23 unchanged.
Top method regressions (bytes):
60 (5.79 % of base) : 11633.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
48 (0.80 % of base) : 51125.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
24 (0.85 % of base) : 51042.dasm - Microsoft.CodeAnalysis.CSharp.LocalScopeBinder:BuildLocals(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (Tier1)
20 (0.78 % of base) : 38009.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
12 (2.86 % of base) : 25187.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
12 (0.96 % of base) : 25183.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
8 (1.06 % of base) : 63887.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
8 (1.57 % of base) : 55884.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
4 (0.85 % of base) : 45142.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (0.88 % of base) : 47771.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitReference(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.Emit.EmitContext) (Tier1)
4 (0.10 % of base) : 47578.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundBlock (Tier1)
4 (0.74 % of base) : 47762.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (Tier1)
4 (0.70 % of base) : 45740.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
4 (5.88 % of base) : 51192.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (0.30 % of base) : 48851.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
4 (0.75 % of base) : 29825.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.76 % of base) : 28990.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreatePropertySetter(System.Reflection.PropertyInfo,System.Type):System.Reflection.Emit.DynamicMethod (Tier1)
Top method improvements (bytes):
-248 (-10.65 % of base) : 44131.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-208 (-6.68 % of base) : 50584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier0)
-172 (-3.70 % of base) : 43154.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-172 (-2.72 % of base) : 43083.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-160 (-4.69 % of base) : 43627.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-140 (-11.82 % of base) : 44063.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeCall(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-108 (-4.08 % of base) : 42373.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)
-104 (-8.44 % of base) : 44067.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-96 (-2.12 % of base) : 44253.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Tier0)
-96 (-29.27 % of base) : 44000.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-92 (-16.67 % of base) : 44085.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-6.81 % of base) : 50535.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeclarationStatementParts(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier0)
-88 (-27.16 % of base) : 44065.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-18.33 % of base) : 50560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-88 (-10.95 % of base) : 306.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier0)
-84 (-10.40 % of base) : 41536.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:Create(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,int,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol (Tier0)
-80 (-13.16 % of base) : 44818.dasm - Microsoft.Cci.ReferenceIndexerBase:Visit(Microsoft.Cci.ITypeDefinition):this (Tier0)
-80 (-5.21 % of base) : 43979.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GenerateBaseParameterlessConstructorInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCall (Tier0)
-80 (-5.13 % of base) : 44009.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier0)
-76 (-1.94 % of base) : 26101.dasm - System.Diagnostics.Perf_Activity:.cctor() (Tier0)
Top method regressions (percentages):
4 (5.88 % of base) : 51192.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
60 (5.79 % of base) : 11633.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
12 (2.86 % of base) : 25187.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
8 (1.57 % of base) : 55884.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
8 (1.06 % of base) : 63887.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
12 (0.96 % of base) : 25183.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.88 % of base) : 47771.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitReference(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.Emit.EmitContext) (Tier1)
4 (0.85 % of base) : 45142.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
24 (0.85 % of base) : 51042.dasm - Microsoft.CodeAnalysis.CSharp.LocalScopeBinder:BuildLocals(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (Tier1)
48 (0.80 % of base) : 51125.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
20 (0.78 % of base) : 38009.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
4 (0.76 % of base) : 28990.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreatePropertySetter(System.Reflection.PropertyInfo,System.Type):System.Reflection.Emit.DynamicMethod (Tier1)
4 (0.75 % of base) : 29825.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.74 % of base) : 47762.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (Tier1)
4 (0.70 % of base) : 45740.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
4 (0.30 % of base) : 48851.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
4 (0.10 % of base) : 47578.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.BoundNode,ubyte,byref,byref,byref,byref):Microsoft.CodeAnalysis.CSharp.BoundBlock (Tier1)
Top method improvements (percentages):
-96 (-29.27 % of base) : 44000.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 44065.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 50617.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-24 (-22.22 % of base) : 2604.dasm - BenchmarkDotNet.Characteristics.Characteristic`1[System.Nullable`1[System.Guid]]:set_Item(BenchmarkDotNet.Characteristics.CharacteristicObject,System.Nullable`1[System.Guid]):this (Tier0)
-48 (-22.22 % of base) : 50563.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-28 (-21.88 % of base) : 8554.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-56 (-20.90 % of base) : 42602.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-40 (-20.00 % of base) : 35576.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-36 (-18.75 % of base) : 41641.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-24 (-18.75 % of base) : 28454.dasm - System.Xml.Serialization.XmlSerializer:Deserialize(System.Xml.XmlReader,System.String):System.Object:this (Tier0)
-88 (-18.33 % of base) : 50560.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-40 (-17.86 % of base) : 50618.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-16.67 % of base) : 44085.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-20 (-15.62 % of base) : 42356.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInExpressionBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken):ubyte (Tier0)
-28 (-15.56 % of base) : 26115.dasm - System.Diagnostics.ActivitySource:StartActivity(System.String,int,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset):System.Diagnostics.Activity:this (Tier0)
-32 (-15.38 % of base) : 42352.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.BaseMethodDeclarationSyntax):ubyte (Tier0)
-40 (-15.15 % of base) : 50551.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier0)
-20 (-15.15 % of base) : 41498.dasm - Microsoft.CodeAnalysis.PEModule:HasFixedBufferAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier0)
-24 (-15.00 % of base) : 50592.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.Location):this (Tier0)
-48 (-14.63 % of base) : 43183.dasm - Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData:CreateIfNeeded(Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]):Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData (Tier0)
coreclr_tests.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 509824836 (overridden on cmd)
Total bytes of diff: 509451908 (overridden on cmd)
Total bytes of delta: -372928 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
116 : 294005.dasm (0.15 % of base)
112 : 535878.dasm (1.00 % of base)
64 : 226258.dasm (0.78 % of base)
64 : 296647.dasm (0.78 % of base)
64 : 264975.dasm (0.77 % of base)
64 : 307494.dasm (0.78 % of base)
48 : 535866.dasm (0.78 % of base)
40 : 303883.dasm (0.49 % of base)
40 : 382207.dasm (0.49 % of base)
40 : 386975.dasm (0.48 % of base)
36 : 543758.dasm (13.85 % of base)
24 : 565475.dasm (3.75 % of base)
20 : 30991.dasm (0.88 % of base)
16 : 520961.dasm (0.52 % of base)
16 : 571188.dasm (0.28 % of base)
12 : 243156.dasm (0.91 % of base)
12 : 418740.dasm (0.18 % of base)
12 : 533943.dasm (0.31 % of base)
12 : 542596.dasm (1.92 % of base)
12 : 624059.dasm (0.96 % of base)
Top file improvements (bytes):
-444 : 299740.dasm (-3.56 % of base)
-440 : 532060.dasm (-10.74 % of base)
-424 : 309787.dasm (-1.08 % of base)
-328 : 541619.dasm (-20.25 % of base)
-316 : 541618.dasm (-14.31 % of base)
-304 : 538976.dasm (-19.49 % of base)
-300 : 539550.dasm (-19.23 % of base)
-300 : 538975.dasm (-13.54 % of base)
-284 : 300966.dasm (-2.47 % of base)
-280 : 539549.dasm (-13.11 % of base)
-280 : 539010.dasm (-16.87 % of base)
-272 : 539568.dasm (-17.62 % of base)
-272 : 260078.dasm (-5.48 % of base)
-264 : 538392.dasm (-10.73 % of base)
-264 : 539009.dasm (-10.86 % of base)
-260 : 285345.dasm (-2.12 % of base)
-256 : 540331.dasm (-11.23 % of base)
-256 : 539212.dasm (-18.55 % of base)
-252 : 538813.dasm (-16.71 % of base)
-252 : 538393.dasm (-16.24 % of base)
92 total files with Code Size differences (54 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
116 (0.15 % of base) : 294005.dasm - Test_1000w1d.testout1:Func_0():int (Tier0)
112 (1.00 % of base) : 535878.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
64 (0.78 % of base) : 226258.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
64 (0.78 % of base) : 296647.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
64 (0.77 % of base) : 264975.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
64 (0.78 % of base) : 307494.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
48 (0.78 % of base) : 535866.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
40 (0.49 % of base) : 303883.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
40 (0.49 % of base) : 382207.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
40 (0.48 % of base) : 386975.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
36 (13.85 % of base) : 543758.dasm - (dynamicClass):ABIStress_TailCaller965(ABIStress.S12U,System.Int128,System.Numerics.Vector`1[int],ABIStress.S9U,ABIStress.I128_1,ABIStress.S4U,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S5U,double,ABIStress.S6U,ABIStress.Hfa2,System.Runtime.Intrinsics.Vector128`1[int],ubyte,long):int (FullOpts)
24 (3.75 % of base) : 565475.dasm - DefaultNamespace.DoubLinkBig:.ctor(int):this (FullOpts)
20 (0.88 % of base) : 30991.dasm - VectorMgdMgd+HVATests`1[ubyte]:doTests():this (Tier0)
16 (0.52 % of base) : 520961.dasm - ResolveUnmanagedDllTests:ValidateLoadUnmanagedDll() (FullOpts)
16 (0.28 % of base) : 571188.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
12 (1.92 % of base) : 542596.dasm - (dynamicClass):ABIStress_TailCaller341(ABIStress.S5U,ABIStress.S15U,ABIStress.S13U,ABIStress.S8P,int,ABIStress.S2U,ABIStress.S2P,ABIStress.I128_1,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S16U,ABIStress.S6U,ABIStress.S14U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S10U,ABIStress.S2P,int,System.Runtime.Intrinsics.Vector256`1[int],long,System.Int128,ABIStress.S14U,System.Runtime.Intrinsics.Vector256`1[int],System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S6U,ABIStress.S9U):int (FullOpts)
12 (0.18 % of base) : 418740.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
12 (0.31 % of base) : 533943.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (0.96 % of base) : 624059.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
12 (0.91 % of base) : 243156.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (Tier1)
Top method improvements (bytes):
-444 (-3.56 % of base) : 299740.dasm - JitTest_huge_struct_Arrays_il.Test:Main():int (MinOpts)
-440 (-10.74 % of base) : 532060.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-424 (-1.08 % of base) : 309787.dasm - DefaultNamespace.cb6054ToByte_all:runTest():ubyte:this (Instrumented Tier0)
-328 (-20.25 % of base) : 541619.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S2U,ABIStress.S11U,ABIStress.S11U,ABIStress.S16U,ABIStress.S6U,ABIStress.S6U,ABIStress.S4P,ABIStress.S14U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S13U,ABIStress.Hfa1,double,ABIStress.S10U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S5U,ABIStress.S9U,ABIStress.S4U,ABIStress.S12U,ABIStress.S2U,ABIStress.Hfa2,float,ABIStress.S6U,ABIStress.S32U):int (MinOpts)
-316 (-14.31 % of base) : 541618.dasm - (dynamicClass):ABIStress_PInvoker929(ABIStress.S17U,ABIStress.S10U,double,System.Numerics.Vector`1[int],System.Int128,int,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S7U,ABIStress.S8P,float,ABIStress.S8U,ABIStress.S15U,ABIStress.S16U,ABIStress.S6U,ABIStress.S31U,ABIStress.S2P,double,ABIStress.S7U,ABIStress.S3U,ABIStress.I128_2,ABIStress.Hfa1,short):int[] (MinOpts)
-304 (-19.49 % of base) : 538976.dasm - (dynamicClass):IL_STUB_PInvoke(double,ABIStress.S13U,ABIStress.S6U,ABIStress.S14U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,ABIStress.S5U,ABIStress.S2U,ABIStress.Hfa1,long,ABIStress.S11U,ABIStress.S12U,ABIStress.S1P,ABIStress.S32U,ABIStress.S10U,long,ABIStress.S15U,ABIStress.S11U,ABIStress.S16U,ABIStress.S4P,ABIStress.S8U,ABIStress.S10U,ABIStress.S32U):int (MinOpts)
-300 (-13.54 % of base) : 538975.dasm - (dynamicClass):ABIStress_PInvoker179(ABIStress.S14U,ABIStress.Hfa2,ABIStress.S8P,ABIStress.I128_2,ABIStress.S16U,ABIStress.S14U,float,ABIStress.I128_1,System.Int128,ABIStress.S14U,short,double,System.Numerics.Vector`1[int],ABIStress.S10U,ABIStress.I128_2,ABIStress.I128_1,ABIStress.S14U,ABIStress.I128_1,ABIStress.S13U,System.Runtime.Intrinsics.Vector128`1[int]):int[] (MinOpts)
-300 (-19.23 % of base) : 539550.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S12U,ABIStress.S2P,ABIStress.S5U,ABIStress.S16U,ABIStress.S15U,ABIStress.S5U,ABIStress.S2P,ABIStress.S15U,ABIStress.S4P,ABIStress.S13U,ABIStress.S3U,long,ABIStress.S8U,ABIStress.S12U,ABIStress.S9U,ABIStress.S9U,ABIStress.S8U,double,double,ABIStress.S3U,ABIStress.S1P,ABIStress.S14U,ABIStress.S6U,ABIStress.S2U,ABIStress.S31U):int (MinOpts)
-284 (-2.47 % of base) : 300966.dasm - JitTest_huge_struct_huge_il.Test:Main():int (Instrumented Tier0)
-280 (-13.11 % of base) : 539549.dasm - (dynamicClass):ABIStress_PInvoker334(ABIStress.S12U,ABIStress.S8P,ABIStress.S13U,ABIStress.S6U,short,ABIStress.S4P,ABIStress.S5U):int[] (MinOpts)
-280 (-16.87 % of base) : 539010.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S14U,ABIStress.S2P,float,ABIStress.S15U,ABIStress.S4P,ABIStress.S10U,ABIStress.S13U,ABIStress.S15U,ABIStress.S11U,ABIStress.S2P,ubyte,ABIStress.S8U,ABIStress.S31U,ABIStress.S4U,ABIStress.S14U,ABIStress.S11U,ABIStress.S10U,ABIStress.S15U,double,ABIStress.S17U,short,ABIStress.S31U,ABIStress.Hfa1,ABIStress.Hfa1,ABIStress.S8U):int (MinOpts)
-272 (-17.62 % of base) : 539568.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S16U,ABIStress.S6U,ABIStress.S14U,ABIStress.S11U,ABIStress.S17U,ABIStress.S12U,ubyte,ABIStress.S13U,ABIStress.S2U,ABIStress.S4U,ABIStress.S2P,short,ABIStress.S8U,ABIStress.S17U,ubyte,ABIStress.S3U,ABIStress.Hfa1,ABIStress.S8U,ABIStress.S15U,ABIStress.S11U,ABIStress.S15U,ABIStress.S6U,ABIStress.S2P,ABIStress.S32U):int (MinOpts)
-272 (-5.48 % of base) : 260078.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-264 (-10.86 % of base) : 539009.dasm - (dynamicClass):ABIStress_PInvoker188(short,ABIStress.S14U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S12U,ABIStress.S15U,ABIStress.S5U,double):int[] (MinOpts)
-264 (-10.73 % of base) : 538392.dasm - (dynamicClass):ABIStress_PInvoker28(ABIStress.S8U,ABIStress.I128_1,ABIStress.S6U,ABIStress.S5U,ABIStress.S2U,ABIStress.S1P,ABIStress.S9U,ABIStress.Hfa2,ABIStress.S11U,ABIStress.I128_2,ABIStress.S14U,ABIStress.S9U,ABIStress.I128_2,ABIStress.S4U,ABIStress.S1P,ABIStress.S17U,ABIStress.S7U,double):int[] (MinOpts)
-260 (-2.12 % of base) : 285345.dasm - JitTest_huge_struct_huge_il.Test:Main():int (MinOpts)
-256 (-11.23 % of base) : 540331.dasm - (dynamicClass):ABIStress_PInvoker552(ABIStress.S11U,ABIStress.S5U,ABIStress.S10U,ABIStress.S4U,float,ABIStress.Hfa2,ubyte,ABIStress.Hfa1,ABIStress.S13U,double,ABIStress.S12U,ABIStress.I128_2,ABIStress.S8P,ABIStress.S13U,ABIStress.S10U):int[] (MinOpts)
-256 (-18.55 % of base) : 539212.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S17U,long,ABIStress.S14U,ABIStress.S15U,int,ABIStress.Hfa2,ubyte,ABIStress.S15U,float,double,long,ABIStress.S17U,ABIStress.S4U,ABIStress.S15U,short,ABIStress.S10U,double,ABIStress.S15U,ABIStress.S32U):int (MinOpts)
-252 (-16.24 % of base) : 538393.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S3U,ABIStress.S4P,ABIStress.S9U,ABIStress.Hfa1,ABIStress.S16U,ABIStress.S7U,ubyte,ABIStress.Hfa1,ABIStress.S3U,ABIStress.S13U,ABIStress.S31U,ABIStress.S12U,ABIStress.S16U,ABIStress.S8P,ABIStress.S2U,ABIStress.S2P,ABIStress.S4U,ABIStress.S2P,ABIStress.S2U,ABIStress.S4U,ABIStress.S13U,ABIStress.S6U,ABIStress.S31U,ABIStress.S4U):int (MinOpts)
-252 (-16.71 % of base) : 538813.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S15U,ubyte,ABIStress.Hfa2,ABIStress.S12U,long,ABIStress.S8U,long,ABIStress.S3U,ABIStress.S15U,ABIStress.S2P,ABIStress.S7U,ABIStress.S16U,float,ABIStress.S3U,short,ABIStress.S32U,ABIStress.S11U,ABIStress.S16U,long,ABIStress.Hfa1,ABIStress.S13U,ABIStress.S7U,ABIStress.S4U,ABIStress.S17U):int (MinOpts)
Top method regressions (percentages):
36 (13.85 % of base) : 543758.dasm - (dynamicClass):ABIStress_TailCaller965(ABIStress.S12U,System.Int128,System.Numerics.Vector`1[int],ABIStress.S9U,ABIStress.I128_1,ABIStress.S4U,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S5U,double,ABIStress.S6U,ABIStress.Hfa2,System.Runtime.Intrinsics.Vector128`1[int],ubyte,long):int (FullOpts)
4 (5.88 % of base) : 444581.dasm - SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
4 (3.85 % of base) : 622340.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
4 (3.85 % of base) : 622371.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
4 (3.85 % of base) : 430743.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (FullOpts)
4 (3.85 % of base) : 430785.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (FullOpts)
24 (3.75 % of base) : 565475.dasm - DefaultNamespace.DoubLinkBig:.ctor(int):this (FullOpts)
8 (3.03 % of base) : 453692.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 463928.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 463912.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 453607.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
8 (3.03 % of base) : 463880.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
8 (3.03 % of base) : 457319.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MaxPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 457303.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MaxPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 457800.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 472076.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 457784.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 472060.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 457735.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
8 (3.03 % of base) : 472028.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
Top method improvements (percentages):
-48 (-30.00 % of base) : 542550.dasm - (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
-96 (-29.27 % of base) : 261738.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-80 (-27.40 % of base) : 542050.dasm - (dynamicClass):ABIStress_TailCaller65(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S4P,ABIStress.S1P,ABIStress.S11U,ABIStress.Hfa2,ABIStress.S6U,long,long,System.Int128,ABIStress.S3U,ABIStress.S13U,ABIStress.S2P,ABIStress.S8P,ABIStress.S16U,short,ABIStress.S15U,ABIStress.S2P,int,ABIStress.S10U):int (FullOpts)
-88 (-27.16 % of base) : 261817.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 263980.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-16 (-26.67 % of base) : 543042.dasm - (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
-72 (-25.35 % of base) : 543499.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-80 (-24.39 % of base) : 542901.dasm - (dynamicClass):ABIStress_TailCaller499(ABIStress.S14U,short,long,short,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S7U,ABIStress.S3U,float,ABIStress.S10U,ABIStress.S15U,ABIStress.S5U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S16U,System.Int128,ABIStress.S9U,ubyte,short,ABIStress.S7U,ABIStress.S8P,System.Int128,ubyte,ABIStress.S6U,ABIStress.Hfa1,ABIStress.S14U,ABIStress.S15U):int (FullOpts)
-64 (-24.24 % of base) : 542703.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-24 (-23.08 % of base) : 542054.dasm - (dynamicClass):ABIStress_TailCaller67(ABIStress.S14U,ABIStress.S14U,ABIStress.S8U,System.Int128,ABIStress.S15U,ABIStress.S9U,ABIStress.S9U,ABIStress.S4P,short,ABIStress.S8P,ABIStress.S14U,System.Numerics.Vector`1[int],ABIStress.I128_1):int (FullOpts)
-88 (-22.68 % of base) : 542272.dasm - (dynamicClass):ABIStress_TailCaller176(ABIStress.S8U,ABIStress.I128_1,ABIStress.S15U,ABIStress.S11U,ABIStress.I128_1,ABIStress.S16U,ABIStress.S13U,ABIStress.S11U,ABIStress.S10U,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S13U,short,ABIStress.S12U,ABIStress.S6U,short,ABIStress.S8U,ABIStress.S14U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S7U):int (FullOpts)
-48 (-22.22 % of base) : 263922.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-92 (-21.90 % of base) : 543594.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-56 (-20.90 % of base) : 260306.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-100 (-20.49 % of base) : 542999.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-328 (-20.25 % of base) : 541619.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S2U,ABIStress.S11U,ABIStress.S11U,ABIStress.S16U,ABIStress.S6U,ABIStress.S6U,ABIStress.S4P,ABIStress.S14U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S13U,ABIStress.Hfa1,double,ABIStress.S10U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S5U,ABIStress.S9U,ABIStress.S4U,ABIStress.S12U,ABIStress.S2U,ABIStress.Hfa2,float,ABIStress.S6U,ABIStress.S32U):int (MinOpts)
-68 (-20.24 % of base) : 542140.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-304 (-19.49 % of base) : 538976.dasm - (dynamicClass):IL_STUB_PInvoke(double,ABIStress.S13U,ABIStress.S6U,ABIStress.S14U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,ABIStress.S5U,ABIStress.S2U,ABIStress.Hfa1,long,ABIStress.S11U,ABIStress.S12U,ABIStress.S1P,ABIStress.S32U,ABIStress.S10U,long,ABIStress.S15U,ABIStress.S11U,ABIStress.S16U,ABIStress.S4P,ABIStress.S8U,ABIStress.S10U,ABIStress.S32U):int (MinOpts)
-300 (-19.23 % of base) : 539550.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S12U,ABIStress.S2P,ABIStress.S5U,ABIStress.S16U,ABIStress.S15U,ABIStress.S5U,ABIStress.S2P,ABIStress.S15U,ABIStress.S4P,ABIStress.S13U,ABIStress.S3U,long,ABIStress.S8U,ABIStress.S12U,ABIStress.S9U,ABIStress.S9U,ABIStress.S8U,double,double,ABIStress.S3U,ABIStress.S1P,ABIStress.S14U,ABIStress.S6U,ABIStress.S2U,ABIStress.S31U):int (MinOpts)
-212 (-19.13 % of base) : 540635.dasm - (dynamicClass):ABIStress_PInvoker635(ubyte,ABIStress.S3U,System.Numerics.Vector`1[int],ABIStress.S14U,ABIStress.S9U,ABIStress.Hfa1,ABIStress.S5U,int,System.Int128,float,ABIStress.S17U,ABIStress.S3U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S9U,ABIStress.S31U,ABIStress.I128_2,ABIStress.S13U,ABIStress.S4U,ABIStress.S32U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.I128_2,ABIStress.S15U,ABIStress.I128_1,ABIStress.S2U):int[] (MinOpts)
libraries.crossgen2.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55738036 (overridden on cmd)
Total bytes of diff: 55726032 (overridden on cmd)
Total bytes of delta: -12004 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
96 : 67171.dasm (3.10 % of base)
64 : 66313.dasm (4.19 % of base)
60 : 53017.dasm (2.66 % of base)
60 : 73685.dasm (7.81 % of base)
48 : 144288.dasm (2.65 % of base)
48 : 191411.dasm (2.65 % of base)
44 : 172651.dasm (0.16 % of base)
40 : 199088.dasm (5.35 % of base)
40 : 66172.dasm (2.78 % of base)
32 : 69106.dasm (3.45 % of base)
32 : 101646.dasm (3.59 % of base)
32 : 183160.dasm (5.59 % of base)
32 : 101648.dasm (5.10 % of base)
28 : 10674.dasm (1.03 % of base)
28 : 144615.dasm (3.91 % of base)
28 : 223009.dasm (4.96 % of base)
28 : 144648.dasm (3.87 % of base)
28 : 191752.dasm (3.87 % of base)
28 : 207889.dasm (3.74 % of base)
28 : 34383.dasm (3.63 % of base)
Top file improvements (bytes):
-1280 : 145847.dasm (-5.26 % of base)
-1280 : 192908.dasm (-5.26 % of base)
-140 : 197916.dasm (-4.77 % of base)
-128 : 198080.dasm (-11.51 % of base)
-124 : 7350.dasm (-4.59 % of base)
-92 : 130742.dasm (-0.93 % of base)
-88 : 101740.dasm (-7.03 % of base)
-88 : 197998.dasm (-5.39 % of base)
-72 : 84121.dasm (-14.88 % of base)
-72 : 106545.dasm (-2.96 % of base)
-68 : 163193.dasm (-3.93 % of base)
-64 : 200254.dasm (-4.23 % of base)
-64 : 105464.dasm (-5.50 % of base)
-64 : 48392.dasm (-10.13 % of base)
-60 : 48061.dasm (-0.19 % of base)
-60 : 100638.dasm (-1.73 % of base)
-56 : 153320.dasm (-6.01 % of base)
-56 : 177275.dasm (-2.92 % of base)
-56 : 188334.dasm (-9.33 % of base)
-56 : 98270.dasm (-1.72 % of base)
79 total files with Code Size differences (44 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
96 (3.10 % of base) : 67171.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MakeSynthesizedTupleMembers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
64 (4.19 % of base) : 66313.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
60 (7.81 % of base) : 73685.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+<>c__DisplayClass35_0:<SynthesizeClosureEnvironments>g__MakeFrame|1(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+ClosureEnvironment):Microsoft.CodeAnalysis.CSharp.SynthesizedClosureEnvironment:this (FullOpts)
60 (2.66 % of base) : 53017.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeParameterConstraints(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]):this (FullOpts)
48 (2.65 % of base) : 144288.dasm - Microsoft.Cci.PdbWriter:DefineNamespaceScopes(Microsoft.Cci.IMethodBody):this (FullOpts)
48 (2.65 % of base) : 191411.dasm - Microsoft.Cci.PdbWriter:DefineNamespaceScopes(Microsoft.Cci.IMethodBody):this (FullOpts)
44 (0.16 % of base) : 172651.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
40 (2.78 % of base) : 66172.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpDefinitionMap:CreateLocalSlotMap(Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.LocalInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLocalInfo] (FullOpts)
40 (5.35 % of base) : 199088.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+DiagnosticDescriptorSet:ToSortedList():System.Collections.Generic.List`1[System.ValueTuple`3[int,Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
32 (3.45 % of base) : 69106.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:InfiniteFlatteningGraph(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):ubyte (FullOpts)
32 (3.59 % of base) : 101646.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:DoGetSyntaxErrors(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxNodeOrToken):System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.CodeAnalysis.Diagnostic] (FullOpts)
32 (5.10 % of base) : 101648.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
32 (5.59 % of base) : 183160.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
28 (3.91 % of base) : 144615.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (FullOpts)
28 (3.87 % of base) : 144648.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
28 (3.87 % of base) : 191752.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
28 (4.96 % of base) : 223009.dasm - Microsoft.Extensions.Logging.LoggerFilterConfigureOptions:LoadRules(Microsoft.Extensions.Logging.LoggerFilterOptions,Microsoft.Extensions.Configuration.IConfigurationSection,System.String) (FullOpts)
28 (3.74 % of base) : 207889.dasm - System.Linq.Parallel.DecimalAverageAggregationOperator:InternalAggregate(byref):System.Decimal:this (FullOpts)
28 (3.63 % of base) : 34383.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (FullOpts)
28 (1.03 % of base) : 10674.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessSimpleType(System.Xml.Schema.XmlSchemaSimpleType,ubyte):this (FullOpts)
Top method improvements (bytes):
-1280 (-5.26 % of base) : 145847.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-1280 (-5.26 % of base) : 192908.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-140 (-4.77 % of base) : 197916.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-128 (-11.51 % of base) : 198080.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-124 (-4.59 % of base) : 7350.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-92 (-0.93 % of base) : 130742.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-88 (-5.39 % of base) : 197998.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-88 (-7.03 % of base) : 101740.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
-72 (-14.88 % of base) : 84121.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.QuickAttributeHelpers:GetQuickAttributes(System.String,ubyte):ubyte (FullOpts)
-72 (-2.96 % of base) : 106545.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-68 (-3.93 % of base) : 163193.dasm - System.Data.Common.DecimalStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-64 (-10.13 % of base) : 48392.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-4.23 % of base) : 200254.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
-64 (-5.50 % of base) : 105464.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEDeltaAssemblyBuilder+VB$StateMachine_27_GetTopLevelTypeDefinitions:MoveNext():ubyte:this (FullOpts)
-60 (-0.19 % of base) : 48061.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-60 (-1.73 % of base) : 100638.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitFieldOrPropertyInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundFieldOrPropertyInitializer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
-56 (-6.01 % of base) : 153320.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-56 (-1.72 % of base) : 98270.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-56 (-2.92 % of base) : 177275.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameDecode(ubyte[],ubyte,ubyte,ubyte,System.String,System.String,ubyte):System.String (FullOpts)
-56 (-9.33 % of base) : 188334.dasm - System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
Top method regressions (percentages):
60 (7.81 % of base) : 73685.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+<>c__DisplayClass35_0:<SynthesizeClosureEnvironments>g__MakeFrame|1(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+ClosureEnvironment):Microsoft.CodeAnalysis.CSharp.SynthesizedClosureEnvironment:this (FullOpts)
4 (7.14 % of base) : 88016.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
20 (6.02 % of base) : 72648.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
24 (5.83 % of base) : 141890.dasm - System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)
32 (5.59 % of base) : 183160.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
4 (5.56 % of base) : 74957.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (5.56 % of base) : 74956.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (5.56 % of base) : 105483.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (5.56 % of base) : 105482.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
40 (5.35 % of base) : 199088.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+DiagnosticDescriptorSet:ToSortedList():System.Collections.Generic.List`1[System.ValueTuple`3[int,Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
32 (5.10 % of base) : 101648.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
4 (5.00 % of base) : 146102.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 193154.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 146103.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 193155.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
28 (4.96 % of base) : 223009.dasm - Microsoft.Extensions.Logging.LoggerFilterConfigureOptions:LoadRules(Microsoft.Extensions.Logging.LoggerFilterOptions,Microsoft.Extensions.Configuration.IConfigurationSection,System.String) (FullOpts)
20 (4.95 % of base) : 72653.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
24 (4.80 % of base) : 167685.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
4 (4.76 % of base) : 130840.dasm - System.Text.RegularExpressions.Symbolic.MatchingState`1[System.Text.RegularExpressions.Symbolic.BitVector]:IsDeadend(System.Text.RegularExpressions.Symbolic.ISolver`1[System.Text.RegularExpressions.Symbolic.BitVector]):ubyte:this (FullOpts)
4 (4.76 % of base) : 130955.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BitVector]:IsNothing(System.Text.RegularExpressions.Symbolic.ISolver`1[System.Text.RegularExpressions.Symbolic.BitVector]):ubyte:this (FullOpts)
Top method improvements (percentages):
-12 (-21.43 % of base) : 188803.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 188789.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 188814.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-32 (-16.67 % of base) : 190251.dasm - System.Text.Json.JsonDocument:ParseRented(System.Text.Json.PooledByteBufferWriter,System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-72 (-14.88 % of base) : 84121.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.QuickAttributeHelpers:GetQuickAttributes(System.String,ubyte):ubyte (FullOpts)
-28 (-14.29 % of base) : 176973.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-28 (-14.29 % of base) : 209777.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-28 (-14.29 % of base) : 167036.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-24 (-13.64 % of base) : 188890.dasm - System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[System.Decimal],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)
-8 (-13.33 % of base) : 188790.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 188792.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 188796.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 188795.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-32 (-12.90 % of base) : 189750.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-12 (-12.00 % of base) : 188333.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-24 (-11.76 % of base) : 33670.dasm - System.Reflection.Emit.RuntimeModuleBuilder:SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,int,ubyte[],int) (FullOpts)
-128 (-11.51 % of base) : 198080.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-28 (-11.48 % of base) : 193861.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-28 (-11.48 % of base) : 146829.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-11.32 % of base) : 33675.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,int,ubyte[],int):int (FullOpts)
libraries.pmi.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 76022852 (overridden on cmd)
Total bytes of diff: 76011756 (overridden on cmd)
Total bytes of delta: -11096 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
124 : 86787.dasm (1.10 % of base)
112 : 57748.dasm (0.93 % of base)
104 : 87649.dasm (4.48 % of base)
96 : 31194.dasm (2.38 % of base)
84 : 109437.dasm (1.72 % of base)
80 : 86814.dasm (0.80 % of base)
76 : 86553.dasm (1.38 % of base)
76 : 187578.dasm (1.99 % of base)
64 : 86559.dasm (2.12 % of base)
64 : 229159.dasm (1.70 % of base)
56 : 176026.dasm (0.45 % of base)
48 : 35416.dasm (0.44 % of base)
48 : 86310.dasm (0.49 % of base)
48 : 202970.dasm (5.00 % of base)
44 : 112545.dasm (1.04 % of base)
40 : 86698.dasm (0.68 % of base)
40 : 86709.dasm (0.99 % of base)
40 : 91159.dasm (2.24 % of base)
40 : 29457.dasm (0.65 % of base)
40 : 90978.dasm (1.05 % of base)
Top file improvements (bytes):
-440 : 195236.dasm (-8.97 % of base)
-440 : 195329.dasm (-9.30 % of base)
-140 : 18645.dasm (-6.01 % of base)
-128 : 229270.dasm (-11.51 % of base)
-124 : 229099.dasm (-4.32 % of base)
-112 : 243603.dasm (-6.68 % of base)
-112 : 229188.dasm (-5.26 % of base)
-96 : 115168.dasm (-4.69 % of base)
-88 : 285740.dasm (-1.77 % of base)
-88 : 148831.dasm (-6.49 % of base)
-68 : 285783.dasm (-1.63 % of base)
-64 : 33443.dasm (-9.70 % of base)
-64 : 192529.dasm (-7.41 % of base)
-60 : 196146.dasm (-4.16 % of base)
-56 : 35310.dasm (-0.51 % of base)
-48 : 61463.dasm (-1.77 % of base)
-48 : 171340.dasm (-6.09 % of base)
-48 : 21838.dasm (-1.72 % of base)
-48 : 22977.dasm (-0.75 % of base)
-48 : 234116.dasm (-3.58 % of base)
80 total files with Code Size differences (42 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
124 (1.10 % of base) : 86787.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,int,int,int,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this (FullOpts)
112 (0.93 % of base) : 57748.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
104 (4.48 % of base) : 87649.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
96 (2.38 % of base) : 31194.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:<LoadAndValidateAttributes>g__removeObsoleteDiagnosticsForForwardedTypes|197_0(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],byref):this (FullOpts)
84 (1.72 % of base) : 109437.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
80 (0.80 % of base) : 86814.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
76 (1.99 % of base) : 187578.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],byref,byref):this (FullOpts)
76 (1.38 % of base) : 86553.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
64 (1.70 % of base) : 229159.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]):this (FullOpts)
64 (2.12 % of base) : 86559.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ConstructAnonymousDelegateSymbol(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this (FullOpts)
56 (0.45 % of base) : 176026.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.44 % of base) : 35416.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
48 (0.49 % of base) : 86310.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindAttributeNamedArgument(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
48 (5.00 % of base) : 202970.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConvertArithmeticResult(int,System.Type):this (FullOpts)
44 (1.04 % of base) : 112545.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+TypeBinder:LookupDottedName(Microsoft.CodeAnalysis.VisualBasic.LookupResult,Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte,ubyte) (FullOpts)
40 (0.65 % of base) : 29457.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
40 (0.68 % of base) : 86698.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeLocalModifiersAndReportErrors(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (0.99 % of base) : 86709.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:VerifyNameShadowingInMethodBody(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (1.05 % of base) : 90978.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CreateTypeParameterInfoInPart(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterOnTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (2.24 % of base) : 91159.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:CreateWithEvents(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxReference,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol (FullOpts)
Top method improvements (bytes):
-440 (-9.30 % of base) : 195329.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-440 (-8.97 % of base) : 195236.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
-140 (-6.01 % of base) : 18645.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-128 (-11.51 % of base) : 229270.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-124 (-4.32 % of base) : 229099.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-112 (-5.26 % of base) : 229188.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-112 (-6.68 % of base) : 243603.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-96 (-4.69 % of base) : 115168.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-88 (-6.49 % of base) : 148831.dasm - Microsoft.Build.Graph.GraphBuilder:AddEdgesFromProjectReferenceItems(System.Collections.Generic.Dictionary`2[Microsoft.Build.BackEnd.ConfigurationMetadata,Microsoft.Build.Graph.ParsedProject],Microsoft.Build.Graph.GraphBuilder+GraphEdges):this (FullOpts)
-88 (-1.77 % of base) : 285740.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset,ubyte):this (FullOpts)
-68 (-1.63 % of base) : 285783.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-64 (-9.70 % of base) : 33443.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 192529.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-60 (-4.16 % of base) : 196146.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetGenericTypeFromTypeName(System.String,System.Reflection.Assembly):System.Type:this (FullOpts)
-56 (-0.51 % of base) : 35310.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-48 (-1.77 % of base) : 61463.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-48 (-3.58 % of base) : 234116.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
-48 (-6.09 % of base) : 171340.dasm - System.Security.Cryptography.Pkcs.SignerInfo:VerifySignature(System.Security.Cryptography.Pkcs.CmsSignature,System.Security.Cryptography.X509Certificates.X509Certificate2,ubyte):ubyte:this (FullOpts)
-48 (-1.72 % of base) : 21838.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-48 (-0.75 % of base) : 22977.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
Top method regressions (percentages):
16 (6.90 % of base) : 62144.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
4 (6.67 % of base) : 178487.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
4 (6.67 % of base) : 220164.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
4 (6.67 % of base) : 94381.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
4 (6.25 % of base) : 64616.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (6.25 % of base) : 64615.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (6.25 % of base) : 191666.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
4 (6.25 % of base) : 233261.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
4 (6.25 % of base) : 113909.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (6.25 % of base) : 113908.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (5.88 % of base) : 190579.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 232213.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 190582.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+UpgradeableReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 232216.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+UpgradeableReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 190584.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 232218.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
48 (5.00 % of base) : 202970.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConvertArithmeticResult(int,System.Type):this (FullOpts)
24 (4.69 % of base) : 31179.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DecodeWellKnownAttribute(byref):this (FullOpts)
104 (4.48 % of base) : 87649.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
28 (4.24 % of base) : 63872.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Reader:TryTakeOldNodeOrToken(ubyte,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-32 (-20.00 % of base) : 31559.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-12 (-20.00 % of base) : 238105.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 238118.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 238104.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 238129.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-24 (-16.67 % of base) : 92926.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess:MakeRValue():Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess:this (FullOpts)
-20 (-14.29 % of base) : 31560.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 92606.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundCall:MakeRValue():Microsoft.CodeAnalysis.VisualBasic.BoundCall:this (FullOpts)
-12 (-12.50 % of base) : 150811.dasm - Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)
-8 (-12.50 % of base) : 238107.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-12.50 % of base) : 238111.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-12.50 % of base) : 238110.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-128 (-11.51 % of base) : 229270.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-8 (-11.11 % of base) : 717.dasm - System.String:GetBytesFromEncoding(ulong,int,System.Text.Encoding):int:this (FullOpts)
-12 (-11.11 % of base) : 236514.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-16 (-10.81 % of base) : 146163.dasm - System.Data.ProviderBase.SchemaMapping:MappedIndex():this (FullOpts)
-8 (-10.53 % of base) : 273893.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.Nullable`1[int]]:TryUpdate(int,System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (FullOpts)
-8 (-10.53 % of base) : 273994.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.Nullable`1[int]]:TryUpdate(long,System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (FullOpts)
-24 (-10.34 % of base) : 181337.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-10.34 % of base) : 222949.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
libraries_tests.run.linux.arm64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 381446624 (overridden on cmd)
Total bytes of diff: 380939088 (overridden on cmd)
Total bytes of delta: -507536 (-0.13 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
660 : 176969.dasm (4.75 % of base)
488 : 55032.dasm (2.93 % of base)
260 : 691459.dasm (3.54 % of base)
236 : 86604.dasm (2.21 % of base)
144 : 91450.dasm (3.31 % of base)
88 : 86546.dasm (0.45 % of base)
84 : 82803.dasm (0.79 % of base)
80 : 49494.dasm (0.75 % of base)
72 : 86577.dasm (0.44 % of base)
68 : 461012.dasm (1.26 % of base)
68 : 624256.dasm (0.96 % of base)
68 : 95637.dasm (0.63 % of base)
68 : 671005.dasm (0.33 % of base)
56 : 551285.dasm (13.21 % of base)
52 : 62300.dasm (0.38 % of base)
52 : 177269.dasm (0.56 % of base)
52 : 93441.dasm (0.54 % of base)
48 : 93450.dasm (0.44 % of base)
48 : 372697.dasm (1.14 % of base)
48 : 372713.dasm (1.30 % of base)
Top file improvements (bytes):
-1568 : 23526.dasm (-7.01 % of base)
-1568 : 44656.dasm (-6.73 % of base)
-1096 : 266810.dasm (-5.39 % of base)
-1048 : 286687.dasm (-0.79 % of base)
-1048 : 294401.dasm (-0.81 % of base)
-936 : 451787.dasm (-8.25 % of base)
-892 : 23614.dasm (-6.65 % of base)
-892 : 44711.dasm (-6.36 % of base)
-684 : 23637.dasm (-3.85 % of base)
-684 : 44718.dasm (-3.68 % of base)
-636 : 71779.dasm (-3.20 % of base)
-496 : 114076.dasm (-4.16 % of base)
-496 : 109903.dasm (-4.16 % of base)
-456 : 502909.dasm (-9.11 % of base)
-456 : 502955.dasm (-9.11 % of base)
-456 : 503031.dasm (-8.96 % of base)
-456 : 503057.dasm (-8.96 % of base)
-408 : 441990.dasm (-4.89 % of base)
-392 : 485209.dasm (-3.00 % of base)
-376 : 154380.dasm (-5.71 % of base)
91 total files with Code Size differences (56 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
660 (4.75 % of base) : 176969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
488 (2.93 % of base) : 55032.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
260 (3.54 % of base) : 691459.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
236 (2.21 % of base) : 86604.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
144 (3.31 % of base) : 91450.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (Tier1)
88 (0.45 % of base) : 86546.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
84 (0.79 % of base) : 82803.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
80 (0.75 % of base) : 49494.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
72 (0.44 % of base) : 86577.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
68 (1.26 % of base) : 461012.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
68 (0.33 % of base) : 671005.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
68 (0.63 % of base) : 95637.dasm - Microsoft.Interop.LibraryImportGenerator:CreateTargetDllImportAsLocalStatement(Microsoft.Interop.PInvokeStubCodeGenerator,Microsoft.Interop.LibraryImportGeneratorOptions,Microsoft.Interop.LibraryImportData,System.String,System.String):Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax (Tier1)
68 (0.96 % of base) : 624256.dasm - System.Text.Json.SourceGeneration.Tests.MetadataContext:CampaignSummaryViewModelPropInit(System.Text.Json.JsonSerializerOptions):System.Text.Json.Serialization.Metadata.JsonPropertyInfo[] (Tier1)
56 (13.21 % of base) : 551285.dasm - System.Security.Cryptography.DSA:ImportSubjectPublicKeyInfo(System.ReadOnlySpan`1[ubyte],byref):this (Tier1)
52 (0.56 % of base) : 177269.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindIdentifier(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
52 (0.38 % of base) : 62300.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier1)
52 (0.54 % of base) : 93441.dasm - Microsoft.Interop.LibraryImportGenerator:PrintForwarderStub(Microsoft.Interop.ContainingSyntax,ubyte,Microsoft.Interop.LibraryImportGenerator+IncrementalStubGenerationContext,Microsoft.Interop.GeneratorDiagnosticsBag):Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax (Tier1)
48 (0.44 % of base) : 93450.dasm - Microsoft.Interop.ContainingSyntaxContext:WrapMemberInContainingSyntaxWithUnsafeModifier(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax:this (Tier1)
48 (1.30 % of base) : 372713.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier1)
48 (1.14 % of base) : 372697.dasm - System.Text.Encoding:GetBytesWithFallback(ulong,int,ulong,int,int,int,System.Text.EncoderNLS):int:this (Tier1)
Top method improvements (bytes):
-1568 (-6.73 % of base) : 44656.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnPinnedMarshalledTypes>d__2:MoveNext():ubyte:this (Instrumented Tier0)
-1568 (-7.01 % of base) : 23526.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnPinnedMarshalledTypes>d__2:MoveNext():ubyte:this (Tier0)
-1096 (-5.39 % of base) : 266810.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1048 (-0.81 % of base) : 294401.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (Instrumented Tier0)
-1048 (-0.79 % of base) : 286687.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (Instrumented Tier0)
-936 (-8.25 % of base) : 451787.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-892 (-6.36 % of base) : 44711.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnValueTypes>d__1:MoveNext():ubyte:this (Instrumented Tier0)
-892 (-6.65 % of base) : 23614.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnValueTypes>d__1:MoveNext():ubyte:this (Tier0)
-684 (-3.68 % of base) : 44718.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnCustomCollections>d__3:MoveNext():ubyte:this (Instrumented Tier0)
-684 (-3.85 % of base) : 23637.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnCustomCollections>d__3:MoveNext():ubyte:this (Tier0)
-636 (-3.20 % of base) : 71779.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (Instrumented Tier0)
-496 (-4.16 % of base) : 114076.dasm - Microsoft.CodeAnalysis.CSharp.ForEachLoopBinder:BindForEachPartsWorker(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (Instrumented Tier0)
-496 (-4.16 % of base) : 109903.dasm - Microsoft.CodeAnalysis.CSharp.ForEachLoopBinder:BindForEachPartsWorker(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (Instrumented Tier0)
-456 (-9.11 % of base) : 502909.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-456 (-9.11 % of base) : 502955.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-456 (-8.96 % of base) : 503031.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-456 (-8.96 % of base) : 503057.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-408 (-4.89 % of base) : 441990.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
-392 (-3.00 % of base) : 485209.dasm - System.Reflection.Tests.PropertyTests:TestProperties_GetterSetter() (Instrumented Tier0)
-376 (-5.71 % of base) : 154380.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMemberAccessWithBoundLeft(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
Top method regressions (percentages):
56 (13.21 % of base) : 551285.dasm - System.Security.Cryptography.DSA:ImportSubjectPublicKeyInfo(System.ReadOnlySpan`1[ubyte],byref):this (Tier1)
4 (6.67 % of base) : 690244.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
16 (6.67 % of base) : 685807.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
36 (6.43 % of base) : 349954.dasm - System.Linq.Parallel.IndexedSelectQueryOperator`2[int,System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]:Open(System.Linq.Parallel.QuerySettings,ubyte):System.Linq.Parallel.QueryResults`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]]]:this (Tier1)
4 (5.88 % of base) : 94174.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (5.88 % of base) : 66348.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
16 (5.63 % of base) : 56207.dasm - Microsoft.CodeAnalysis.PEModule:HasRefSafetyRulesAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier1)
16 (5.56 % of base) : 86525.dasm - Microsoft.CodeAnalysis.PEModule:HasRefSafetyRulesAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier1)
4 (5.26 % of base) : 62049.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte:this (Tier1)
660 (4.75 % of base) : 176969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
24 (4.29 % of base) : 350861.dasm - System.Linq.Parallel.TakeOrSkipQueryOperator`1[int]:Open(System.Linq.Parallel.QuerySettings,ubyte):System.Linq.Parallel.QueryResults`1[int]:this (Tier1)
8 (4.00 % of base) : 55249.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:WithTypeAndModifiers(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
8 (3.92 % of base) : 697827.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
20 (3.60 % of base) : 686674.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitLabeledStatement(Microsoft.CodeAnalysis.CSharp.BoundLabeledStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
260 (3.54 % of base) : 691459.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
24 (3.35 % of base) : 686941.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol:ReportDiagnosticsForUnsafeSynthesizedAttributes(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier1)
144 (3.31 % of base) : 91450.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (Tier1)
4 (3.23 % of base) : 218709.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:Contains(int):ubyte:this (Tier1)
4 (2.94 % of base) : 535104.dasm - Castle.DynamicProxy.Generators.Emitters.SimpleAST.LiteralStringExpression:Emit(System.Reflection.Emit.ILGenerator):this (Tier1)
488 (2.93 % of base) : 55032.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
Top method improvements (percentages):
-108 (-30.68 % of base) : 39745.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-108 (-30.68 % of base) : 17025.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-29.73 % of base) : 114761.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-88 (-29.73 % of base) : 47606.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-29.27 % of base) : 166808.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-29.27 % of base) : 148657.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-27.91 % of base) : 180200.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-96 (-27.91 % of base) : 172095.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-80 (-27.40 % of base) : 114763.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:this (Instrumented Tier0)
-80 (-27.40 % of base) : 47620.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:this (Tier0)
-88 (-27.16 % of base) : 148796.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-27.16 % of base) : 166896.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-40 (-27.03 % of base) : 8187.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
-40 (-27.03 % of base) : 1503.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
-44 (-26.83 % of base) : 42022.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-44 (-26.83 % of base) : 22199.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-25.00 % of base) : 181593.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:this (Instrumented Tier0)
-32 (-25.00 % of base) : 147022.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Tier0)
-32 (-25.00 % of base) : 16242.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Tier0)
-16 (-25.00 % of base) : 611317.dasm - System.Text.Json.Utf8JsonWriter:TryFormatSingle(float,System.Span`1[ubyte],byref):ubyte (Tier1)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 162656488 (overridden on cmd)
Total bytes of diff: 162625288 (overridden on cmd)
Total bytes of delta: -31200 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
236 : 50672.dasm (1.89 % of base)
236 : 44584.dasm (1.89 % of base)
104 : 6926.dasm (0.88 % of base)
68 : 170026.dasm (1.50 % of base)
56 : 145771.dasm (0.45 % of base)
56 : 179260.dasm (3.27 % of base)
48 : 10863.dasm (0.79 % of base)
48 : 121901.dasm (2.09 % of base)
44 : 122633.dasm (1.93 % of base)
40 : 126385.dasm (3.00 % of base)
40 : 50198.dasm (0.69 % of base)
40 : 295910.dasm (1.31 % of base)
40 : 73218.dasm (12.35 % of base)
36 : 44571.dasm (0.89 % of base)
36 : 230434.dasm (4.19 % of base)
36 : 50651.dasm (0.89 % of base)
36 : 113542.dasm (0.62 % of base)
36 : 54010.dasm (0.64 % of base)
36 : 59206.dasm (0.12 % of base)
32 : 261727.dasm (3.29 % of base)
Top file improvements (bytes):
-440 : 41504.dasm (-10.74 % of base)
-228 : 9728.dasm (-2.33 % of base)
-208 : 256849.dasm (-3.34 % of base)
-180 : 5482.dasm (-0.55 % of base)
-140 : 32986.dasm (-6.01 % of base)
-128 : 9734.dasm (-3.74 % of base)
-112 : 213498.dasm (-6.68 % of base)
-112 : 9733.dasm (-2.16 % of base)
-104 : 1577.dasm (-2.95 % of base)
-104 : 16499.dasm (-2.96 % of base)
-104 : 1380.dasm (-2.95 % of base)
-104 : 16501.dasm (-2.96 % of base)
-104 : 16513.dasm (-2.96 % of base)
-104 : 18870.dasm (-2.96 % of base)
-104 : 1198.dasm (-2.95 % of base)
-100 : 11779.dasm (-2.84 % of base)
-100 : 27546.dasm (-2.84 % of base)
-100 : 15226.dasm (-2.84 % of base)
-100 : 16473.dasm (-2.84 % of base)
-100 : 16730.dasm (-2.84 % of base)
81 total files with Code Size differences (44 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
236 (1.89 % of base) : 50672.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
236 (1.89 % of base) : 44584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
104 (0.88 % of base) : 6926.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
68 (1.50 % of base) : 170026.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
56 (0.45 % of base) : 145771.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
56 (3.27 % of base) : 179260.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
48 (0.79 % of base) : 10863.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
48 (2.09 % of base) : 121901.dasm - System.IO.Tests.FileStream_ctor_str_fm:FileModeAppendExisting(System.String):this (FullOpts)
44 (1.93 % of base) : 122633.dasm - System.IO.Tests.FileStream_ctor_str_fm:FileModeAppendExisting(System.String):this (FullOpts)
40 (0.69 % of base) : 50198.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
40 (12.35 % of base) : 73218.dasm - System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[int,int]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[int,int]],int):this (FullOpts)
40 (3.00 % of base) : 126385.dasm - System.IO.Packaging.Tests.Tests:OpenPropertyStream():this (FullOpts)
40 (1.31 % of base) : 295910.dasm - System.Threading.Tasks.Dataflow.Tests.ActionBlockTests+<TestBasicMessageProcessing>d__5:MoveNext():this (FullOpts)
36 (0.62 % of base) : 113542.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.dlgateEvent.dlgate.dlgate001.dlgate001.nms.Start:MainMethod():int (FullOpts)
36 (0.64 % of base) : 54010.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
36 (0.89 % of base) : 44571.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`11[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
36 (0.89 % of base) : 50651.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`11[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
36 (0.12 % of base) : 59206.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
36 (4.19 % of base) : 230434.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
32 (3.29 % of base) : 261727.dasm - System.Text.Json.Serialization.Tests.JsonElementClass:Initialize():this (FullOpts)
Top method improvements (bytes):
-440 (-10.74 % of base) : 41504.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-228 (-2.33 % of base) : 9728.dasm - Microsoft.CodeAnalysis.Testing.AnalyzerTest`1[System.__Canon]:VerifyDiagnosticResults(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.Project,Microsoft.CodeAnalysis.Diagnostic]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Testing.DiagnosticResult[],Microsoft.CodeAnalysis.Testing.IVerifier):this (MinOpts)
-208 (-3.34 % of base) : 256849.dasm - System.Text.Json.Nodes.Tests.ParentPathRootTests:GetPathAndRoot() (FullOpts)
-180 (-0.55 % of base) : 5482.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-140 (-6.01 % of base) : 32986.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-128 (-3.74 % of base) : 9734.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:MatchRecursive[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]],byref,byref,double,int,int,ubyte[],double[],ubyte,System.Threading.CancellationToken) (MinOpts)
-112 (-2.16 % of base) : 9733.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:Match[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.TimeSpan):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]] (MinOpts)
-112 (-6.68 % of base) : 213498.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-104 (-2.96 % of base) : 18870.dasm - Xunit.Assert:Equal[double](double,double,System.Collections.Generic.IEqualityComparer`1[double]) (FullOpts)
-104 (-2.95 % of base) : 1380.dasm - Xunit.Assert:Equal[float](float,float,System.Collections.Generic.IEqualityComparer`1[float]) (FullOpts)
-104 (-2.95 % of base) : 1198.dasm - Xunit.Assert:Equal[int](int,int,System.Collections.Generic.IEqualityComparer`1[int]) (FullOpts)
-104 (-2.96 % of base) : 16501.dasm - Xunit.Assert:Equal[long](long,long,System.Collections.Generic.IEqualityComparer`1[long]) (FullOpts)
-104 (-2.95 % of base) : 1577.dasm - Xunit.Assert:Equal[System.Drawing.Point](System.Drawing.Point,System.Drawing.Point,System.Collections.Generic.IEqualityComparer`1[System.Drawing.Point]) (FullOpts)
-104 (-2.96 % of base) : 16499.dasm - Xunit.Assert:Equal[uint](uint,uint,System.Collections.Generic.IEqualityComparer`1[uint]) (FullOpts)
-104 (-2.96 % of base) : 16513.dasm - Xunit.Assert:Equal[ulong](ulong,ulong,System.Collections.Generic.IEqualityComparer`1[ulong]) (FullOpts)
-100 (-2.84 % of base) : 15226.dasm - Xunit.Assert:Equal[byte](byte,byte,System.Collections.Generic.IEqualityComparer`1[byte]) (FullOpts)
-100 (-2.84 % of base) : 27546.dasm - Xunit.Assert:Equal[short](short,short,System.Collections.Generic.IEqualityComparer`1[short]) (FullOpts)
-100 (-2.84 % of base) : 11779.dasm - Xunit.Assert:Equal[ubyte](ubyte,ubyte,System.Collections.Generic.IEqualityComparer`1[ubyte]) (FullOpts)
-100 (-2.84 % of base) : 16730.dasm - Xunit.Assert:Equal[ubyte](ubyte,ubyte,System.Collections.Generic.IEqualityComparer`1[ubyte]) (FullOpts)
-100 (-2.84 % of base) : 16473.dasm - Xunit.Assert:Equal[ushort](ushort,ushort,System.Collections.Generic.IEqualityComparer`1[ushort]) (FullOpts)
Top method regressions (percentages):
40 (12.35 % of base) : 73218.dasm - System.Collections.Tests.IGenericSharedAPI_Tests`1[System.ValueTuple`2[int,int]]:AddToCollection(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[int,int]],int):this (FullOpts)
8 (10.00 % of base) : 259568.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
8 (7.69 % of base) : 261729.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
16 (6.67 % of base) : 55914.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
20 (6.41 % of base) : 15002.dasm - Microsoft.CodeAnalysis.Formatting.TokenStream+Changes:AddOrReplace(int,Microsoft.CodeAnalysis.Formatting.TriviaData):this (FullOpts)
12 (6.38 % of base) : 84046.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
12 (6.38 % of base) : 84143.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
4 (6.25 % of base) : 121744.dasm - System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
28 (4.24 % of base) : 292096.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Reader:TryTakeOldNodeOrToken(ubyte,byref):ubyte:this (FullOpts)
36 (4.19 % of base) : 230434.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
8 (3.92 % of base) : 55919.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
4 (3.85 % of base) : 10937.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
20 (3.38 % of base) : 261728.dasm - System.Text.Json.Serialization.Tests.JsonElementArrayClass:Initialize():this (FullOpts)
8 (3.33 % of base) : 266838.dasm - Microsoft.Cci.ReferenceIndexerBase:Visit(Microsoft.Cci.IGenericParameter):this (FullOpts)
4 (3.33 % of base) : 68377.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:Contains(int):ubyte:this (FullOpts)
4 (3.33 % of base) : 68902.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Collections.Frozen.Tests.SimpleNonComparableStruct]:Contains(System.Collections.Frozen.Tests.SimpleNonComparableStruct):ubyte:this (FullOpts)
4 (3.33 % of base) : 70781.dasm - System.Collections.Immutable.ImmutableHashSet`1[ulong]:Contains(ulong):ubyte:this (FullOpts)
32 (3.29 % of base) : 261727.dasm - System.Text.Json.Serialization.Tests.JsonElementClass:Initialize():this (FullOpts)
56 (3.27 % of base) : 179260.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
12 (3.19 % of base) : 8161.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteAndCatchIfThrows_NoLock[System.__Canon](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Action`1[System.__Canon],System.__Canon,System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo],System.Threading.CancellationToken):this (FullOpts)
Top method improvements (percentages):
-32 (-27.59 % of base) : 114076.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
-12 (-16.67 % of base) : 257653.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-12 (-16.67 % of base) : 263792.dasm - System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-12 (-16.67 % of base) : 260297.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-28 (-16.67 % of base) : 265134.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__0():System.Object:this (FullOpts)
-28 (-16.67 % of base) : 265137.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__3():System.Object:this (FullOpts)
-20 (-15.15 % of base) : 223722.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_TrailingWhitespaceAfterPosteb():this (FullOpts)
-24 (-15.00 % of base) : 265234.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass86_0:<CheckUnparsable>b__0():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 259840.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass87_0:<CheckParseDepth>b__0():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 265135.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__1():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 265136.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__2():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 265183.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass94_0:<TrailingCommas>b__0():System.Object:this (FullOpts)
-20 (-14.71 % of base) : 223701.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_IncompletePreebPrefixed():this (FullOpts)
-20 (-14.71 % of base) : 223715.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_PrecedingContentAndWhitespaceBeforePreeb():this (FullOpts)
-24 (-14.63 % of base) : 261634.dasm - System.Text.Json.Tests.JsonDocumentWriteTests:PrepareDocument(System.String):System.Text.Json.JsonDocument:this (FullOpts)
-20 (-14.29 % of base) : 46463.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 52445.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 223714.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_Base64SurroundingWhiteSpaceStripped():this (FullOpts)
-20 (-14.29 % of base) : 223725.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_LabelCharacterBoundaries():this (FullOpts)
-16 (-14.29 % of base) : 221365.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__2():this (FullOpts)
realworld.run.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15906904 (overridden on cmd)
Total bytes of diff: 15898388 (overridden on cmd)
Total bytes of delta: -8516 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
152 : 3009.dasm (1.94 % of base)
136 : 6383.dasm (0.13 % of base)
112 : 20703.dasm (1.00 % of base)
60 : 1174.dasm (5.79 % of base)
56 : 14695.dasm (0.45 % of base)
48 : 23726.dasm (0.80 % of base)
36 : 19805.dasm (0.64 % of base)
32 : 33166.dasm (2.88 % of base)
24 : 18779.dasm (1.11 % of base)
16 : 25785.dasm (0.26 % of base)
16 : 1344.dasm (12.50 % of base)
16 : 20710.dasm (0.76 % of base)
16 : 27166.dasm (6.90 % of base)
16 : 20815.dasm (1.16 % of base)
16 : 7996.dasm (1.95 % of base)
12 : 21660.dasm (0.18 % of base)
12 : 20651.dasm (0.31 % of base)
12 : 23456.dasm (2.38 % of base)
12 : 24759.dasm (0.52 % of base)
12 : 24803.dasm (0.13 % of base)
Top file improvements (bytes):
-4444 : 5078.dasm (-2.19 % of base)
-180 : 16162.dasm (-0.54 % of base)
-152 : 31652.dasm (-1.09 % of base)
-140 : 2294.dasm (-6.01 % of base)
-112 : 1787.dasm (-18.30 % of base)
-84 : 5045.dasm (-0.32 % of base)
-72 : 2093.dasm (-15.52 % of base)
-64 : 20967.dasm (-9.70 % of base)
-64 : 8508.dasm (-0.38 % of base)
-64 : 28751.dasm (-7.41 % of base)
-56 : 25592.dasm (-0.52 % of base)
-48 : 13425.dasm (-7.74 % of base)
-48 : 1980.dasm (-4.43 % of base)
-48 : 10428.dasm (-2.72 % of base)
-48 : 22284.dasm (-1.89 % of base)
-44 : 9061.dasm (-1.44 % of base)
-44 : 18474.dasm (-1.70 % of base)
-44 : 23415.dasm (-1.61 % of base)
-40 : 24606.dasm (-1.19 % of base)
-40 : 25865.dasm (-1.05 % of base)
66 total files with Code Size differences (35 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
152 (1.94 % of base) : 3009.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
136 (0.13 % of base) : 6383.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
112 (1.00 % of base) : 20703.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
60 (5.79 % of base) : 1174.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
56 (0.45 % of base) : 14695.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.80 % of base) : 23726.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
36 (0.64 % of base) : 19805.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
32 (2.88 % of base) : 33166.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleForNames(System.Collections.Generic.List`1[System.String],ubyte,ubyte):System.Collections.Generic.IEnumerable`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
24 (1.11 % of base) : 18779.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
16 (1.95 % of base) : 7996.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
16 (6.90 % of base) : 27166.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (0.26 % of base) : 25785.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitSwitchExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,ubyte):this (FullOpts)
16 (1.16 % of base) : 20815.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,ubyte,int):ubyte (FullOpts)
16 (0.76 % of base) : 20710.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CreateAccessorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol,uint,Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol (FullOpts)
16 (12.50 % of base) : 1344.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
12 (0.13 % of base) : 24803.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
12 (0.18 % of base) : 21660.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
12 (0.52 % of base) : 24759.dasm - Microsoft.CodeAnalysis.CSharp.ForLoopBinder:BuildLocals():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]:this (FullOpts)
12 (2.38 % of base) : 23456.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
12 (0.31 % of base) : 20651.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
Top method improvements (bytes):
-4444 (-2.19 % of base) : 5078.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:hwTokenFetch(ubyte):FSharp.Compiler.Parser+token:this (Tier0-MinOpts)
-180 (-0.54 % of base) : 16162.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-152 (-1.09 % of base) : 31652.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-140 (-6.01 % of base) : 2294.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-112 (-18.30 % of base) : 1787.dasm - DemoBenchmarks.FourBodyConstraintBenchmarks:VolumeConstraint():System.ValueTuple`4[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-84 (-0.32 % of base) : 5045.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-72 (-15.52 % of base) : 2093.dasm - DemoBenchmarks.ThreeBodyConstraintBenchmarks:AreaConstraint():System.ValueTuple`3[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-64 (-0.38 % of base) : 8508.dasm - FSharp.Compiler.CheckExpressions:TcPat(FSharp.Compiler.NameResolution+WarnOnUpperFlag,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PartialValReprInfo],FSharp.Compiler.TypedTree+ValInline,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+ArgAndRetAttribs,ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],ubyte,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Syntax.SynPat):System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+TcPatPhase2Input,FSharp.Compiler.PatternMatchCompilation+Pattern],System.Tuple`3[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String]]] (FullOpts)
-64 (-9.70 % of base) : 20967.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 28751.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-56 (-0.52 % of base) : 25592.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-48 (-4.43 % of base) : 1980.dasm - BepuPhysics.Solver`1[DemoBenchmarks.ShapePileBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
-48 (-2.72 % of base) : 10428.dasm - FSharp.Compiler.CheckExpressions:analyzeRecursiveDeclPat@11316(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.Syntax.SynValTyparDecls,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.SynValInfo,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.CheckExpressions+OverridesOK,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+MemberOrValContainerInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+NormalizedBindingRhs,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynPat):System.Tuple`8[FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PreValMemberInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],System.Tuple`6[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+NormalizedBindingRhs,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar]]] (FullOpts)
-48 (-1.89 % of base) : 22284.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-48 (-7.74 % of base) : 13425.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-44 (-1.44 % of base) : 9061.dasm - FSharp.Compiler.CheckExpressions:TcValSpec(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.CheckExpressions+ImplicitlyBoundTyparsAllowed,FSharp.Compiler.CheckExpressions+ContainerInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynValSig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+ValSpecResult],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-44 (-1.70 % of base) : 18474.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-44 (-1.61 % of base) : 23415.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](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.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (FullOpts)
-40 (-1.19 % of base) : 24606.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitCompoundAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-40 (-1.05 % of base) : 25865.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDeconstructMethodArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],Microsoft.CodeAnalysis.CSharp.Conversion,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
Top method regressions (percentages):
16 (12.50 % of base) : 1344.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
16 (6.90 % of base) : 27166.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
60 (5.79 % of base) : 1174.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
8 (3.92 % of base) : 27406.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
4 (3.85 % of base) : 21712.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
4 (2.94 % of base) : 27474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedMethodBaseSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
32 (2.88 % of base) : 33166.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:GetModuleForNames(System.Collections.Generic.List`1[System.String],ubyte,ubyte):System.Collections.Generic.IEnumerable`1[System.Management.Automation.PSModuleInfo]:this (FullOpts)
12 (2.38 % of base) : 23456.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
16 (1.95 % of base) : 7996.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
152 (1.94 % of base) : 3009.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
4 (1.82 % of base) : 7911.dasm - FSharp.Compiler.Xml.XmlDocCollector:LinesRange(FSharp.Compiler.Text.Position):FSharp.Compiler.Text.Range:this (FullOpts)
8 (1.50 % of base) : 26045.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):this (FullOpts)
8 (1.37 % of base) : 25759.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeExplicitParameterTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,byref):ubyte:this (FullOpts)
4 (1.37 % of base) : 21240.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.33 % of base) : 21947.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedPropertySymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.30 % of base) : 22211.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedFieldSymbol:GetFieldType(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.27 % of base) : 28380.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
16 (1.16 % of base) : 20815.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,ubyte,int):ubyte (FullOpts)
4 (1.12 % of base) : 22807.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<BindQualifiedName>g__convertToUnboundGenericType|1031_0(byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations (FullOpts)
24 (1.11 % of base) : 18779.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
Top method improvements (percentages):
-112 (-18.30 % of base) : 1787.dasm - DemoBenchmarks.FourBodyConstraintBenchmarks:VolumeConstraint():System.ValueTuple`4[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-12 (-15.79 % of base) : 13675.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
-72 (-15.52 % of base) : 2093.dasm - DemoBenchmarks.ThreeBodyConstraintBenchmarks:AreaConstraint():System.ValueTuple`3[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-20 (-14.29 % of base) : 26061.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-16 (-12.50 % of base) : 15358.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-64 (-9.70 % of base) : 20967.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-12 (-9.38 % of base) : 14541.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
-8 (-9.09 % of base) : 3569.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:set_Item(int,System.__Canon):this (FullOpts)
-8 (-8.33 % of base) : 32087.dasm - System.Management.Automation.Interpreter.LoadCachedObjectInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-48 (-7.74 % of base) : 13425.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-64 (-7.41 % of base) : 28751.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-16 (-6.90 % of base) : 15296.dasm - System.Formats.Asn1.AsnDecoder:ReadObjectIdentifier(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.String (FullOpts)
-12 (-6.82 % of base) : 1771.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexCompoundSweepOverlapFinder`2[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.Compound]:FindOverlaps(byref,byref,byref,byref,byref,byref,byref,float,BepuPhysics.Collidables.Shapes,BepuUtilities.Memory.BufferPool,byref):this (FullOpts)
-12 (-6.67 % of base) : 24732.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass231_0:<VisitArguments>b__3(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]:this (FullOpts)
-12 (-6.67 % of base) : 16025.dasm - Microsoft.ML.Transforms.Text.NgramExtractingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[]):this (FullOpts)
-12 (-6.25 % of base) : 13362.dasm - Microsoft.ML.Internal.Utilities.HashArray`1[float]:.ctor():this (FullOpts)
-8 (-6.06 % of base) : 2884.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-140 (-6.01 % of base) : 2294.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-4 (-5.88 % of base) : 14057.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[double,double]:CopyOut(int,byref):this (FullOpts)
-4 (-5.88 % of base) : 14059.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[System.__Canon,Microsoft.ML.Data.VBuffer`1[double]]:CopyOut(int,byref):this (FullOpts)
smoke_tests.nativeaot.linux.arm64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2949332 (overridden on cmd)
Total bytes of diff: 2949100 (overridden on cmd)
Total bytes of delta: -232 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
24 : 15732.dasm (14.29 % of base)
16 : 2387.dasm (10.81 % of base)
12 : 2513.dasm (1.18 % of base)
12 : 6977.dasm (3.33 % of base)
12 : 8911.dasm (0.56 % of base)
8 : 2583.dasm (6.67 % of base)
4 : 14379.dasm (0.90 % of base)
4 : 488.dasm (1.35 % of base)
4 : 5721.dasm (0.46 % of base)
4 : 15857.dasm (1.32 % of base)
Top file improvements (bytes):
-24 : 13387.dasm (-5.50 % of base)
-24 : 13389.dasm (-5.94 % of base)
-16 : 12479.dasm (-6.78 % of base)
-16 : 3741.dasm (-4.60 % of base)
-16 : 528.dasm (-6.78 % of base)
-12 : 12023.dasm (-6.52 % of base)
-12 : 6066.dasm (-2.33 % of base)
-12 : 14187.dasm (-2.73 % of base)
-8 : 10699.dasm (-3.28 % of base)
-8 : 11192.dasm (-3.64 % of base)
-8 : 11491.dasm (-3.51 % of base)
-8 : 12779.dasm (-2.94 % of base)
-8 : 13444.dasm (-5.88 % of base)
-8 : 14146.dasm (-8.33 % of base)
-8 : 15759.dasm (-8.70 % of base)
-8 : 950.dasm (-5.88 % of base)
-8 : 10558.dasm (-3.17 % of base)
-8 : 10941.dasm (-2.82 % of base)
-8 : 10143.dasm (-2.90 % of base)
-8 : 11429.dasm (-3.28 % of base)
40 total files with Code Size differences (30 improved, 10 regressed), 29 unchanged.
Top method regressions (bytes):
24 (14.29 % of base) : 15732.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
16 (10.81 % of base) : 2387.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
12 (0.56 % of base) : 8911.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
12 (3.33 % of base) : 6977.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (1.18 % of base) : 2513.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
8 (6.67 % of base) : 2583.dasm - Interop+Sys:GetPwUidR(uint,byref,ulong,int):int (FullOpts)
4 (0.46 % of base) : 5721.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetMethodInvokeMetadataFromInvokeMap(Internal.Metadata.NativeFormat.MetadataReader,System.RuntimeTypeHandle,Internal.Metadata.NativeFormat.MethodHandle,System.RuntimeTypeHandle[],byref,int,byref):ubyte (FullOpts)
4 (0.90 % of base) : 14379.dasm - System.Linq.Expressions.Interpreter.EnterTryFaultInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
4 (1.35 % of base) : 488.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.32 % of base) : 15857.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
Top method improvements (bytes):
-24 (-5.50 % of base) : 13387.dasm - System.Linq.Expressions.Interpreter.LightLambda:Run(System.Object[]):System.Object:this (FullOpts)
-24 (-5.94 % of base) : 13389.dasm - System.Linq.Expressions.Interpreter.LightLambda:RunVoid(System.Object[]):System.Object:this (FullOpts)
-16 (-4.60 % of base) : 3741.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-16 (-6.78 % of base) : 12479.dasm - System.Action`1[System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]]:InvokeMulticastThunk(System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]):this (FullOpts)
-16 (-6.78 % of base) : 528.dasm - System.Func`2[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:InvokeMulticastThunk(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey):System.__Canon:this (FullOpts)
-12 (-6.52 % of base) : 12023.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-12 (-2.33 % of base) : 6066.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetConstructedGenericTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],byref):ubyte:this (FullOpts)
-12 (-2.73 % of base) : 14187.dasm - System.Linq.Expressions.Interpreter.ByRefNewInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-8 (-0.96 % of base) : 1342.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-8 (-0.90 % of base) : 1327.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-8 (-5.88 % of base) : 950.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-3.28 % of base) : 10699.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo,uint]:UncheckedAdd(Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo,uint):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo,uint]:this (FullOpts)
-8 (-2.82 % of base) : 10941.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.CompilerServices.OpenMethodResolver,long]:UncheckedAdd(Internal.Runtime.CompilerServices.OpenMethodResolver,long):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.CompilerServices.OpenMethodResolver,long]:this (FullOpts)
-8 (-3.17 % of base) : 10558.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle]:UncheckedAdd(Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.TypeLoader.TypeLoaderEnvironment+RuntimeMethodHandleKey,System.RuntimeMethodHandle]:this (FullOpts)
-8 (-3.51 % of base) : 1560.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeManagerHandle,int]:UncheckedAdd(Internal.Runtime.TypeManagerHandle,int):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.TypeManagerHandle,int]:this (FullOpts)
-8 (-3.28 % of base) : 11429.dasm - System.Collections.Generic.LowLevelDictionary`2[long,System.__Canon]:UncheckedAdd(long,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[long,System.__Canon]:this (FullOpts)
-8 (-3.51 % of base) : 11491.dasm - System.Collections.Generic.LowLevelDictionary`2[long,uint]:UncheckedAdd(long,uint):System.Collections.Generic.LowLevelDictionary`2+Entry[long,uint]:this (FullOpts)
-8 (-3.08 % of base) : 1602.dasm - System.Collections.Generic.LowLevelDictionary`2[System.__Canon,System.__Canon]:UncheckedAdd(System.__Canon,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
-8 (-2.90 % of base) : 10143.dasm - System.Collections.Generic.LowLevelDictionary`2[System.__Canon,System.Reflection.Runtime.General.QHandle]:UncheckedAdd(System.__Canon,System.Reflection.Runtime.General.QHandle):System.Collections.Generic.LowLevelDictionary`2+Entry[System.__Canon,System.Reflection.Runtime.General.QHandle]:this (FullOpts)
-8 (-3.08 % of base) : 11766.dasm - System.Collections.Generic.LowLevelDictionary`2[System.TypeUnificationKey,System.__Canon]:UncheckedAdd(System.TypeUnificationKey,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[System.TypeUnificationKey,System.__Canon]:this (FullOpts)
Top method regressions (percentages):
24 (14.29 % of base) : 15732.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
16 (10.81 % of base) : 2387.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
8 (6.67 % of base) : 2583.dasm - Interop+Sys:GetPwUidR(uint,byref,ulong,int):int (FullOpts)
12 (3.33 % of base) : 6977.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
4 (1.35 % of base) : 488.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.32 % of base) : 15857.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
12 (1.18 % of base) : 2513.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
4 (0.90 % of base) : 14379.dasm - System.Linq.Expressions.Interpreter.EnterTryFaultInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
12 (0.56 % of base) : 8911.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
4 (0.46 % of base) : 5721.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetMethodInvokeMetadataFromInvokeMap(Internal.Metadata.NativeFormat.MetadataReader,System.RuntimeTypeHandle,Internal.Metadata.NativeFormat.MethodHandle,System.RuntimeTypeHandle[],byref,int,byref):ubyte (FullOpts)
Top method improvements (percentages):
-8 (-8.70 % of base) : 15759.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-4 (-8.33 % of base) : 7825.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
-8 (-8.33 % of base) : 14146.dasm - System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-16 (-6.78 % of base) : 12479.dasm - System.Action`1[System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]]:InvokeMulticastThunk(System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]):this (FullOpts)
-16 (-6.78 % of base) : 528.dasm - System.Func`2[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:InvokeMulticastThunk(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey):System.__Canon:this (FullOpts)
-12 (-6.52 % of base) : 12023.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-8 (-6.06 % of base) : 2971.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.Reflection.CustomAttributeTypedArgument]:MoveNext():ubyte:this (FullOpts)
-24 (-5.94 % of base) : 13389.dasm - System.Linq.Expressions.Interpreter.LightLambda:RunVoid(System.Object[]):System.Object:this (FullOpts)
-8 (-5.88 % of base) : 950.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-5.88 % of base) : 13444.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-24 (-5.50 % of base) : 13387.dasm - System.Linq.Expressions.Interpreter.LightLambda:Run(System.Object[]):System.Object:this (FullOpts)
-16 (-4.60 % of base) : 3741.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-4 (-4.00 % of base) : 14270.dasm - System.Linq.Expressions.Interpreter.InterpretedFrame:Dup():this (FullOpts)
-4 (-3.85 % of base) : 2433.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
-8 (-3.64 % of base) : 11192.dasm - System.Collections.Generic.LowLevelDictionary`2[uint,long]:UncheckedAdd(uint,long):System.Collections.Generic.LowLevelDictionary`2+Entry[uint,long]:this (FullOpts)
-8 (-3.57 % of base) : 12545.dasm - System.Linq.Expressions.Interpreter.HybridReferenceDictionary`2+<GetEnumeratorWorker>d__7[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-3.51 % of base) : 1560.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeManagerHandle,int]:UncheckedAdd(Internal.Runtime.TypeManagerHandle,int):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.TypeManagerHandle,int]:this (FullOpts)
-8 (-3.51 % of base) : 11491.dasm - System.Collections.Generic.LowLevelDictionary`2[long,uint]:UncheckedAdd(long,uint):System.Collections.Generic.LowLevelDictionary`2+Entry[long,uint]:this (FullOpts)
-8 (-3.28 % of base) : 10699.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo,uint]:UncheckedAdd(Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo,uint):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.CompilerServices.FunctionPointerOps+GenericMethodDescriptorInfo,uint]:this (FullOpts)
-8 (-3.28 % of base) : 11429.dasm - System.Collections.Generic.LowLevelDictionary`2[long,System.__Canon]:UncheckedAdd(long,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[long,System.__Canon]:this (FullOpts)
Diffs are based on 2,595,003 contexts (1,052,329 MinOpts, 1,542,674 FullOpts).
MISSED contexts: base: 3,628 (0.14%), diff: 3,632 (0.14%)
Overall (-1,002,204 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.x64.checked.mch
13,735,124
-3,912
benchmarks.run_pgo.linux.x64.checked.mch
68,635,056
-34,985
benchmarks.run_tiered.linux.x64.checked.mch
17,373,152
-2,107
coreclr_tests.run.linux.x64.checked.mch
459,551,078
-378,596
libraries.crossgen2.linux.x64.checked.mch
38,670,232
-20,898
libraries.pmi.linux.x64.checked.mch
60,144,132
-25,391
libraries_tests.run.linux.x64.Release.mch
333,551,492
-488,707
librariestestsnotieredcompilation.run.linux.x64.Release.mch
130,468,363
-41,266
realworld.run.linux.x64.checked.mch
13,194,158
-6,001
smoke_tests.nativeaot.linux.x64.checked.mch
4,198,166
-341
MinOpts (-727,753 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch
19,829,757
-36,358
benchmarks.run_tiered.linux.x64.checked.mch
13,677,760
-889
coreclr_tests.run.linux.x64.checked.mch
326,558,135
-279,637
libraries_tests.run.linux.x64.Release.mch
184,389,521
-410,869
FullOpts (-274,451 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.linux.x64.checked.mch
13,468,331
-3,912
benchmarks.run_pgo.linux.x64.checked.mch
48,805,299
+1,373
benchmarks.run_tiered.linux.x64.checked.mch
3,695,392
-1,218
coreclr_tests.run.linux.x64.checked.mch
132,992,943
-98,959
libraries.crossgen2.linux.x64.checked.mch
38,669,030
-20,898
libraries.pmi.linux.x64.checked.mch
60,031,262
-25,391
libraries_tests.run.linux.x64.Release.mch
149,161,971
-77,838
librariestestsnotieredcompilation.run.linux.x64.Release.mch
119,809,892
-41,266
realworld.run.linux.x64.checked.mch
12,805,052
-6,001
smoke_tests.nativeaot.linux.x64.checked.mch
4,197,255
-341
Example diffs
benchmarks.run.linux.x64.checked.mch
-31 (-32.98%) : 30360.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
@@ -8,55 +8,50 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def <Span.IndexerBench>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd single-def <Span.IndexerBench>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V03 tmp2 [V03,T01] ( 4, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V07 tmp6 [V07,T06] ( 3, 2 ) byref -> rsi "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> rdx "field V04._length (fldOffset=0x8)" P-INDEP
-; V09 tmp8 [V09,T02] ( 3, 6 ) ref -> rdx single-def "arr expr"
-; V10 tmp9 [V10,T00] ( 4, 8 ) struct (16) [rbp-0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V11 tmp10 [V11,T05] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
-; V12 cse0 [V12,T04] ( 4, 4 ) ref -> r8 "CSE - aggressive"
+; V07 tmp6 [V07,T05] ( 3, 2 ) byref -> rdi "field V04._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp7 [V08,T06] ( 3, 2 ) int -> rsi "field V04._length (fldOffset=0x8)" P-INDEP
+; V09 tmp8 [V09,T01] ( 3, 6 ) ref -> rdx single-def "arr expr"
+; V10 tmp9 [V10,T04] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
+; V11 cse0 [V11,T03] ( 4, 4 ) ref -> r8 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M29415_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 16
- lea rbp, [rsp+0x10]
- xor eax, eax
- mov qword ptr [rbp-0x10], rax
- ;; size=16 bbWeight=1 PerfScore 3.00
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M29415_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov r8, gword ptr [rdi+0x08]
; gcrRegs +[r8]
- mov rdi, r8
- test rdi, rdi
+ mov rdx, r8
+ ; gcrRegs +[rdx]
+ test rdx, rdx
jne SHORT G_M29415_IG04
;; size=12 bbWeight=1 PerfScore 3.50
G_M29415_IG03: ; bbWeight=0.50, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- xor rsi, rsi
- ; byrRegs +[rsi]
- xor edx, edx
+ ; gcrRegs -[rdx rdi]
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor esi, esi
jmp SHORT G_M29415_IG05
;; size=6 bbWeight=0.50 PerfScore 1.25
-G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0180 {rdi r8}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rdi]
- ; byrRegs -[rsi]
- lea rsi, bword ptr [rdi+0x10]
- ; byrRegs +[rsi]
- mov edx, dword ptr [rdi+0x08]
+G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0104 {rdx r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdi]
+ lea rdi, bword ptr [rdx+0x10]
+ ; byrRegs +[rdi]
+ mov esi, dword ptr [rdx+0x08]
;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M29415_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0040 {rsi}, byref, isz
- ; gcrRegs -[rdi]
- mov bword ptr [rbp-0x10], rsi
- mov dword ptr [rbp-0x08], edx
+G_M29415_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0080 {rdi}, byref, isz
+ ; gcrRegs -[rdx]
mov rdx, r8
; gcrRegs +[rdx]
cmp dword ptr [rdx+0x08], 0
@@ -64,28 +59,23 @@ G_M29415_IG05: ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0040 {rsi}, b
add rdx, 16
; gcrRegs -[rdx]
; byrRegs +[rdx]
- mov rdi, bword ptr [rbp-0x10]
- ; byrRegs +[rdi]
- mov rsi, qword ptr [rbp-0x08]
- ; byrRegs -[rsi]
mov r8d, dword ptr [r8+0x08]
; gcrRegs -[r8]
xor ecx, ecx
call [<unknown method>]
; byrRegs -[rdx rdi]
nop
- ;; size=41 bbWeight=1 PerfScore 14.00
+ ;; size=26 bbWeight=1 PerfScore 10.00
G_M29415_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
pop rbp
ret
- ;; size=6 bbWeight=1 PerfScore 1.75
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 94, prolog size 16, PerfScore 24.75, instruction count 31, allocated bytes for code 94 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
+; Total bytes of code 63, prolog size 4, PerfScore 18.75, instruction count 23, allocated bytes for code 63 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -93,10 +83,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)
-34 (-30.63%) : 29424.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
@@ -8,83 +8,74 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
+; V00 this [V00,T02] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
; V02 loc0 [V02 ] ( 1, 1 ) int -> [rbp-0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.StandardFormat>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Span`1[ubyte]>
-; V06 tmp2 [V06,T02] ( 4, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V08 tmp4 [V08,T05] ( 2, 2 ) short -> rsi single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T06] ( 2, 2 ) long -> rdx single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
-;* V11 tmp7 [V11,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
+; V06 tmp2 [V06,T00] ( 4, 6 ) ref -> r9 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T03] ( 2, 2 ) short -> rsi single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T04] ( 2, 2 ) long -> r8 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
+;* V11 tmp7 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T07] ( 3, 2 ) byref -> rcx "field V07._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T08] ( 3, 2 ) int -> r9 "field V07._length (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T03] ( 3, 6 ) struct ( 8) [rbp-0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V17 tmp13 [V17,T00] ( 4, 8 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
-; V18 tmp14 [V18,T01] ( 4, 8 ) struct (16) [rbp-0x30] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
+; V14 tmp10 [V14,T05] ( 3, 2 ) byref -> rdx "field V07._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp11 [V15,T06] ( 3, 2 ) int -> rcx "field V07._length (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T01] ( 3, 6 ) struct ( 8) [rbp-0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M7377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 48
- lea rbp, [rsp+0x30]
- vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
- vmovdqa xmmword ptr [rbp-0x10], xmm8
- ;; size=25 bbWeight=1 PerfScore 6.08
+ sub rsp, 16
+ lea rbp, [rsp+0x10]
+ xor eax, eax
+ mov qword ptr [rbp-0x08], rax
+ mov r8, rdx
+ ;; size=19 bbWeight=1 PerfScore 3.25
G_M7377_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08]
- test rdi, rdi
+ mov r9, gword ptr [rdi+0x08]
+ ; gcrRegs +[r9]
+ test r9, r9
jne SHORT G_M7377_IG04
;; size=9 bbWeight=1 PerfScore 3.25
G_M7377_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdi]
- xor rcx, rcx
- ; byrRegs +[rcx]
- xor r9d, r9d
+ ; gcrRegs -[rdi r9]
+ xor rdx, rdx
+ ; byrRegs +[rdx]
+ xor ecx, ecx
jmp SHORT G_M7377_IG05
- ;; size=7 bbWeight=0.50 PerfScore 1.25
-G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rdi]
- ; byrRegs -[rcx]
- lea rcx, bword ptr [rdi+0x10]
- ; byrRegs +[rcx]
- mov r9d, dword ptr [rdi+0x08]
+ ;; size=6 bbWeight=0.50 PerfScore 1.25
+G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0200 {r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[r9]
+ ; byrRegs -[rdx]
+ lea rdx, bword ptr [r9+0x10]
+ ; byrRegs +[rdx]
+ mov ecx, dword ptr [r9+0x08]
;; size=8 bbWeight=0.50 PerfScore 1.25
-G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
- ; gcrRegs -[rdi]
- mov word ptr [rbp-0x20], si
- mov qword ptr [rbp-0x18], rdx
- mov bword ptr [rbp-0x30], rcx
- mov dword ptr [rbp-0x28], r9d
+G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {rdx}, byref
+ ; gcrRegs -[r9]
mov byte ptr [rbp-0x10], 0
mov byte ptr [rbp-0x0F], 0
- mov rdi, qword ptr [rbp-0x20]
- mov rsi, qword ptr [rbp-0x18]
- mov rdx, bword ptr [rbp-0x30]
- ; byrRegs +[rdx]
- mov rcx, qword ptr [rbp-0x28]
- ; byrRegs -[rcx]
movzx r9, word ptr [rbp-0x10]
+ mov edi, esi
+ mov rsi, r8
lea r8, [rbp-0x08]
call [<unknown method>]
; byrRegs -[rdx]
nop
- ;; size=56 bbWeight=1 PerfScore 14.75
+ ;; size=29 bbWeight=1 PerfScore 7.25
G_M7377_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+ add rsp, 16
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 25, PerfScore 28.33, instruction count 31, allocated bytes for code 111 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
+; Total bytes of code 77, prolog size 16, PerfScore 18.00, instruction count 25, allocated bytes for code 77 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -97,5 +88,5 @@ Unwind Info:
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-25 (-19.38%) : 2864.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan
1[ubyte],int,byref,System.Nullable1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1ubyte@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> rdx single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) byref -> r9 single-def
-; V03 arg3 [V03,T01] ( 5, 5 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdx single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r9 single-def
+; V03 arg3 [V03,T00] ( 5, 5 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
@@ -20,40 +20,36 @@
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp7 [V12,T05] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V18 tmp13 [V18,T09] ( 3, 2 ) ubyte -> rcx "field V10._controlFlags (fldOffset=0x0)" P-INDEP
-; V19 tmp14 [V19,T10] ( 3, 2 ) int -> r10 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
-; V20 tmp15 [V20,T11] ( 2, 2 ) byref -> rax single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp16 [V21,T12] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
-; V22 tmp17 [V22,T13] ( 2, 2 ) ubyte -> rcx "V04.[000..001)"
-; V23 tmp18 [V23,T14] ( 2, 1.50) ubyte -> r8 "V04.[004..005)"
-; V24 tmp19 [V24,T15] ( 2, 1.50) int -> rax "V04.[008..012)"
-; V25 tmp20 [V25,T08] ( 3, 3 ) struct (16) [rbp-0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
-; V26 tmp21 [V26,T02] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V27 tmp22 [V27,T00] ( 4, 8 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V28 tmp23 [V28,T07] ( 2, 4 ) int -> rdx "argument with side effect"
-;* V29 cse0 [V29,T16] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V18 tmp13 [V18,T07] ( 3, 2 ) ubyte -> rcx "field V10._controlFlags (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T08] ( 3, 2 ) int -> r10 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V20 tmp15 [V20,T09] ( 2, 2 ) byref -> rax single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp16 [V21,T10] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
+; V22 tmp17 [V22,T11] ( 2, 2 ) ubyte -> rcx "V04.[000..001)"
+; V23 tmp18 [V23,T12] ( 2, 1.50) ubyte -> r8 "V04.[004..005)"
+; V24 tmp19 [V24,T13] ( 2, 1.50) int -> rax "V04.[008..012)"
+; V25 tmp20 [V25,T06] ( 3, 3 ) struct (16) [rbp-0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
+; V26 tmp21 [V26,T01] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
+;* V27 cse0 [V27,T14] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M37843_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- lea rbp, [rsp+0x40]
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
+ mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x10], r8
mov dword ptr [rbp-0x08], r9d
mov r9, rcx
; byrRegs +[r9]
- ;; size=37 bbWeight=1 PerfScore 7.58
+ ;; size=27 bbWeight=1 PerfScore 5.25
G_M37843_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9}, byref, isz
; byrRegs +[rdi]
movzx rcx, byte ptr [rbp-0x10]
@@ -72,12 +68,8 @@ G_M37843_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9
mov r10d, eax
;; size=7 bbWeight=0.50 PerfScore 0.25
G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9}, byref
- mov bword ptr [rbp-0x38], rdi
- mov dword ptr [rbp-0x30], esi
mov byte ptr [rbp-0x28], cl
mov dword ptr [rbp-0x24], r10d
- mov rdi, bword ptr [rbp-0x38]
- mov rsi, qword ptr [rbp-0x30]
mov rcx, qword ptr [rbp-0x28]
mov r8d, 2
call [System.Formats.Asn1.AsnDecoder:GetIntegerContents(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,byref):System.ReadOnlySpan`1[ubyte]]
@@ -86,14 +78,14 @@ G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9},
mov qword ptr [rbp-0x18], rdx
mov rax, bword ptr [rbp-0x20]
mov edx, dword ptr [rbp-0x18]
- ;; size=53 bbWeight=1 PerfScore 14.25
+ ;; size=38 bbWeight=1 PerfScore 10.25
G_M37843_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 129, prolog size 26, PerfScore 29.33, instruction count 36, allocated bytes for code 129 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
+; Total bytes of code 104, prolog size 16, PerfScore 23.00, instruction count 30, allocated bytes for code 104 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
@@ -106,5 +98,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+6 (+2.31%) : 16903.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemTaskSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]):this (FullOpts)
@@ -9,19 +9,17 @@
; Final local variable assignments
;
; V00 this [V00,T05] ( 3, 6 ) ref -> r14 this class-hnd single-def <MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext>
-; V01 arg1 [V01,T02] ( 16, 12.50) ref -> rbx class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-; V02 arg2 [V02,T03] ( 7, 15.50) ref -> r15 class-hnd single-def <System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]>
+; V01 arg1 [V01,T04] ( 16, 12.50) ref -> r15 class-hnd single-def <System.Text.Json.Utf8JsonWriter>
+; V02 arg2 [V02,T02] ( 7, 15.50) ref -> rbx class-hnd single-def <System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]>
; V03 loc0 [V03,T00] ( 7, 24.50) int -> r13
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V06 tmp2 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V08 tmp4 [V08,T01] ( 3, 24 ) ref -> rdi "arr expr"
-;* V09 tmp5 [V09,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-;* V10 tmp6 [V10,T07] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V11 tmp7 [V11,T04] ( 2, 16 ) ref -> rdx "argument with side effect"
-; V12 cse0 [V12,T08] ( 4, 2 ) int -> rax "CSE - moderate"
-; V13 cse1 [V13,T09] ( 4, 2 ) int -> rdi "CSE - moderate"
+; V08 tmp4 [V08,T01] ( 3, 24 ) ref -> rdx "arr expr"
+; V09 tmp5 [V09,T03] ( 2, 16 ) ref -> rdx "argument with side effect"
+; V10 cse0 [V10,T06] ( 4, 2 ) int -> rax "CSE - aggressive"
+; V11 cse1 [V11,T07] ( 4, 2 ) int -> rdi "CSE - aggressive"
;
; Lcl frame size = 0
@@ -34,18 +32,18 @@ G_M65212_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
lea rbp, [rsp+0x20]
mov r14, rdi
; gcrRegs +[r14]
- mov rbx, rsi
- ; gcrRegs +[rbx]
- mov r15, rdx
+ mov r15, rsi
; gcrRegs +[r15]
+ mov rbx, rdx
+ ; gcrRegs +[rbx]
;; size=22 bbWeight=1 PerfScore 6.25
G_M65212_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- test r15, r15
+ test rbx, rbx
jne SHORT G_M65212_IG05
;; size=5 bbWeight=1 PerfScore 1.25
-G_M65212_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14-r15]
- mov rdi, rbx
+G_M65212_IG03: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r14]
+ mov rdi, r15
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
;; size=5 bbWeight=0.50 PerfScore 1.62
@@ -59,42 +57,42 @@ G_M65212_IG04: ; bbWeight=0.50, epilog, nogc, extend
; gcr arg pop 0
;; size=14 bbWeight=0.50 PerfScore 2.25
G_M65212_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rdi] +[r14-r15]
- cmp byte ptr [rbx], bl
- mov rdi, rbx
+ ; gcrRegs -[rdi] +[rbx r14]
+ cmp byte ptr [r15], r15b
+ mov rdi, r15
; gcrRegs +[rdi]
mov esi, 91
call [System.Text.Json.Utf8JsonWriter:WriteStart(ubyte):this]
; gcrRegs -[rdi]
; gcr arg pop 0
- mov byte ptr [rbx+0x36], 3
+ mov byte ptr [r15+0x36], 3
xor r13d, r13d
- cmp dword ptr [r15+0x10], 0
+ cmp dword ptr [rbx+0x10], 0
jle SHORT G_M65212_IG07
- ;; size=30 bbWeight=0.50 PerfScore 5.88
+ ;; size=31 bbWeight=0.50 PerfScore 5.88
G_M65212_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- cmp r13d, dword ptr [r15+0x10]
+ cmp r13d, dword ptr [rbx+0x10]
jae G_M65212_IG15
- mov rdi, gword ptr [r15+0x08]
- ; gcrRegs +[rdi]
- cmp r13d, dword ptr [rdi+0x08]
+ mov rdx, gword ptr [rbx+0x08]
+ ; gcrRegs +[rdx]
+ cmp r13d, dword ptr [rdx+0x08]
jae G_M65212_IG14
mov esi, r13d
- mov rdx, gword ptr [rdi+8*rsi+0x10]
- ; gcrRegs +[rdx]
- mov rdi, r14
- mov rsi, rbx
+ mov rdx, gword ptr [rdx+8*rsi+0x10]
+ mov rsi, r15
; gcrRegs +[rsi]
+ mov rdi, r14
+ ; gcrRegs +[rdi]
call [MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:MyEventsListerItemTaskSerializeHandler(System.Text.Json.Utf8JsonWriter,MicroBenchmarks.Serializers.MyEventsListerItemTask):this]
; gcrRegs -[rdx rsi rdi]
; gcr arg pop 0
inc r13d
- cmp r13d, dword ptr [r15+0x10]
+ cmp r13d, dword ptr [rbx+0x10]
jl SHORT G_M65212_IG06
;; size=53 bbWeight=4 PerfScore 80.00
-G_M65212_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r14-r15]
- mov edi, dword ptr [rbx+0x6C]
+G_M65212_IG07: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx r14]
+ mov edi, dword ptr [r15+0x6C]
mov esi, edi
and esi, 3
cmp esi, 2
@@ -103,15 +101,15 @@ G_M65212_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
je SHORT G_M65212_IG09
test dil, 2
jne SHORT G_M65212_IG08
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
mov esi, 93
call [<unknown method>]
; gcrRegs -[rdi]
; gcr arg pop 0
- ;; size=39 bbWeight=0.50 PerfScore 4.88
-G_M65212_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov rdi, rbx
+ ;; size=40 bbWeight=0.50 PerfScore 4.88
+G_M65212_IG08: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, r15
; gcrRegs +[rdi]
mov esi, 93
call [<unknown method>]
@@ -119,34 +117,34 @@ G_M65212_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
jmp SHORT G_M65212_IG11
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M65212_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, rbx
+G_M65212_IG09: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, r15
; gcrRegs +[rdi]
mov esi, 93
call [<unknown method>]
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=14 bbWeight=0.50 PerfScore 1.75
-G_M65212_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, rbx
+G_M65212_IG10: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov rdi, r15
; gcrRegs +[rdi]
mov esi, 93
call [System.Text.Json.Utf8JsonWriter:WriteEndMinimized(ubyte):this]
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=14 bbWeight=0.50 PerfScore 1.75
-G_M65212_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbx+0x28]
+G_M65212_IG11: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [r15+0x28]
or eax, 0xD1FFAB1E
- mov dword ptr [rbx+0x28], eax
+ mov dword ptr [r15+0x28], eax
test eax, 0xD1FFAB1E
je SHORT G_M65212_IG12
dec eax
- mov dword ptr [rbx+0x28], eax
- ;; size=23 bbWeight=0.50 PerfScore 2.88
-G_M65212_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov byte ptr [rbx+0x36], 4
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ mov dword ptr [r15+0x28], eax
+ ;; size=26 bbWeight=0.50 PerfScore 2.88
+G_M65212_IG12: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ mov byte ptr [r15+0x36], 4
+ ;; size=5 bbWeight=0.50 PerfScore 0.50
G_M65212_IG13: ; bbWeight=0.50, epilog, nogc, extend
pop rbx
pop r13
@@ -156,7 +154,7 @@ G_M65212_IG13: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.75
G_M65212_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx]
+ ; gcrRegs -[r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
@@ -166,7 +164,7 @@ G_M65212_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 22, PerfScore 113.50, instruction count 79, allocated bytes for code 260 (MethodHash=4a170143) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemTaskSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]):this (FullOpts)
+; Total bytes of code 266, prolog size 22, PerfScore 113.50, instruction count 79, allocated bytes for code 266 (MethodHash=4a170143) for method MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemTaskSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]):this (FullOpts)
; ============================================================
Unwind Info:
+2 (+2.90%) : 29395.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:set_Item(int,int):this (FullOpts)
@@ -8,53 +8,48 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[int,int]>
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> rsi single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) int -> r8 single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> r8 single-def
+; V02 arg2 [V02,T03] ( 3, 3 ) int -> r9 single-def
; V03 loc0 [V03 ] ( 1, 1 ) int -> [rsp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T04] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;* V07 tmp2 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V08 tmp3 [V08,T09] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
+; V06 tmp1 [V06,T04] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;* V07 tmp2 [V07,T05] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V08 tmp3 [V08,T06] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
; V09 tmp4 [V09,T01] ( 3, 6 ) struct ( 8) [rsp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V10 tmp5 [V10,T07] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V11 tmp6 [V11,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V12 tmp7 [V12,T06] ( 2, 4 ) int -> rcx "argument with side effect"
;
; Lcl frame size = 40
G_M26455_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
- mov r8d, edx
- ;; size=7 bbWeight=1 PerfScore 0.50
+ mov r8d, esi
+ mov r9d, edx
+ ;; size=10 bbWeight=1 PerfScore 0.75
G_M26455_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- mov rdx, gword ptr [rdi+0x08]
- ; gcrRegs +[rdx]
- mov ecx, esi
- mov byte ptr [rsp+0x18], 0
- xor esi, esi
- mov dword ptr [rsp+0x1C], esi
- mov dword ptr [rsp], 1
- lea rsi, [rsp+0x20]
- mov qword ptr [rsp+0x08], rsi
- mov rsi, rdx
+ mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
- mov edx, ecx
- ; gcrRegs -[rdx]
+ mov byte ptr [rsp+0x18], 0
+ xor ecx, ecx
+ mov dword ptr [rsp+0x1C], ecx
+ mov dword ptr [rsp], 1
+ lea rcx, [rsp+0x20]
+ mov qword ptr [rsp+0x08], rcx
mov rcx, qword ptr [rsp+0x18]
+ mov edx, r8d
+ mov r8d, r9d
mov r9d, 1
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
nop
- ;; size=57 bbWeight=1 PerfScore 12.00
+ ;; size=56 bbWeight=1 PerfScore 11.75
G_M26455_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 69, prolog size 4, PerfScore 13.75, instruction count 18, allocated bytes for code 69 (MethodHash=ae9b98a8) for method System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:set_Item(int,int):this (FullOpts)
+; Total bytes of code 71, prolog size 4, PerfScore 13.75, instruction count 18, allocated bytes for code 71 (MethodHash=ae9b98a8) for method System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:set_Item(int,int):this (FullOpts)
; ============================================================
Unwind Info:
+6 (+3.33%) : 5090.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
@@ -27,7 +27,7 @@
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "field V01.HasIndex (fldOffset=0x10)" P-INDEP
; V17 tmp14 [V17,T09] ( 2, 1 ) ubyte -> rcx single-def "field V02.hasValue (fldOffset=0x0)" P-INDEP
; V18 tmp15 [V18,T10] ( 2, 1 ) int -> rdx single-def "field V02.value (fldOffset=0x4)" P-INDEP
-; V19 tmp16 [V19,T03] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V19 tmp16 [V19,T03] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V20 cse0 [V20,T08] ( 3, 1.50) int -> r13 "CSE - moderate"
; V21 cse1 [V21,T04] ( 4, 2 ) int -> rdi "CSE - aggressive"
; V22 cse2 [V22,T02] ( 5, 3.50) ref -> r15 "CSE - aggressive"
@@ -60,16 +60,19 @@ G_M12313_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
lea r13d, [rdi-0x01]
mov eax, r13d
cmp eax, edi
- jae SHORT G_M12313_IG10
- lea rdi, bword ptr [rbx+0x48]
- ; byrRegs +[rdi]
- mov rsi, gword ptr [rsi+0x08]
- cmp eax, dword ptr [rsi+0x08]
+ jae G_M12313_IG10
+ mov rdi, gword ptr [rsi+0x08]
+ ; gcrRegs +[rdi]
+ cmp eax, dword ptr [rdi+0x08]
jae SHORT G_M12313_IG09
- lea rax, [rax+2*rax]
- lea rsi, bword ptr [rsi+8*rax+0x10]
+ mov esi, eax
; gcrRegs -[rsi]
+ lea rsi, [rsi+2*rsi]
+ lea rsi, bword ptr [rdi+8*rsi+0x10]
; byrRegs +[rsi]
+ lea rdi, bword ptr [rbx+0x48]
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
@@ -81,7 +84,7 @@ G_M12313_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call [System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]:RemoveAt(int):this]
; gcrRegs -[rdi r15]
jmp SHORT G_M12313_IG05
- ;; size=71 bbWeight=0.50 PerfScore 12.00
+ ;; size=77 bbWeight=0.50 PerfScore 12.12
G_M12313_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rbx+0x50]
xor edi, edi
@@ -129,7 +132,7 @@ G_M12313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 13, PerfScore 38.88, instruction count 61, allocated bytes for code 180 (MethodHash=3fb5cfe6) for method Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
+; Total bytes of code 186, prolog size 13, PerfScore 39.00, instruction count 62, allocated bytes for code 186 (MethodHash=3fb5cfe6) for method Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.linux.x64.checked.mch
-31 (-27.93%) : 19077.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
@@ -12,33 +12,19 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[] "Cast away GC"
; V06 tmp2 [V06 ] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [rbp-0x34] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [rbp-0x38] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- lea rbp, [rsp+0x40]
- xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
mov gword ptr [rbp-0x08], rdi
mov dword ptr [rbp-0x0C], esi
mov dword ptr [rbp-0x10], edx
mov bword ptr [rbp-0x18], rcx
- ;; size=30 bbWeight=1 PerfScore 7.00
+ ;; size=24 bbWeight=1 PerfScore 5.75
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r8, gword ptr [rbp-0x08]
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x30], r8
- mov r8d, dword ptr [rbp-0x0C]
- ; gcrRegs -[r8]
- movzx r8, r8w
- mov dword ptr [rbp-0x34], r8d
- mov r8d, dword ptr [rbp-0x10]
- mov dword ptr [rbp-0x38], r8d
mov r8, bword ptr [rbp-0x18]
; byrRegs +[r8]
mov qword ptr [rbp-0x20], r8
@@ -46,22 +32,23 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
mov qword ptr [rbp-0x28], r8
mov r8, qword ptr [rbp-0x28]
- mov rsi, gword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x0C]
+ movzx rdx, dx
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
- mov edx, dword ptr [rbp-0x34]
- mov ecx, dword ptr [rbp-0x38]
+ mov ecx, dword ptr [rbp-0x10]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
call [<unknown method>]
; gcrRegs -[rsi]
nop
- ;; size=75 bbWeight=1 PerfScore 17.75
+ ;; size=50 bbWeight=1 PerfScore 11.75
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 16, PerfScore 26.50, instruction count 30, allocated bytes for code 111 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
+; Total bytes of code 80, prolog size 10, PerfScore 19.25, instruction count 22, allocated bytes for code 80 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -74,5 +61,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-31 (-27.93%) : 19031.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
@@ -12,33 +12,19 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[] "Cast away GC"
; V06 tmp2 [V06 ] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [rbp-0x34] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [rbp-0x38] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- lea rbp, [rsp+0x40]
- xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
mov gword ptr [rbp-0x08], rdi
mov dword ptr [rbp-0x0C], esi
mov dword ptr [rbp-0x10], edx
mov bword ptr [rbp-0x18], rcx
- ;; size=30 bbWeight=1 PerfScore 7.00
+ ;; size=24 bbWeight=1 PerfScore 5.75
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r8, gword ptr [rbp-0x08]
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x30], r8
- mov r8d, dword ptr [rbp-0x0C]
- ; gcrRegs -[r8]
- movzx r8, r8w
- mov dword ptr [rbp-0x34], r8d
- mov r8d, dword ptr [rbp-0x10]
- mov dword ptr [rbp-0x38], r8d
mov r8, bword ptr [rbp-0x18]
; byrRegs +[r8]
mov qword ptr [rbp-0x20], r8
@@ -46,22 +32,23 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
mov qword ptr [rbp-0x28], r8
mov r8, qword ptr [rbp-0x28]
- mov rsi, gword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x0C]
+ movzx rdx, dx
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
- mov edx, dword ptr [rbp-0x34]
- mov ecx, dword ptr [rbp-0x38]
+ mov ecx, dword ptr [rbp-0x10]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
call [<unknown method>]
; gcrRegs -[rsi]
nop
- ;; size=75 bbWeight=1 PerfScore 17.75
+ ;; size=50 bbWeight=1 PerfScore 11.75
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 16, PerfScore 26.50, instruction count 30, allocated bytes for code 111 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 80, prolog size 10, PerfScore 19.25, instruction count 22, allocated bytes for code 80 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -74,5 +61,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-35 (-20.35%) : 90772.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Instrumented Tier0)
@@ -14,35 +14,23 @@
; V06 tmp1 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "handle histogram profile tmp"
; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init "argument with side effect"
; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp6 [V11 ] ( 1, 1 ) ref -> [rbp-0x58] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 80
G_M32191_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 96
- lea rbp, [rsp+0x60]
- xor eax, eax
- mov qword ptr [rbp-0x58], rax
+ sub rsp, 80
+ lea rbp, [rsp+0x50]
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x50], ymm8
- vmovdqa xmmword ptr [rbp-0x30], xmm8
+ vmovdqu ymmword ptr [rbp-0x40], ymm8
mov gword ptr [rbp-0x08], rdi
mov gword ptr [rbp-0x10], rsi
mov bword ptr [rbp-0x18], rdx
mov gword ptr [rbp-0x20], rcx
- ;; size=47 bbWeight=1 PerfScore 11.33
+ ;; size=36 bbWeight=1 PerfScore 8.08
G_M32191_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rbp-0x08]
+ mov rdi, gword ptr [rbp-0x10]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x58], rdi
- mov rdi, gword ptr [rbp-0x10]
- mov gword ptr [rbp-0x48], rdi
- mov rdi, gword ptr [rbp-0x20]
- mov gword ptr [rbp-0x50], rdi
- mov rdi, gword ptr [rbp-0x10]
mov gword ptr [rbp-0x30], rdi
mov rdi, gword ptr [rbp-0x30]
mov rsi, 0xD1FFAB1E
@@ -64,27 +52,27 @@ G_M32191_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
mov gword ptr [rsp], r8
mov r8, gword ptr [rbp-0x40]
- mov rsi, gword ptr [rbp-0x48]
- ; gcrRegs +[rsi]
- mov rdx, gword ptr [rbp-0x50]
- ; gcrRegs +[rdx]
- mov rdi, gword ptr [rbp-0x58]
- ; gcrRegs +[rdi]
lea rcx, [rbp-0x28]
+ mov rsi, gword ptr [rbp-0x10]
+ ; gcrRegs +[rsi]
+ mov rdx, gword ptr [rbp-0x20]
+ ; gcrRegs +[rdx]
+ mov rdi, gword ptr [rbp-0x08]
+ ; gcrRegs +[rdi]
mov r9, bword ptr [rbp-0x18]
; byrRegs +[r9]
call [<unknown method>]
; gcrRegs -[rax rdx rsi rdi r8]
; byrRegs -[r9]
nop
- ;; size=119 bbWeight=1 PerfScore 32.25
+ ;; size=95 bbWeight=1 PerfScore 26.25
G_M32191_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 80
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 172, prolog size 31, PerfScore 45.33, instruction count 44, allocated bytes for code 172 (MethodHash=28548240) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Instrumented Tier0)
+; Total bytes of code 137, prolog size 20, PerfScore 36.08, instruction count 35, allocated bytes for code 137 (MethodHash=28548240) for method Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -97,5 +85,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+7 (+2.21%) : 1053.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
@@ -5,68 +5,69 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x10] do-not-enreg[] this
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct (16) [rbp-0x28] do-not-enreg[XSFA] multireg-arg addr-exposed ld-addr-op <System.Span`1[ubyte]>
-; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x2C] do-not-enreg[]
-; V04 loc1 [V04 ] ( 1, 1 ) int -> [rbp-0x30] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x08] do-not-enreg[] this
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] class-hnd <System.String>
+; V02 arg2 [V02 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XSFA] multireg-arg addr-exposed ld-addr-op <System.Span`1[ubyte]>
+; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x24] do-not-enreg[]
+; V04 loc1 [V04 ] ( 1, 1 ) int -> [rbp-0x28] do-not-enreg[]
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x40] do-not-enreg[SAR] multireg-arg multireg-ret must-init "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init class-hnd "impAppendStmt" <<unknown class>>
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[] "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[] "Cast away GC"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[SAR] multireg-arg multireg-ret must-init "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
+; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "argument with side effect"
+; V09 tmp4 [V09 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[] "argument with side effect"
+; V10 tmp5 [V10 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[] "Cast away GC"
;
-; Lcl frame size = 88
+; Lcl frame size = 96
G_M1038_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 88
+ sub rsp, 96
lea rbp, [rsp+0x60]
+ xor eax, eax
+ mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x50], ymm8
- mov bword ptr [rbp-0x10], rdi
- mov gword ptr [rbp-0x18], rsi
- mov bword ptr [rbp-0x28], rdx
- mov qword ptr [rbp-0x20], rcx
- ;; size=37 bbWeight=1 PerfScore 9.08
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0x30], rax
+ mov bword ptr [rbp-0x08], rdi
+ mov gword ptr [rbp-0x10], rsi
+ mov bword ptr [rbp-0x20], rdx
+ mov qword ptr [rbp-0x18], rcx
+ ;; size=46 bbWeight=1 PerfScore 10.33
G_M1038_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, bword ptr [rbp-0x10]
+ mov rax, bword ptr [rbp-0x08]
; byrRegs +[rax]
mov byte ptr [rax+0x08], 0
- cmp gword ptr [rbp-0x18], 0
+ cmp gword ptr [rbp-0x10], 0
jne SHORT G_M1038_IG04
- mov rax, bword ptr [rbp-0x10]
+ mov rax, bword ptr [rbp-0x08]
xor ecx, ecx
mov qword ptr [rax], rcx
;; size=24 bbWeight=1 PerfScore 7.25
G_M1038_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
- pop rbx
+ add rsp, 96
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M1038_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
- mov rax, gword ptr [rbp-0x18]
+ mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
mov eax, eax
lea rax, [rax+2*rax]
- mov ecx, dword ptr [rbp-0x20]
+ mov ecx, dword ptr [rbp-0x18]
mov ecx, ecx
cmp rax, rcx
jl SHORT G_M1038_IG05
call [<unknown method>]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x50], rax
- mov rdi, gword ptr [rbp-0x50]
+ mov gword ptr [rbp-0x48], rax
+ mov rdi, gword ptr [rbp-0x48]
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x18]
+ mov rsi, gword ptr [rbp-0x10]
; gcrRegs +[rsi]
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x58]
@@ -74,55 +75,55 @@ G_M1038_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[rsi rdi]
add eax, 1
jo G_M1038_IG08
- mov dword ptr [rbp-0x30], eax
- mov edi, dword ptr [rbp-0x30]
- cmp edi, dword ptr [rbp-0x20]
+ mov dword ptr [rbp-0x28], eax
+ mov edi, dword ptr [rbp-0x28]
+ cmp edi, dword ptr [rbp-0x18]
jle SHORT G_M1038_IG05
- mov edi, dword ptr [rbp-0x30]
+ mov edi, dword ptr [rbp-0x28]
movsxd rdi, edi
call [<unknown method>]
- mov qword ptr [rbp-0x58], rax
- mov rsi, qword ptr [rbp-0x58]
- lea rdi, [rbp-0x28]
- mov edx, dword ptr [rbp-0x30]
+ mov qword ptr [rbp-0x50], rax
+ mov rsi, qword ptr [rbp-0x50]
+ lea rdi, [rbp-0x20]
+ mov edx, dword ptr [rbp-0x28]
call [<unknown method>]
- mov rdi, bword ptr [rbp-0x10]
+ mov rdi, bword ptr [rbp-0x08]
; byrRegs +[rdi]
mov byte ptr [rdi+0x08], 1
;; size=116 bbWeight=1 PerfScore 39.25
G_M1038_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- mov rbx, bword ptr [rbp-0x10]
- ; byrRegs +[rbx]
- mov rdi, bword ptr [rbp-0x28]
+ mov rdi, bword ptr [rbp-0x20]
; byrRegs +[rdi]
- mov rsi, qword ptr [rbp-0x20]
+ mov rsi, qword ptr [rbp-0x18]
call [<unknown method>]
; byrRegs -[rdi] +[rax]
- mov qword ptr [rbp-0x60], rax
- mov rax, qword ptr [rbp-0x60]
+ mov qword ptr [rbp-0x58], rax
+ mov rax, qword ptr [rbp-0x58]
; byrRegs -[rax]
- mov qword ptr [rbx], rax
+ mov rcx, bword ptr [rbp-0x08]
+ ; byrRegs +[rcx]
+ mov qword ptr [rcx], rax
call [<unknown method>]
; gcrRegs +[rax]
- ; byrRegs -[rbx]
- mov gword ptr [rbp-0x48], rax
- mov rdi, gword ptr [rbp-0x18]
+ ; byrRegs -[rcx]
+ mov gword ptr [rbp-0x40], rax
+ mov rdi, gword ptr [rbp-0x10]
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rdi]
; byrRegs +[rax]
- mov bword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x38], rdx
- mov rcx, bword ptr [rbp-0x28]
+ mov bword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rdx
+ mov rcx, bword ptr [rbp-0x20]
; byrRegs +[rcx]
- mov r8, qword ptr [rbp-0x20]
- mov rsi, bword ptr [rbp-0x40]
+ mov r8, qword ptr [rbp-0x18]
+ mov rsi, bword ptr [rbp-0x38]
; byrRegs +[rsi]
- mov rdx, qword ptr [rbp-0x38]
- mov rdi, gword ptr [rbp-0x48]
+ mov rdx, qword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x48]
+ mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
; byrRegs -[rax]
mov rax, qword ptr [rax]
@@ -131,22 +132,21 @@ G_M1038_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [rax+0x28]<unknown method>
; gcrRegs -[rdi]
; byrRegs -[rcx rsi]
- mov dword ptr [rbp-0x2C], eax
- mov eax, dword ptr [rbp-0x20]
- cmp dword ptr [rbp-0x2C], eax
+ mov dword ptr [rbp-0x24], eax
+ mov eax, dword ptr [rbp-0x18]
+ cmp dword ptr [rbp-0x24], eax
jae SHORT G_M1038_IG07
- mov rax, bword ptr [rbp-0x28]
+ mov rax, bword ptr [rbp-0x20]
; byrRegs +[rax]
- mov ecx, dword ptr [rbp-0x2C]
+ mov ecx, dword ptr [rbp-0x24]
mov ecx, ecx
mov byte ptr [rax+rcx], 0
;; size=115 bbWeight=1 PerfScore 40.25
G_M1038_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
- pop rbx
+ add rsp, 96
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M1038_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -156,7 +156,7 @@ G_M1038_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 317, prolog size 21, PerfScore 100.33, instruction count 90, allocated bytes for code 317 (MethodHash=85e8fbf1) for method System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
+; Total bytes of code 324, prolog size 30, PerfScore 100.58, instruction count 90, allocated bytes for code 324 (MethodHash=85e8fbf1) for method System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
; ============================================================
Unwind Info:
@@ -164,11 +164,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+13 (+2.49%) : 90805.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol
@@ -5,62 +5,63 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V01 loc0 [V01 ] ( 1, 1 ) int -> [rbp-0x14] do-not-enreg[] must-init
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V01 loc0 [V01 ] ( 1, 1 ) int -> [rbp-0x0C] do-not-enreg[] must-init
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Reusable Box Helper"
-; V04 tmp2 [V04 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "handle histogram profile tmp"
-; V05 tmp3 [V05 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "handle histogram profile tmp"
-; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init "handle histogram profile tmp"
-; V07 tmp5 [V07 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "handle histogram profile tmp"
-; V08 tmp6 [V08 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "handle histogram profile tmp"
-; V09 tmp7 [V09 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init "handle histogram profile tmp"
-; V10 tmp8 [V10 ] ( 1, 1 ) ref -> [rbp-0x58] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp9 [V11 ] ( 1, 1 ) ref -> [rbp-0x60] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp10 [V12 ] ( 1, 1 ) ref -> [rbp-0x68] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp11 [V13 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp12 [V14 ] ( 1, 1 ) ref -> [rbp-0x78] do-not-enreg[] must-init "argument with side effect"
-; V15 tmp13 [V15 ] ( 1, 1 ) ref -> [rbp-0x80] do-not-enreg[] must-init "argument with side effect"
+; V03 tmp1 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "Reusable Box Helper"
+; V04 tmp2 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "handle histogram profile tmp"
+; V05 tmp3 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "handle histogram profile tmp"
+; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "handle histogram profile tmp"
+; V07 tmp5 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init "handle histogram profile tmp"
+; V08 tmp6 [V08 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "handle histogram profile tmp"
+; V09 tmp7 [V09 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "handle histogram profile tmp"
+; V10 tmp8 [V10 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init "argument with side effect"
+; V11 tmp9 [V11 ] ( 1, 1 ) ref -> [rbp-0x58] do-not-enreg[] must-init "argument with side effect"
+; V12 tmp10 [V12 ] ( 1, 1 ) ref -> [rbp-0x60] do-not-enreg[] must-init "argument with side effect"
+; V13 tmp11 [V13 ] ( 1, 1 ) ref -> [rbp-0x68] do-not-enreg[] must-init "argument with side effect"
+; V14 tmp12 [V14 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init "argument with side effect"
+; V15 tmp13 [V15 ] ( 1, 1 ) ref -> [rbp-0x78] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 120
+; Lcl frame size = 128
G_M55244_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 120
+ sub rsp, 128
lea rbp, [rsp+0x80]
+ xor eax, eax
+ mov qword ptr [rbp-0x78], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x80], ymm8
- vmovdqu ymmword ptr [rbp-0x60], ymm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
- vmovdqa xmmword ptr [rbp-0x20], xmm8
- mov gword ptr [rbp-0x10], rdi
- ;; size=43 bbWeight=1 PerfScore 12.08
+ vmovdqu ymmword ptr [rbp-0x70], ymm8
+ vmovdqu ymmword ptr [rbp-0x50], ymm8
+ vmovdqu ymmword ptr [rbp-0x30], ymm8
+ mov qword ptr [rbp-0x10], rax
+ mov gword ptr [rbp-0x08], rdi
+ ;; size=50 bbWeight=1 PerfScore 11.33
G_M55244_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x10]
+ mov rdi, gword ptr [rbp-0x08]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x28], rdi
- mov rdi, gword ptr [rbp-0x28]
+ mov gword ptr [rbp-0x20], rdi
+ mov rdi, gword ptr [rbp-0x20]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x58], rdi
- mov rdi, gword ptr [rbp-0x58]
- mov rax, gword ptr [rbp-0x58]
+ mov gword ptr [rbp-0x50], rdi
+ mov rdi, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x58]
call [rax]<unknown method>
; gcrRegs -[rdi]
- mov dword ptr [rbp-0x14], eax
- cmp dword ptr [rbp-0x14], 5
+ mov dword ptr [rbp-0x0C], eax
+ cmp dword ptr [rbp-0x0C], 5
je G_M55244_IG08
- cmp dword ptr [rbp-0x14], 9
+ cmp dword ptr [rbp-0x0C], 9
je SHORT G_M55244_IG04
- cmp dword ptr [rbp-0x14], 15
+ cmp dword ptr [rbp-0x0C], 15
je G_M55244_IG06
;; size=81 bbWeight=1 PerfScore 25.25
G_M55244_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
@@ -69,31 +70,31 @@ G_M55244_IG03: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M55244_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- mov rdi, gword ptr [rbp-0x10]
+ mov rdi, gword ptr [rbp-0x08]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x38], rdi
- mov rdi, gword ptr [rbp-0x38]
+ mov gword ptr [rbp-0x30], rdi
+ mov rdi, gword ptr [rbp-0x30]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rdi]
- mov rsi, gword ptr [rbp-0x38]
+ mov rsi, gword ptr [rbp-0x30]
; gcrRegs +[rsi]
- mov gword ptr [rbp-0x60], rsi
- mov rsi, gword ptr [rbp-0x60]
+ mov gword ptr [rbp-0x58], rsi
+ mov rsi, gword ptr [rbp-0x58]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[rsi] +[rax]
- mov gword ptr [rbp-0x30], rax
- mov rdi, gword ptr [rbp-0x30]
+ mov gword ptr [rbp-0x28], rax
+ mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
- mov rdi, gword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x68], rdi
- mov rdi, gword ptr [rbp-0x68]
- mov rax, gword ptr [rbp-0x68]
+ mov gword ptr [rbp-0x60], rdi
+ mov rdi, gword ptr [rbp-0x60]
+ mov rax, gword ptr [rbp-0x60]
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
@@ -103,40 +104,39 @@ G_M55244_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=122 bbWeight=1 PerfScore 24.25
G_M55244_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 120
- pop rbx
+ add rsp, 128
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M55244_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E
call CORINFO_HELP_COUNTPROFILE32
- mov rdi, gword ptr [rbp-0x10]
+ mov rdi, gword ptr [rbp-0x08]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x48], rdi
- mov rdi, gword ptr [rbp-0x48]
+ mov gword ptr [rbp-0x40], rdi
+ mov rdi, gword ptr [rbp-0x40]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rdi]
- mov rsi, gword ptr [rbp-0x48]
+ mov rsi, gword ptr [rbp-0x40]
; gcrRegs +[rsi]
- mov gword ptr [rbp-0x70], rsi
- mov rsi, gword ptr [rbp-0x70]
+ mov gword ptr [rbp-0x68], rsi
+ mov rsi, gword ptr [rbp-0x68]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_CHKCASTCLASS
; gcrRegs -[rsi] +[rax]
- mov gword ptr [rbp-0x40], rax
- mov rdi, gword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x38], rax
+ mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
- mov rdi, gword ptr [rbp-0x40]
+ mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x78], rdi
- mov rdi, gword ptr [rbp-0x78]
- mov rax, gword ptr [rbp-0x78]
+ mov gword ptr [rbp-0x70], rdi
+ mov rdi, gword ptr [rbp-0x70]
+ mov rax, gword ptr [rbp-0x70]
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
@@ -146,11 +146,10 @@ G_M55244_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
nop
;; size=121 bbWeight=1 PerfScore 24.25
G_M55244_IG07: ; bbWeight=1, epilog, nogc, extend
- add rsp, 120
- pop rbx
+ add rsp, 128
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M55244_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E
@@ -161,42 +160,40 @@ G_M55244_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
mov rax, gword ptr [rax+0x08]
;; size=32 bbWeight=1 PerfScore 5.50
G_M55244_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 120
- pop rbx
+ add rsp, 128
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=9 bbWeight=1 PerfScore 1.75
G_M55244_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov gword ptr [rbp-0x20], rax
- mov rbx, gword ptr [rbp-0x20]
- ; gcrRegs +[rbx]
- mov rdi, gword ptr [rbp-0x10]
+ mov gword ptr [rbp-0x18], rax
+ mov rdi, gword ptr [rbp-0x08]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x50], rdi
- mov rdi, gword ptr [rbp-0x50]
+ mov gword ptr [rbp-0x48], rdi
+ mov rdi, gword ptr [rbp-0x48]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
- mov rdi, gword ptr [rbp-0x50]
+ mov rdi, gword ptr [rbp-0x48]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x80], rdi
- mov rdi, gword ptr [rbp-0x80]
- mov rax, gword ptr [rbp-0x80]
+ mov gword ptr [rbp-0x78], rdi
+ mov rdi, gword ptr [rbp-0x78]
...
+8 (+4.28%) : 82807.dasm - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (Instrumented Tier0)
@@ -5,77 +5,77 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x10] do-not-enreg[] this
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] class-hnd <System.IO.Stream>
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x08] do-not-enreg[] this
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] class-hnd <System.IO.Stream>
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [rbp-0x14] do-not-enreg[]
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init class-hnd exact "NewObj constructor temp" <<unknown class>>
-; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "handle histogram profile tmp"
-; V06 tmp3 [V06 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp4 [V07 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init "argument with side effect"
+; V04 tmp1 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V05 tmp2 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "handle histogram profile tmp"
+; V06 tmp3 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp4 [V07 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M36073_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 56
+ sub rsp, 64
lea rbp, [rsp+0x40]
+ xor eax, eax
+ mov qword ptr [rbp-0x38], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x40], ymm8
- mov bword ptr [rbp-0x10], rdi
- mov gword ptr [rbp-0x18], rsi
- mov dword ptr [rbp-0x1C], edx
- ;; size=32 bbWeight=1 PerfScore 8.08
+ vmovdqa xmmword ptr [rbp-0x30], xmm8
+ mov qword ptr [rbp-0x20], rax
+ mov bword ptr [rbp-0x08], rdi
+ mov gword ptr [rbp-0x10], rsi
+ mov dword ptr [rbp-0x14], edx
+ ;; size=41 bbWeight=1 PerfScore 9.33
G_M36073_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rbx, bword ptr [rbp-0x10]
- ; byrRegs +[rbx]
- mov rdi, gword ptr [rbp-0x18]
+ mov rdi, gword ptr [rbp-0x10]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x30], rdi
- mov rdi, gword ptr [rbp-0x30]
+ mov gword ptr [rbp-0x28], rdi
+ mov rdi, gword ptr [rbp-0x28]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rdi]
- mov rdi, gword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x28]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x38], rdi
- mov rdi, gword ptr [rbp-0x38]
- mov rax, gword ptr [rbp-0x38]
+ mov gword ptr [rbp-0x30], rdi
+ mov rdi, gword ptr [rbp-0x30]
+ mov rax, gword ptr [rbp-0x30]
; gcrRegs +[rax]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x50]
call [rax+0x10]<unknown method>
; gcrRegs -[rdi]
- mov qword ptr [rbx+0x08], rax
- mov rdi, bword ptr [rbp-0x10]
+ mov rdi, bword ptr [rbp-0x08]
; byrRegs +[rdi]
- mov eax, dword ptr [rbp-0x1C]
+ mov qword ptr [rdi+0x08], rax
+ mov rdi, bword ptr [rbp-0x08]
+ mov eax, dword ptr [rbp-0x14]
cdqe
add rax, qword ptr [rdi+0x08]
- mov rdi, bword ptr [rbp-0x10]
+ mov rdi, bword ptr [rbp-0x08]
mov qword ptr [rdi+0x10], rax
mov rdi, 0xD1FFAB1E ; <unknown class>
; byrRegs -[rdi]
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- ; byrRegs -[rbx]
- mov gword ptr [rbp-0x28], rax
+ mov gword ptr [rbp-0x20], rax
call [<unknown method>]
- mov gword ptr [rbp-0x40], rax
- mov rdx, gword ptr [rbp-0x40]
+ mov gword ptr [rbp-0x38], rax
+ mov rdx, gword ptr [rbp-0x38]
; gcrRegs +[rdx]
- mov rsi, gword ptr [rbp-0x18]
+ mov rsi, gword ptr [rbp-0x10]
; gcrRegs +[rsi]
- mov rdi, gword ptr [rbp-0x28]
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
mov ecx, 1
call [<unknown method>]
; gcrRegs -[rax rdx rsi rdi]
- mov rdi, bword ptr [rbp-0x10]
+ mov rdi, bword ptr [rbp-0x08]
; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x28]
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rsi]
@@ -83,13 +83,12 @@ G_M36073_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=148 bbWeight=1 PerfScore 40.25
G_M36073_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
- pop rbx
+ add rsp, 64
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 187, prolog size 21, PerfScore 50.58, instruction count 47, allocated bytes for code 187 (MethodHash=3c457316) for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (Instrumented Tier0)
+; Total bytes of code 195, prolog size 30, PerfScore 51.33, instruction count 48, allocated bytes for code 195 (MethodHash=3c457316) for method System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -97,11 +96,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_tiered.linux.x64.checked.mch
-31 (-27.93%) : 6706.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
@@ -12,33 +12,19 @@
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) long -> [rbp-0x20] do-not-enreg[] "Cast away GC"
; V06 tmp2 [V06 ] ( 1, 1 ) long -> [rbp-0x28] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [rbp-0x34] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [rbp-0x38] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- lea rbp, [rsp+0x40]
- xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
mov gword ptr [rbp-0x08], rdi
mov dword ptr [rbp-0x0C], esi
mov dword ptr [rbp-0x10], edx
mov bword ptr [rbp-0x18], rcx
- ;; size=30 bbWeight=1 PerfScore 7.00
+ ;; size=24 bbWeight=1 PerfScore 5.75
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov r8, gword ptr [rbp-0x08]
- ; gcrRegs +[r8]
- mov gword ptr [rbp-0x30], r8
- mov r8d, dword ptr [rbp-0x0C]
- ; gcrRegs -[r8]
- movzx r8, r8w
- mov dword ptr [rbp-0x34], r8d
- mov r8d, dword ptr [rbp-0x10]
- mov dword ptr [rbp-0x38], r8d
mov r8, bword ptr [rbp-0x18]
; byrRegs +[r8]
mov qword ptr [rbp-0x20], r8
@@ -46,22 +32,23 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
mov qword ptr [rbp-0x28], r8
mov r8, qword ptr [rbp-0x28]
- mov rsi, gword ptr [rbp-0x30]
+ mov edx, dword ptr [rbp-0x0C]
+ movzx rdx, dx
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
- mov edx, dword ptr [rbp-0x34]
- mov ecx, dword ptr [rbp-0x38]
+ mov ecx, dword ptr [rbp-0x10]
mov rdi, 0xD1FFAB1E ; code for <unknown method>
call [<unknown method>]
; gcrRegs -[rsi]
nop
- ;; size=75 bbWeight=1 PerfScore 17.75
+ ;; size=50 bbWeight=1 PerfScore 11.75
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 111, prolog size 16, PerfScore 26.50, instruction count 30, allocated bytes for code 111 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 80, prolog size 10, PerfScore 19.25, instruction count 22, allocated bytes for code 80 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -74,5 +61,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-25 (-19.38%) : 32685.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan
1[ubyte],int,byref,System.Nullable1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1ubyte@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> rdx single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) byref -> r9 single-def
-; V03 arg3 [V03,T01] ( 5, 5 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdx single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r9 single-def
+; V03 arg3 [V03,T00] ( 5, 5 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
@@ -20,40 +20,36 @@
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp7 [V12,T05] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V18 tmp13 [V18,T09] ( 3, 2 ) ubyte -> rcx "field V10._controlFlags (fldOffset=0x0)" P-INDEP
-; V19 tmp14 [V19,T10] ( 3, 2 ) int -> r10 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
-; V20 tmp15 [V20,T11] ( 2, 2 ) byref -> rax single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp16 [V21,T12] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
-; V22 tmp17 [V22,T13] ( 2, 2 ) ubyte -> rcx "V04.[000..001)"
-; V23 tmp18 [V23,T14] ( 2, 1.50) ubyte -> r8 "V04.[004..005)"
-; V24 tmp19 [V24,T15] ( 2, 1.50) int -> rax "V04.[008..012)"
-; V25 tmp20 [V25,T08] ( 3, 3 ) struct (16) [rbp-0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
-; V26 tmp21 [V26,T02] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V27 tmp22 [V27,T00] ( 4, 8 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V28 tmp23 [V28,T07] ( 2, 4 ) int -> rdx "argument with side effect"
-;* V29 cse0 [V29,T16] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V18 tmp13 [V18,T07] ( 3, 2 ) ubyte -> rcx "field V10._controlFlags (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T08] ( 3, 2 ) int -> r10 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V20 tmp15 [V20,T09] ( 2, 2 ) byref -> rax single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp16 [V21,T10] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
+; V22 tmp17 [V22,T11] ( 2, 2 ) ubyte -> rcx "V04.[000..001)"
+; V23 tmp18 [V23,T12] ( 2, 1.50) ubyte -> r8 "V04.[004..005)"
+; V24 tmp19 [V24,T13] ( 2, 1.50) int -> rax "V04.[008..012)"
+; V25 tmp20 [V25,T06] ( 3, 3 ) struct (16) [rbp-0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
+; V26 tmp21 [V26,T01] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
+;* V27 cse0 [V27,T14] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M37843_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- lea rbp, [rsp+0x40]
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
+ mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x10], r8
mov dword ptr [rbp-0x08], r9d
mov r9, rcx
; byrRegs +[r9]
- ;; size=37 bbWeight=1 PerfScore 7.58
+ ;; size=27 bbWeight=1 PerfScore 5.25
G_M37843_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9}, byref, isz
; byrRegs +[rdi]
movzx rcx, byte ptr [rbp-0x10]
@@ -72,12 +68,8 @@ G_M37843_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9
mov r10d, eax
;; size=7 bbWeight=0.50 PerfScore 0.25
G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9}, byref
- mov bword ptr [rbp-0x38], rdi
- mov dword ptr [rbp-0x30], esi
mov byte ptr [rbp-0x28], cl
mov dword ptr [rbp-0x24], r10d
- mov rdi, bword ptr [rbp-0x38]
- mov rsi, qword ptr [rbp-0x30]
mov rcx, qword ptr [rbp-0x28]
mov r8d, 2
call [System.Formats.Asn1.AsnDecoder:GetIntegerContents(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,byref):System.ReadOnlySpan`1[ubyte]]
@@ -86,14 +78,14 @@ G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9},
mov qword ptr [rbp-0x18], rdx
mov rax, bword ptr [rbp-0x20]
mov edx, dword ptr [rbp-0x18]
- ;; size=53 bbWeight=1 PerfScore 14.25
+ ;; size=38 bbWeight=1 PerfScore 10.25
G_M37843_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 129, prolog size 26, PerfScore 29.33, instruction count 36, allocated bytes for code 129 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (Tier1)
+; Total bytes of code 104, prolog size 16, PerfScore 23.00, instruction count 30, allocated bytes for code 104 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (Tier1)
; ============================================================
Unwind Info:
@@ -106,5 +98,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-14 (-17.95%) : 27873.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateTranslationFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
@@ -9,43 +9,38 @@
; V01 RetBuf [V01 ] ( 1, 1 ) byref -> [rbp-0x10] do-not-enreg[]
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 1, 1 ) simd12 -> [rbp-0x20] do-not-enreg[SFA] multireg-arg "by-value struct argument" <System.Numerics.Vector3>
-; V04 tmp2 [V04 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M53925_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 48
+ sub rsp, 32
vzeroupper
- lea rbp, [rsp+0x30]
- xor eax, eax
- mov qword ptr [rbp-0x28], rax
+ lea rbp, [rsp+0x20]
mov gword ptr [rbp-0x08], rdi
mov bword ptr [rbp-0x10], rsi
- ;; size=27 bbWeight=1 PerfScore 6.00
+ ;; size=21 bbWeight=1 PerfScore 4.75
G_M53925_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, bword ptr [rbp-0x10]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0x28], rdi
vmovups xmm0, xmmword ptr [reloc @RWD00]
vmovaps xmmword ptr [rbp-0x20], xmm0
- mov rdi, bword ptr [rbp-0x28]
vmovsd xmm0, qword ptr [rbp-0x20]
vmovss xmm1, dword ptr [rbp-0x18]
+ mov rdi, bword ptr [rbp-0x10]
+ ; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rdi]
mov rax, bword ptr [rbp-0x10]
; byrRegs +[rax]
- ;; size=45 bbWeight=1 PerfScore 17.00
+ ;; size=37 bbWeight=1 PerfScore 15.00
G_M53925_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+ add rsp, 32
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
RWD00 dq 000000003F800000h, 0000000000000000h
-; Total bytes of code 78, prolog size 19, PerfScore 24.75, instruction count 20, allocated bytes for code 78 (MethodHash=3ace2d5a) for method System.Numerics.Tests.Perf_Matrix4x4:CreateTranslationFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
+; Total bytes of code 64, prolog size 13, PerfScore 21.50, instruction count 16, allocated bytes for code 64 (MethodHash=3ace2d5a) for method System.Numerics.Tests.Perf_Matrix4x4:CreateTranslationFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
; ============================================================
Unwind Info:
@@ -58,5 +53,5 @@ Unwind Info:
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+4 (+1.14%) : 32383.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan
1[ushort],System.Nullable1[System.Formats.Asn1.Asn1Tag]):this (Tier1)@@ -22,7 +22,7 @@
;* V11 tmp6 [V11 ] ( 0, 0 ) ref -> zero-ref
;* V12 tmp7 [V12 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
;* V13 tmp8 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V14 tmp9 [V14,T12] ( 2, 2 ) int -> rdi "impAppendStmt"
+; V14 tmp9 [V14,T12] ( 2, 2 ) int -> rsi "impAppendStmt"
;* V15 tmp10 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
;* V16 tmp11 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -39,7 +39,7 @@
;* V28 tmp23 [V28 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V29 tmp24 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
; V30 tmp25 [V30,T13] ( 2, 2 ) long -> rdx "Inlining Arg"
-; V31 tmp26 [V31,T14] ( 2, 2 ) int -> rdi "impAppendStmt"
+; V31 tmp26 [V31,T14] ( 2, 2 ) int -> rsi "impAppendStmt"
;* V32 tmp27 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
;* V33 tmp28 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V34 tmp29 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -48,17 +48,17 @@
; V37 tmp32 [V37,T23] ( 2, 1.50) byref -> r13 "field V03._reference (fldOffset=0x0)" P-INDEP
; V38 tmp33 [V38,T06] ( 6, 4 ) int -> r12 "field V03._length (fldOffset=0x8)" P-INDEP
; V39 tmp34 [V39,T09] ( 4, 2 ) ubyte -> registers "field V04._controlFlags (fldOffset=0x0)" P-INDEP
-; V40 tmp35 [V40,T10] ( 4, 2 ) int -> rsi "field V04.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V40 tmp35 [V40,T10] ( 4, 2 ) int -> rdi "field V04.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
;* V41 tmp36 [V41 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-DEP
;* V42 tmp37 [V42 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-DEP
-; V43 tmp38 [V43,T17] ( 3, 1.50) ubyte -> rdi "field V09._controlFlags (fldOffset=0x0)" P-INDEP
-; V44 tmp39 [V44,T18] ( 3, 1.50) int -> rsi "field V09.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
-; V45 tmp40 [V45,T19] ( 3, 1.50) ubyte -> rdi "field V12._controlFlags (fldOffset=0x0)" P-INDEP
-; V46 tmp41 [V46,T20] ( 3, 1.50) int -> rsi "field V12.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V43 tmp38 [V43,T17] ( 3, 1.50) ubyte -> rsi "field V09._controlFlags (fldOffset=0x0)" P-INDEP
+; V44 tmp39 [V44,T18] ( 3, 1.50) int -> rdx "field V09.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V45 tmp40 [V45,T19] ( 3, 1.50) ubyte -> rsi "field V12._controlFlags (fldOffset=0x0)" P-INDEP
+; V46 tmp41 [V46,T20] ( 3, 1.50) int -> rdi "field V12.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
;* V47 tmp42 [V47 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V48 tmp43 [V48 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V49 tmp44 [V49,T25] ( 2, 1 ) ubyte -> rdi "field V15._controlFlags (fldOffset=0x0)" P-INDEP
-; V50 tmp45 [V50,T26] ( 2, 1 ) int -> rsi "field V15.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V49 tmp44 [V49,T25] ( 2, 1 ) ubyte -> rsi "field V15._controlFlags (fldOffset=0x0)" P-INDEP
+; V50 tmp45 [V50,T26] ( 2, 1 ) int -> rdi "field V15.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
; V51 tmp46 [V51,T15] ( 3, 1.50) byref -> rdi "field V18._reference (fldOffset=0x0)" P-INDEP
; V52 tmp47 [V52,T21] ( 3, 1.50) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP
; V53 tmp48 [V53,T24] ( 2, 1 ) byref -> rdi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
@@ -67,14 +67,12 @@
;* V56 tmp51 [V56 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
;* V57 tmp52 [V57 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V58 tmp53 [V58 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V59 tmp54 [V59,T28] ( 2, 1 ) ubyte -> rdi "field V32._controlFlags (fldOffset=0x0)" P-INDEP
-; V60 tmp55 [V60,T29] ( 2, 1 ) int -> rsi "field V32.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V59 tmp54 [V59,T28] ( 2, 1 ) ubyte -> rsi "field V32._controlFlags (fldOffset=0x0)" P-INDEP
+; V60 tmp55 [V60,T29] ( 2, 1 ) int -> rdx "field V32.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
; V61 tmp56 [V61,T02] ( 6, 6 ) struct ( 8) [rbp-0x40] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-;* V62 tmp57 [V62,T31] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V63 tmp58 [V63,T32] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V64 cse0 [V64,T30] ( 0, 0 ) long -> zero-ref multi-def "CSE - moderate"
-; V65 cse1 [V65,T22] ( 3, 1.50) int -> r14 "CSE - moderate"
-; V66 cse2 [V66,T16] ( 3, 1.50) ref -> rsi "CSE - moderate"
+;* V62 cse0 [V62,T30] ( 0, 0 ) long -> zero-ref multi-def "CSE - moderate"
+; V63 cse1 [V63,T22] ( 3, 1.50) int -> r14 "CSE - moderate"
+; V64 cse2 [V64,T16] ( 3, 1.50) ref -> rsi "CSE - moderate"
;
; Lcl frame size = 24
@@ -115,23 +113,23 @@ G_M42154_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
; byrRegs -[rax r15]
cmp byte ptr [rbp-0x38], 0
jne SHORT G_M42154_IG04
- xor edi, edi
- mov esi, 6
+ xor esi, esi
+ mov edi, 6
jmp SHORT G_M42154_IG05
;; size=15 bbWeight=0.50 PerfScore 2.75
G_M42154_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
movzx r15, byte ptr [rbp-0x34]
- mov esi, dword ptr [rbp-0x30]
+ mov edi, dword ptr [rbp-0x30]
and r15d, -33
- movzx rdi, r15b
- and edi, 224
+ movzx rsi, r15b
+ and esi, 224
;; size=22 bbWeight=0.50 PerfScore 1.38
G_M42154_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
- mov byte ptr [rbp-0x40], dil
- mov dword ptr [rbp-0x3C], esi
+ mov byte ptr [rbp-0x40], sil
+ mov dword ptr [rbp-0x3C], edi
+ mov rsi, qword ptr [rbp-0x40]
mov rdi, rbx
; gcrRegs +[rdi]
- mov rsi, qword ptr [rbp-0x40]
call [System.Formats.Asn1.AsnWriter:WriteTag(System.Formats.Asn1.Asn1Tag):this]
; gcrRegs -[rdi]
mov rdi, rbx
@@ -198,26 +196,28 @@ G_M42154_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; byrRegs +[r15]
cmp byte ptr [rbp-0x38], 0
jne SHORT G_M42154_IG11
- xor edi, edi
- mov esi, 6
+ xor esi, esi
+ mov edx, 6
jmp SHORT G_M42154_IG12
;; size=15 bbWeight=0.50 PerfScore 2.75
G_M42154_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- movzx rdi, byte ptr [rbp-0x34]
- mov esi, dword ptr [rbp-0x30]
- and edi, -33
- movzx rdi, dil
- and edi, 224
- ;; size=21 bbWeight=0.50 PerfScore 1.38
+ movzx rsi, byte ptr [rbp-0x34]
+ mov edi, dword ptr [rbp-0x30]
+ mov edx, esi
+ and edx, -33
+ movzx rsi, dl
+ and esi, 224
+ mov edx, edi
+ ;; size=25 bbWeight=0.50 PerfScore 1.62
G_M42154_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov byte ptr [rbp-0x40], dil
- mov dword ptr [rbp-0x3C], esi
- mov rdi, rbx
- ; gcrRegs +[rdi]
+ mov byte ptr [rbp-0x40], sil
+ mov dword ptr [rbp-0x3C], edx
mov rsi, qword ptr [rbp-0x40]
mov rdx, r15
; byrRegs +[rdx]
mov ecx, r14d
+ mov rdi, rbx
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rbx rdi]
; byrRegs -[rdx r15]
@@ -242,7 +242,7 @@ G_M42154_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 19, PerfScore 54.00, instruction count 106, allocated bytes for code 352 (MethodHash=cb645b55) for method System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
+; Total bytes of code 356, prolog size 19, PerfScore 54.25, instruction count 108, allocated bytes for code 356 (MethodHash=cb645b55) for method System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
; ============================================================
Unwind Info:
+7 (+2.21%) : 913.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
@@ -5,68 +5,69 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x10] do-not-enreg[] this
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] class-hnd <System.String>
-; V02 arg2 [V02 ] ( 1, 1 ) struct (16) [rbp-0x28] do-not-enreg[XSFA] multireg-arg addr-exposed ld-addr-op <System.Span`1[ubyte]>
-; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x2C] do-not-enreg[]
-; V04 loc1 [V04 ] ( 1, 1 ) int -> [rbp-0x30] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x08] do-not-enreg[] this
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] class-hnd <System.String>
+; V02 arg2 [V02 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XSFA] multireg-arg addr-exposed ld-addr-op <System.Span`1[ubyte]>
+; V03 loc0 [V03 ] ( 1, 1 ) int -> [rbp-0x24] do-not-enreg[]
+; V04 loc1 [V04 ] ( 1, 1 ) int -> [rbp-0x28] do-not-enreg[]
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x40] do-not-enreg[SAR] multireg-arg multireg-ret must-init "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init class-hnd "impAppendStmt" <<unknown class>>
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[] "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[] "Cast away GC"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x38] do-not-enreg[SAR] multireg-arg multireg-ret must-init "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
+; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x40] do-not-enreg[] must-init class-hnd "impAppendStmt" <<unknown class>>
+; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x48] do-not-enreg[] must-init "argument with side effect"
+; V09 tmp4 [V09 ] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[] "argument with side effect"
+; V10 tmp5 [V10 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[] "Cast away GC"
;
-; Lcl frame size = 88
+; Lcl frame size = 96
G_M1038_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 88
+ sub rsp, 96
lea rbp, [rsp+0x60]
+ xor eax, eax
+ mov qword ptr [rbp-0x48], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x50], ymm8
- mov bword ptr [rbp-0x10], rdi
- mov gword ptr [rbp-0x18], rsi
- mov bword ptr [rbp-0x28], rdx
- mov qword ptr [rbp-0x20], rcx
- ;; size=37 bbWeight=1 PerfScore 9.08
+ vmovdqa xmmword ptr [rbp-0x40], xmm8
+ mov qword ptr [rbp-0x30], rax
+ mov bword ptr [rbp-0x08], rdi
+ mov gword ptr [rbp-0x10], rsi
+ mov bword ptr [rbp-0x20], rdx
+ mov qword ptr [rbp-0x18], rcx
+ ;; size=46 bbWeight=1 PerfScore 10.33
G_M1038_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov rax, bword ptr [rbp-0x10]
+ mov rax, bword ptr [rbp-0x08]
; byrRegs +[rax]
mov byte ptr [rax+0x08], 0
- cmp gword ptr [rbp-0x18], 0
+ cmp gword ptr [rbp-0x10], 0
jne SHORT G_M1038_IG04
- mov rax, bword ptr [rbp-0x10]
+ mov rax, bword ptr [rbp-0x08]
xor ecx, ecx
mov qword ptr [rax], rcx
;; size=24 bbWeight=1 PerfScore 7.25
G_M1038_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
- pop rbx
+ add rsp, 96
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M1038_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
- mov rax, gword ptr [rbp-0x18]
+ mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x08]
; gcrRegs -[rax]
mov eax, eax
lea rax, [rax+2*rax]
- mov ecx, dword ptr [rbp-0x20]
+ mov ecx, dword ptr [rbp-0x18]
mov ecx, ecx
cmp rax, rcx
jl SHORT G_M1038_IG05
call [<unknown method>]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x50], rax
- mov rdi, gword ptr [rbp-0x50]
+ mov gword ptr [rbp-0x48], rax
+ mov rdi, gword ptr [rbp-0x48]
; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x18]
+ mov rsi, gword ptr [rbp-0x10]
; gcrRegs +[rsi]
- mov rax, gword ptr [rbp-0x50]
+ mov rax, gword ptr [rbp-0x48]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x58]
@@ -74,55 +75,55 @@ G_M1038_IG04: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[rsi rdi]
add eax, 1
jo G_M1038_IG08
- mov dword ptr [rbp-0x30], eax
- mov edi, dword ptr [rbp-0x30]
- cmp edi, dword ptr [rbp-0x20]
+ mov dword ptr [rbp-0x28], eax
+ mov edi, dword ptr [rbp-0x28]
+ cmp edi, dword ptr [rbp-0x18]
jle SHORT G_M1038_IG05
- mov edi, dword ptr [rbp-0x30]
+ mov edi, dword ptr [rbp-0x28]
movsxd rdi, edi
call [<unknown method>]
- mov qword ptr [rbp-0x58], rax
- mov rsi, qword ptr [rbp-0x58]
- lea rdi, [rbp-0x28]
- mov edx, dword ptr [rbp-0x30]
+ mov qword ptr [rbp-0x50], rax
+ mov rsi, qword ptr [rbp-0x50]
+ lea rdi, [rbp-0x20]
+ mov edx, dword ptr [rbp-0x28]
call [<unknown method>]
- mov rdi, bword ptr [rbp-0x10]
+ mov rdi, bword ptr [rbp-0x08]
; byrRegs +[rdi]
mov byte ptr [rdi+0x08], 1
;; size=116 bbWeight=1 PerfScore 39.25
G_M1038_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rdi]
- mov rbx, bword ptr [rbp-0x10]
- ; byrRegs +[rbx]
- mov rdi, bword ptr [rbp-0x28]
+ mov rdi, bword ptr [rbp-0x20]
; byrRegs +[rdi]
- mov rsi, qword ptr [rbp-0x20]
+ mov rsi, qword ptr [rbp-0x18]
call [<unknown method>]
; byrRegs -[rdi] +[rax]
- mov qword ptr [rbp-0x60], rax
- mov rax, qword ptr [rbp-0x60]
+ mov qword ptr [rbp-0x58], rax
+ mov rax, qword ptr [rbp-0x58]
; byrRegs -[rax]
- mov qword ptr [rbx], rax
+ mov rcx, bword ptr [rbp-0x08]
+ ; byrRegs +[rcx]
+ mov qword ptr [rcx], rax
call [<unknown method>]
; gcrRegs +[rax]
- ; byrRegs -[rbx]
- mov gword ptr [rbp-0x48], rax
- mov rdi, gword ptr [rbp-0x18]
+ ; byrRegs -[rcx]
+ mov gword ptr [rbp-0x40], rax
+ mov rdi, gword ptr [rbp-0x10]
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rdi]
; byrRegs +[rax]
- mov bword ptr [rbp-0x40], rax
- mov qword ptr [rbp-0x38], rdx
- mov rcx, bword ptr [rbp-0x28]
+ mov bword ptr [rbp-0x38], rax
+ mov qword ptr [rbp-0x30], rdx
+ mov rcx, bword ptr [rbp-0x20]
; byrRegs +[rcx]
- mov r8, qword ptr [rbp-0x20]
- mov rsi, bword ptr [rbp-0x40]
+ mov r8, qword ptr [rbp-0x18]
+ mov rsi, bword ptr [rbp-0x38]
; byrRegs +[rsi]
- mov rdx, qword ptr [rbp-0x38]
- mov rdi, gword ptr [rbp-0x48]
+ mov rdx, qword ptr [rbp-0x30]
+ mov rdi, gword ptr [rbp-0x40]
; gcrRegs +[rdi]
- mov rax, gword ptr [rbp-0x48]
+ mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
; byrRegs -[rax]
mov rax, qword ptr [rax]
@@ -131,22 +132,21 @@ G_M1038_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [rax+0x28]<unknown method>
; gcrRegs -[rdi]
; byrRegs -[rcx rsi]
- mov dword ptr [rbp-0x2C], eax
- mov eax, dword ptr [rbp-0x20]
- cmp dword ptr [rbp-0x2C], eax
+ mov dword ptr [rbp-0x24], eax
+ mov eax, dword ptr [rbp-0x18]
+ cmp dword ptr [rbp-0x24], eax
jae SHORT G_M1038_IG07
- mov rax, bword ptr [rbp-0x28]
+ mov rax, bword ptr [rbp-0x20]
; byrRegs +[rax]
- mov ecx, dword ptr [rbp-0x2C]
+ mov ecx, dword ptr [rbp-0x24]
mov ecx, ecx
mov byte ptr [rax+rcx], 0
;; size=115 bbWeight=1 PerfScore 40.25
G_M1038_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
- pop rbx
+ add rsp, 96
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
G_M1038_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rax]
call CORINFO_HELP_RNGCHKFAIL
@@ -156,7 +156,7 @@ G_M1038_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 317, prolog size 21, PerfScore 100.33, instruction count 90, allocated bytes for code 317 (MethodHash=85e8fbf1) for method System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
+; Total bytes of code 324, prolog size 30, PerfScore 100.58, instruction count 90, allocated bytes for code 324 (MethodHash=85e8fbf1) for method System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
; ============================================================
Unwind Info:
@@ -164,11 +164,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+6 (+3.33%) : 20636.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)
@@ -27,7 +27,7 @@
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "field V01.HasIndex (fldOffset=0x10)" P-INDEP
; V17 tmp14 [V17,T09] ( 2, 1 ) ubyte -> rcx single-def "field V02.hasValue (fldOffset=0x0)" P-INDEP
; V18 tmp15 [V18,T10] ( 2, 1 ) int -> rdx single-def "field V02.value (fldOffset=0x4)" P-INDEP
-; V19 tmp16 [V19,T03] ( 3, 3 ) ref -> rsi single-def "arr expr"
+; V19 tmp16 [V19,T03] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V20 cse0 [V20,T08] ( 3, 1.50) int -> r13 "CSE - moderate"
; V21 cse1 [V21,T04] ( 4, 2 ) int -> rdi "CSE - aggressive"
; V22 cse2 [V22,T02] ( 5, 3.50) ref -> r15 "CSE - aggressive"
@@ -60,16 +60,19 @@ G_M12313_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
lea r13d, [rdi-0x01]
mov eax, r13d
cmp eax, edi
- jae SHORT G_M12313_IG10
- lea rdi, bword ptr [rbx+0x48]
- ; byrRegs +[rdi]
- mov rsi, gword ptr [rsi+0x08]
- cmp eax, dword ptr [rsi+0x08]
+ jae G_M12313_IG10
+ mov rdi, gword ptr [rsi+0x08]
+ ; gcrRegs +[rdi]
+ cmp eax, dword ptr [rdi+0x08]
jae SHORT G_M12313_IG09
- lea rax, [rax+2*rax]
- lea rsi, bword ptr [rsi+8*rax+0x10]
+ mov esi, eax
; gcrRegs -[rsi]
+ lea rsi, [rsi+2*rsi]
+ lea rsi, bword ptr [rdi+8*rsi+0x10]
; byrRegs +[rsi]
+ lea rdi, bword ptr [rbx+0x48]
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
@@ -81,7 +84,7 @@ G_M12313_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
call [System.Collections.Generic.List`1[Newtonsoft.Json.JsonPosition]:RemoveAt(int):this]
; gcrRegs -[rdi r15]
jmp SHORT G_M12313_IG05
- ;; size=71 bbWeight=0.50 PerfScore 12.00
+ ;; size=77 bbWeight=0.50 PerfScore 12.12
G_M12313_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rbx+0x50]
xor edi, edi
@@ -129,7 +132,7 @@ G_M12313_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 180, prolog size 13, PerfScore 38.88, instruction count 61, allocated bytes for code 180 (MethodHash=3fb5cfe6) for method Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)
+; Total bytes of code 186, prolog size 13, PerfScore 39.00, instruction count 62, allocated bytes for code 186 (MethodHash=3fb5cfe6) for method Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.linux.x64.checked.mch
-15 (-28.30%) : 607936.dasm - (dynamicClass):ABIStress_TailCaller968(long,ABIStress.S13U,ABIStress.S12U,ABIStress.S16U,ABIStress.S2P,double):int (FullOpts)
@@ -11,41 +11,38 @@
;* V00 arg0 [V00 ] ( 0, 0 ) long -> zero-ref single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.S13U>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.S12U>
-; V03 arg3 [V03,T03] ( 1, 1 ) struct (16) [rsp+0x20] single-def <ABIStress.S16U>
+; V03 arg3 [V03,T02] ( 2, 2 ) struct (16) [rsp+0x10] do-not-enreg[SFA] multireg-arg single-def <ABIStress.S16U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S2P>
;* V05 arg5 [V05 ] ( 0, 0 ) double -> zero-ref single-def
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V08 tmp2 [V08,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V09 tmp3 [V09,T05] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V10 tmp4 [V10,T02] ( 1, 1 ) short -> r9 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
-;* V11 tmp5 [V11,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.F0 (fldOffset=0x0)" P-INDEP
-;* V12 tmp6 [V12,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.F1 (fldOffset=0x1)" P-INDEP
-; V13 tmp7 [V13,T00] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V14 tmp8 [V14,T01] ( 3, 6 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S16U>
+;* V08 tmp2 [V08,T03] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V09 tmp3 [V09,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V10 tmp4 [V10,T01] ( 1, 1 ) short -> r9 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
+;* V11 tmp5 [V11,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.F0 (fldOffset=0x0)" P-INDEP
+;* V12 tmp6 [V12,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.F1 (fldOffset=0x1)" P-INDEP
+; V13 tmp7 [V13,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M51367_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M51367_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- vmovups xmm0, xmmword ptr [rsp+0x20]
- vmovups xmmword ptr [rsp], xmm0
- mov byte ptr [rsp+0x10], 198
- mov byte ptr [rsp+0x11], 124
- mov rdi, qword ptr [rsp]
- mov rsi, qword ptr [rsp+0x08]
- movzx rdx, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 198
+ mov byte ptr [rsp+0x01], 124
+ movzx rdx, word ptr [rsp]
+ mov rdi, qword ptr [rsp+0x10]
+ mov rsi, qword ptr [rsp+0x18]
mov ecx, 0xD1FFAB1E
- ;; size=40 bbWeight=1 PerfScore 9.25
+ ;; size=28 bbWeight=1 PerfScore 5.25
G_M51367_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
jmp <unknown method>
; gcr arg pop 0
;; size=9 bbWeight=1 PerfScore 2.25
-; Total bytes of code 53, prolog size 4, PerfScore 11.75, instruction count 11, allocated bytes for code 53 (MethodHash=53463758) for method (dynamicClass):ABIStress_TailCaller968(long,ABIStress.S13U,ABIStress.S12U,ABIStress.S16U,ABIStress.S2P,double):int (FullOpts)
+; Total bytes of code 38, prolog size 1, PerfScore 8.50, instruction count 9, allocated bytes for code 38 (MethodHash=53463758) for method (dynamicClass):ABIStress_TailCaller968(long,ABIStress.S13U,ABIStress.S12U,ABIStress.S16U,ABIStress.S2P,double):int (FullOpts)
; ============================================================
Unwind Info:
@@ -53,9 +50,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-18 (-25.35%) : 606989.dasm - (dynamicClass):ABIStressTailCaller427(ABIStress.S4P,ABIStress.S11U,ABIStress.S2U,ABIStress.S17U,ABIStress.S4P,ABIStress.I1282,ABIStress.S7U,System.Int128,ABIStress.S8U,System.Runtime.Intrinsics.Vector128
1[int],ABIStress.I128_1,float,System.Numerics.Vector1[int]):int (FullOpts)@@ -9,7 +9,7 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4P>
-; V01 arg1 [V01,T02] ( 3, 3 ) struct (16) [rsp+0x18] do-not-enreg[SA] multireg-arg single-def <ABIStress.S11U>
+; V01 arg1 [V01,T01] ( 4, 4 ) struct (16) [rsp+0x08] do-not-enreg[SA] multireg-arg single-def <ABIStress.S11U>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S2U>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[S] single-def <ABIStress.S17U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4P>
@@ -23,46 +23,41 @@
;* V12 arg12 [V12 ] ( 0, 0 ) simd32 -> zero-ref single-def <System.Numerics.Vector`1[int]>
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S3U>
-;* V15 tmp2 [V15,T05] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V16 tmp3 [V16,T06] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V17 tmp4 [V17,T07] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V18 tmp5 [V18,T03] ( 1, 1 ) int -> rdi single-def "field V00.F0 (fldOffset=0x0)" P-INDEP
-; V19 tmp6 [V19,T04] ( 1, 1 ) int -> r8 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
+;* V15 tmp2 [V15,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V16 tmp3 [V16,T05] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V17 tmp4 [V17,T06] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V18 tmp5 [V18,T02] ( 1, 1 ) int -> rdi single-def "field V00.F0 (fldOffset=0x0)" P-INDEP
+; V19 tmp6 [V19,T03] ( 1, 1 ) int -> r8 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref single-def "field V07._lower (fldOffset=0x0)" P-INDEP
;* V21 tmp8 [V21 ] ( 0, 0 ) long -> zero-ref single-def "field V07._upper (fldOffset=0x8)" P-INDEP
-;* V22 tmp9 [V22,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F0 (fldOffset=0x0)" P-INDEP
-;* V23 tmp10 [V23,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F1 (fldOffset=0x1)" P-INDEP
-;* V24 tmp11 [V24,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F2 (fldOffset=0x2)" P-INDEP
-; V25 tmp12 [V25,T00] ( 4, 8 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
-; V26 tmp13 [V26,T01] ( 3, 6 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S11U>
+;* V22 tmp9 [V22,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F0 (fldOffset=0x0)" P-INDEP
+;* V23 tmp10 [V23,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F1 (fldOffset=0x1)" P-INDEP
+;* V24 tmp11 [V24,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F2 (fldOffset=0x2)" P-INDEP
+; V25 tmp12 [V25,T00] ( 4, 8 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M37639_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
- mov qword ptr [rsp+0x18], rsi
- mov dword ptr [rsp+0x20], edx
+ sub rsp, 24
+ mov qword ptr [rsp+0x08], rsi
+ mov dword ptr [rsp+0x10], edx
;; size=13 bbWeight=1 PerfScore 2.25
G_M37639_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, qword ptr [rsp+0x18]
- mov qword ptr [rsp], rdi
- mov edi, dword ptr [rsp+0x1F]
- mov dword ptr [rsp+0x07], edi
- mov byte ptr [rsp+0x10], 247
- mov byte ptr [rsp+0x11], 92
- mov byte ptr [rsp+0x12], 71
- mov rdi, qword ptr [rsp]
- mov esi, dword ptr [rsp+0x08]
- mov ecx, dword ptr [rsp+0x10]
+ mov byte ptr [rsp], 247
+ mov byte ptr [rsp+0x01], 92
+ mov byte ptr [rsp+0x02], 71
+ mov ecx, dword ptr [rsp]
+ mov rdi, qword ptr [rsp+0x08]
+ mov esi, dword ptr [rsp+0x10]
mov edx, 0x74C3
- ;; size=49 bbWeight=1 PerfScore 10.25
+ ;; size=31 bbWeight=1 PerfScore 6.25
G_M37639_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ add rsp, 24
jmp <unknown method>
; gcr arg pop 0
;; size=9 bbWeight=1 PerfScore 2.25
-; Total bytes of code 71, prolog size 13, PerfScore 14.75, instruction count 16, allocated bytes for code 71 (MethodHash=b8e86cf8) for method (dynamicClass):ABIStress_TailCaller427(ABIStress.S4P,ABIStress.S11U,ABIStress.S2U,ABIStress.S17U,ABIStress.S4P,ABIStress.I128_2,ABIStress.S7U,System.Int128,ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.I128_1,float,System.Numerics.Vector`1[int]):int (FullOpts)
+; Total bytes of code 53, prolog size 13, PerfScore 10.75, instruction count 12, allocated bytes for code 53 (MethodHash=b8e86cf8) for method (dynamicClass):ABIStress_TailCaller427(ABIStress.S4P,ABIStress.S11U,ABIStress.S2U,ABIStress.S17U,ABIStress.S4P,ABIStress.I128_2,ABIStress.S7U,System.Int128,ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.I128_1,float,System.Numerics.Vector`1[int]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -75,4 +70,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
-31 (-19.87%) : 617543.dasm - Test10w5d.testout1+CL06621:.ctor():this (FullOpts)
@@ -10,70 +10,59 @@
;
; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <Test_10w5d.testout1+CL_0_6_6_2_1>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 7, 7 ) struct (16) [rsp+0x08] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
+; V02 tmp1 [V02 ] ( 7, 7 ) struct (16) [rsp+0x00] do-not-enreg[XSF] addr-exposed "NewObjArrayArgs"
; V03 tmp2 [V03,T01] ( 2, 4 ) long -> rdx "argument with side effect"
; V04 tmp3 [V04,T02] ( 2, 4 ) long -> rdx "argument with side effect"
-; TEMP_01 byref -> [rsp+0x18]
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M22520_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 32
- xor eax, eax
- mov qword ptr [rsp+0x18], rax
+ sub rsp, 16
mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 2.75
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M22520_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rdi, bword ptr [rbx+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rsp+0x18], rdi
- mov dword ptr [rsp+0x08], 3
- mov dword ptr [rsp+0x0C], 11
- lea rdx, [rsp+0x08]
+ mov dword ptr [rsp], 3
+ mov dword ptr [rsp+0x04], 11
+ lea rdx, [rsp]
mov rdi, 0xD1FFAB1E ; <unknown class>
- ; byrRegs -[rdi]
mov esi, 2
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, bword ptr [rsp+0x18]
+ lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- lea rdi, bword ptr [rbx+0x10]
- ; byrRegs +[rdi]
- mov bword ptr [rsp+0x18], rdi
- mov dword ptr [rsp+0x08], 5
- mov dword ptr [rsp+0x0C], 11
- mov dword ptr [rsp+0x10], 4
- lea rdx, [rsp+0x08]
+ mov dword ptr [rsp], 5
+ mov dword ptr [rsp+0x04], 11
+ mov dword ptr [rsp+0x08], 4
+ lea rdx, [rsp]
mov rdi, 0xD1FFAB1E ; <unknown class>
- ; byrRegs -[rdi]
mov esi, 3
call CORINFO_HELP_NEW_MDARR
- ; gcrRegs -[rbx] +[rax]
+ ; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, bword ptr [rsp+0x18]
+ lea rdi, bword ptr [rbx+0x10]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi]
+ ; gcrRegs -[rax rbx rsi]
; byrRegs -[rdi]
nop
- ;; size=135 bbWeight=1 PerfScore 16.75
+ ;; size=111 bbWeight=1 PerfScore 12.75
G_M22520_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32
+ add rsp, 16
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 156, prolog size 12, PerfScore 21.25, instruction count 32, allocated bytes for code 156 (MethodHash=ac2ca807) for method Test_10w5d.testout1+CL_0_6_6_2_1:.ctor():this (FullOpts)
+; Total bytes of code 125, prolog size 5, PerfScore 16.00, instruction count 26, allocated bytes for code 125 (MethodHash=ac2ca807) for method Test_10w5d.testout1+CL_0_6_6_2_1:.ctor():this (FullOpts)
; ============================================================
Unwind Info:
@@ -86,5 +75,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+5 (+6.25%) : 687331.dasm - NullableTest:BoxUnboxToNQ(System.ValueType):ubyte (FullOpts)
@@ -15,10 +15,9 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <NotEmptyStructQ>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <NotEmptyStructQ>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-;* V07 tmp5 [V07,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T05] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T03] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T04] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
; V09 tmp7 [V09,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <NotEmptyStructQ>
-; V10 tmp8 [V10,T03] ( 2, 4 ) long -> rdi "argument with side effect"
;
; Lcl frame size = 16
@@ -42,23 +41,24 @@ G_M4996_IG03: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
; gcr arg pop 0
;; size=19 bbWeight=0.25 PerfScore 0.88
G_M4996_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, qword ptr [rbx+0x08]
- mov qword ptr [rsp+0x08], rdi
+ mov rsi, qword ptr [rbx+0x08]
+ mov qword ptr [rsp+0x08], rsi
mov byte ptr [rsp], 1
mov dword ptr [rsp+0x04], 101
mov rsi, qword ptr [rsp]
+ mov rdi, qword ptr [rsp+0x08]
call [Helper:Compare(NotEmptyStructQ,NotEmptyStructQ):ubyte]
; gcrRegs -[rbx]
; gcr arg pop 0
nop
- ;; size=32 bbWeight=1 PerfScore 9.25
+ ;; size=37 bbWeight=1 PerfScore 10.25
G_M4996_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 16
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 80, prolog size 5, PerfScore 17.62, instruction count 19, allocated bytes for code 80 (MethodHash=1831ec7b) for method NullableTest:BoxUnboxToNQ(System.ValueType):ubyte (FullOpts)
+; Total bytes of code 85, prolog size 5, PerfScore 18.62, instruction count 20, allocated bytes for code 85 (MethodHash=1831ec7b) for method NullableTest:BoxUnboxToNQ(System.ValueType):ubyte (FullOpts)
; ============================================================
Unwind Info:
+5 (+6.94%) : 687553.dasm - NullableTest:BoxUnboxToNQ[System.Nullable
1[NotEmptyStructConstrainedGenQ1[int]]](System.Nullable1[NotEmptyStructConstrainedGenQ1[int]]):ubyte (FullOpts)@@ -15,10 +15,9 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <NotEmptyStructConstrainedGenQ`1[int]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <NotEmptyStructConstrainedGenQ`1[int]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-;* V07 tmp5 [V07,T03] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T04] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T02] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T03] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
; V09 tmp7 [V09,T00] ( 3, 6 ) struct ( 8) [rsp+0x08] do-not-enreg[SF] "by-value struct argument" <NotEmptyStructConstrainedGenQ`1[int]>
-; V10 tmp8 [V10,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
; Lcl frame size = 40
@@ -33,22 +32,23 @@ G_M19706_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_BOX_NULLABLE
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, qword ptr [rax+0x08]
- mov qword ptr [rsp+0x10], rdi
+ mov rsi, qword ptr [rax+0x08]
+ mov qword ptr [rsp+0x10], rsi
mov byte ptr [rsp+0x08], 1
mov dword ptr [rsp+0x0C], 12
mov rsi, qword ptr [rsp+0x08]
+ mov rdi, qword ptr [rsp+0x10]
call [Helper:Compare(NotEmptyStructConstrainedGenQ`1[int],NotEmptyStructConstrainedGenQ`1[int]):ubyte]
; gcrRegs -[rax]
; gcr arg pop 0
nop
- ;; size=54 bbWeight=1 PerfScore 11.00
+ ;; size=59 bbWeight=1 PerfScore 12.00
G_M19706_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 72, prolog size 4, PerfScore 14.50, instruction count 15, allocated bytes for code 72 (MethodHash=2525b305) for method NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]](System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]):ubyte (FullOpts)
+; Total bytes of code 77, prolog size 4, PerfScore 15.50, instruction count 16, allocated bytes for code 77 (MethodHash=2525b305) for method NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]](System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]):ubyte (FullOpts)
; ============================================================
Unwind Info:
+5 (+6.94%) : 687532.dasm - NullableTest:BoxUnboxToNQ[System.Nullable
1[NotEmptyStructQ]](System.Nullable1[NotEmptyStructQ]):ubyte (FullOpts)@@ -15,10 +15,9 @@
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <NotEmptyStructQ>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <NotEmptyStructQ>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-;* V07 tmp5 [V07,T03] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T04] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T02] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T03] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
; V09 tmp7 [V09,T00] ( 3, 6 ) struct ( 8) [rsp+0x08] do-not-enreg[SF] "by-value struct argument" <NotEmptyStructQ>
-; V10 tmp8 [V10,T02] ( 2, 4 ) long -> rdi "argument with side effect"
;
; Lcl frame size = 40
@@ -33,22 +32,23 @@ G_M314_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_BOX_NULLABLE
; gcrRegs +[rax]
; gcr arg pop 0
- mov rdi, qword ptr [rax+0x08]
- mov qword ptr [rsp+0x10], rdi
+ mov rsi, qword ptr [rax+0x08]
+ mov qword ptr [rsp+0x10], rsi
mov byte ptr [rsp+0x08], 1
mov dword ptr [rsp+0x0C], 101
mov rsi, qword ptr [rsp+0x08]
+ mov rdi, qword ptr [rsp+0x10]
call [Helper:Compare(NotEmptyStructQ,NotEmptyStructQ):ubyte]
; gcrRegs -[rax]
; gcr arg pop 0
nop
- ;; size=54 bbWeight=1 PerfScore 11.00
+ ;; size=59 bbWeight=1 PerfScore 12.00
G_M314_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 72, prolog size 4, PerfScore 14.50, instruction count 15, allocated bytes for code 72 (MethodHash=6b5dfec5) for method NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructQ]](System.Nullable`1[NotEmptyStructQ]):ubyte (FullOpts)
+; Total bytes of code 77, prolog size 4, PerfScore 15.50, instruction count 16, allocated bytes for code 77 (MethodHash=6b5dfec5) for method NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructQ]](System.Nullable`1[NotEmptyStructQ]):ubyte (FullOpts)
; ============================================================
Unwind Info:
libraries.crossgen2.linux.x64.checked.mch
-25 (-49.02%) : 173914.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,37 +11,32 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[double]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T05] ( 2, 2 ) double -> mm0 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[double]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T04] ( 2, 2 ) double -> mm0 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T02] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M42124_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M42124_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov byte ptr [rsp], dil
- movsd qword ptr [rsp+0x08], xmm0
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rdi, qword ptr [rsp]
- movsd xmm0, qword ptr [rsp+0x08]
- movzx rsi, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rsi, word ptr [rsp]
call [System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[double],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs +[rax]
; gcr arg pop 0
nop
- ;; size=42 bbWeight=1 PerfScore 12.25
+ ;; size=20 bbWeight=1 PerfScore 6.25
G_M42124_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 51, prolog size 4, PerfScore 13.75, instruction count 12, allocated bytes for code 51 (MethodHash=91715b73) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 8.50, instruction count 8, allocated bytes for code 26 (MethodHash=91715b73) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -49,9 +44,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-46.94%) : 173933.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,37 +11,32 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[ulong]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov byte ptr [rsp], dil
- mov qword ptr [rsp+0x08], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rdi, qword ptr [rsp]
- mov rsi, qword ptr [rsp+0x08]
- movzx rdx, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
call [System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[ulong],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs +[rax]
; gcr arg pop 0
nop
- ;; size=40 bbWeight=1 PerfScore 10.25
+ ;; size=20 bbWeight=1 PerfScore 6.25
G_M16550_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 4, PerfScore 11.75, instruction count 12, allocated bytes for code 49 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 8.50, instruction count 8, allocated bytes for code 26 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -49,9 +44,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-46.94%) : 173922.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,37 +11,32 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[long]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M61747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M61747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov byte ptr [rsp], dil
- mov qword ptr [rsp+0x08], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rdi, qword ptr [rsp]
- mov rsi, qword ptr [rsp+0x08]
- movzx rdx, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
call [System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[long],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs +[rax]
; gcr arg pop 0
nop
- ;; size=40 bbWeight=1 PerfScore 10.25
+ ;; size=20 bbWeight=1 PerfScore 6.25
G_M61747_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 4, PerfScore 11.75, instruction count 12, allocated bytes for code 49 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 8.50, instruction count 8, allocated bytes for code 26 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -49,9 +44,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+15 (+4.78%) : 16292.dasm - System.Globalization.TimeSpanParse:TryParseExactMultipleTimeSpan(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):ubyte (FullOpts)
@@ -15,42 +15,41 @@
; V03 arg3 [V03,T08] ( 3, 6 ) int -> r12 single-def
; V04 arg4 [V04,T14] ( 7, 4.50) byref -> [rbp-0x68] single-def
; V05 loc0 [V05,T00] ( 5, 16.50) int -> [rbp-0x2C]
-; V06 loc1 [V06,T03] ( 4, 14 ) ref -> rdx class-hnd exact <System.String>
+; V06 loc1 [V06,T03] ( 4, 14 ) ref -> rdi class-hnd exact <System.String>
; V07 loc2 [V07 ] ( 6, 20.50) struct (32) [rbp-0x50] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Globalization.TimeSpanParse+TimeSpanResult>
;* V08 loc3 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[ushort]>
; V09 OutArgs [V09 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;* V12 tmp3 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V12 tmp3 [V12,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V17 tmp8 [V17,T02] ( 2, 16 ) int -> rsi "Inlining Arg"
-; V18 tmp9 [V18,T01] ( 2, 16 ) byref -> rdx "Inlining Arg"
+; V18 tmp9 [V18,T01] ( 2, 16 ) byref -> rdi "Inlining Arg"
;* V19 tmp10 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp11 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V21 tmp12 [V21,T16] ( 4, 4 ) int -> rax "Single return block return value"
; V22 tmp13 [V22,T05] ( 3, 9 ) byref -> r15 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V23 tmp14 [V23,T04] ( 4, 9.50) int -> rbx single-def "field V00._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp15 [V24,T20] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
-;* V25 tmp16 [V25,T21] ( 0, 0 ) ushort -> zero-ref "field V08.value (fldOffset=0x2)" P-INDEP
+;* V24 tmp15 [V24,T19] ( 0, 0 ) ubyte -> zero-ref "field V08.hasValue (fldOffset=0x0)" P-INDEP
+;* V25 tmp16 [V25,T20] ( 0, 0 ) ushort -> zero-ref "field V08.value (fldOffset=0x2)" P-INDEP
;* V26 tmp17 [V26 ] ( 0, 0 ) byref -> zero-ref "field V10._reference (fldOffset=0x0)" P-INDEP
;* V27 tmp18 [V27 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
;* V28 tmp19 [V28 ] ( 0, 0 ) byref -> zero-ref "field V11._reference (fldOffset=0x0)" P-INDEP
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
;* V30 tmp21 [V30 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V32 tmp23 [V32,T10] ( 2, 8 ) byref -> rdx "field V14._reference (fldOffset=0x0)" P-INDEP
-; V33 tmp24 [V33,T12] ( 2, 8 ) int -> r8 "field V14._length (fldOffset=0x8)" P-INDEP
-; V34 tmp25 [V34,T11] ( 2, 8 ) byref -> rdx "field V15._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp23 [V32,T10] ( 2, 8 ) byref -> r8 "field V14._reference (fldOffset=0x0)" P-INDEP
+; V33 tmp24 [V33,T12] ( 2, 8 ) int -> r9 "field V14._length (fldOffset=0x8)" P-INDEP
+; V34 tmp25 [V34,T11] ( 2, 8 ) byref -> rdi "field V15._reference (fldOffset=0x0)" P-INDEP
; V35 tmp26 [V35,T13] ( 2, 8 ) int -> rsi "field V15._length (fldOffset=0x8)" P-INDEP
;* V36 tmp27 [V36 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp28 [V37 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
; V38 tmp29 [V38,T17] ( 3, 3 ) struct ( 8) [rbp-0x58] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ushort]>
-; V39 tmp30 [V39,T18] ( 2, 2 ) byref -> rdi single-def "argument with side effect"
-; V40 cse0 [V40,T15] ( 4, 5.50) int -> [rbp-0x5C] spill-single-def "CSE - moderate"
-; V41 cse1 [V41,T09] ( 3, 8 ) int -> rsi "CSE - moderate"
+; V39 cse0 [V39,T15] ( 4, 5.50) int -> [rbp-0x5C] spill-single-def "CSE - moderate"
+; V40 cse1 [V40,T09] ( 3, 8 ) int -> rsi "CSE - moderate"
;
; Lcl frame size = 72
@@ -74,17 +73,17 @@ G_M22928_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r13, rcx
; gcrRegs +[r13]
mov r12d, r8d
- mov rdi, r9
- ; byrRegs +[rdi]
+ mov rcx, r9
+ ; byrRegs +[rcx]
;; size=50 bbWeight=1 PerfScore 12.58
-G_M22928_IG02: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=8080 {rdi r15}, byref, isz
+G_M22928_IG02: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=8002 {rcx r15}, byref, isz
test r14, r14
jne SHORT G_M22928_IG05
;; size=5 bbWeight=1 PerfScore 1.25
-G_M22928_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M22928_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
; gcrRegs -[r13-r14]
; byrRegs -[r15]
- cmp byte ptr [rdi+0x08], 0
+ cmp byte ptr [rcx+0x08], 0
jne G_M22928_IG18
xor eax, eax
;; size=12 bbWeight=0.50 PerfScore 2.12
@@ -98,70 +97,82 @@ G_M22928_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M22928_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=8080 {rdi r15}, gcvars, byref, isz
+G_M22928_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=8002 {rcx r15}, gcvars, byref, isz
; gcrRegs +[r13-r14]
; byrRegs +[r15]
test ebx, ebx
jne SHORT G_M22928_IG07
;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M22928_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M22928_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
; gcrRegs -[r13-r14]
; byrRegs -[r15]
+ mov rdi, rcx
+ ; byrRegs +[rdi]
call [System.Globalization.TimeSpanParse+TimeSpanResult:SetBadTimeSpanFailure():ubyte:this]
- ; byrRegs -[rdi]
+ ; byrRegs -[rcx rdi]
jmp G_M22928_IG14
- ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M22928_IG07: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=8080 {rdi r15}, byref, isz
+ ;; size=14 bbWeight=0.50 PerfScore 2.62
+G_M22928_IG07: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=8002 {rcx r15}, byref, isz
; gcrRegs +[r13-r14]
- ; byrRegs +[rdi r15]
- mov ecx, dword ptr [r14+0x08]
- mov dword ptr [rbp-0x5C], ecx
- test ecx, ecx
+ ; byrRegs +[rcx r15]
+ mov edx, dword ptr [r14+0x08]
+ mov dword ptr [rbp-0x5C], edx
+ test edx, edx
jne SHORT G_M22928_IG08
+ mov rdi, rcx
+ ; byrRegs +[rdi]
call [System.Globalization.TimeSpanParse+TimeSpanResult:SetNoFormatSpecifierFailure():ubyte:this]
; gcrRegs -[r13-r14]
- ; byrRegs -[rdi r15]
+ ; byrRegs -[rcx rdi r15]
jmp G_M22928_IG14
- ;; size=22 bbWeight=0.50 PerfScore 4.62
-G_M22928_IG08: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=8080 {rdi r15}, byref, isz
+ ;; size=25 bbWeight=0.50 PerfScore 4.75
+G_M22928_IG08: ; bbWeight=0.50, gcrefRegs=6000 {r13 r14}, byrefRegs=8002 {rcx r15}, byref, isz
; gcrRegs +[r13-r14]
- ; byrRegs +[rdi r15]
+ ; byrRegs +[rcx r15]
xor eax, eax
- test ecx, ecx
+ test edx, edx
jle SHORT G_M22928_IG06
;; size=6 bbWeight=0.50 PerfScore 0.75
-G_M22928_IG09: ; bbWeight=4, gcrefRegs=6000 {r13 r14}, byrefRegs=8080 {rdi r15}, byref, isz
+G_M22928_IG09: ; bbWeight=4, gcrefRegs=6000 {r13 r14}, byrefRegs=8002 {rcx r15}, byref, isz
mov dword ptr [rbp-0x2C], eax
- mov esi, eax
- mov rdx, gword ptr [r14+8*rsi+0x10]
- ; gcrRegs +[rdx]
- test rdx, rdx
+ mov edi, eax
+ mov rdi, gword ptr [r14+8*rdi+0x10]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
je SHORT G_M22928_IG13
;; size=15 bbWeight=4 PerfScore 18.00
-G_M22928_IG10: ; bbWeight=2, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=8080 {rdi r15}, byref, isz
- mov esi, dword ptr [rdx+0x08]
+G_M22928_IG10: ; bbWeight=2, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=8002 {rcx r15}, byref, isz
+ mov esi, dword ptr [rdi+0x08]
test esi, esi
je SHORT G_M22928_IG13
;; size=7 bbWeight=2 PerfScore 6.50
-G_M22928_IG11: ; bbWeight=4, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=8080 {rdi r15}, byref, isz
- mov bword ptr [rbp-0x68], rdi
+G_M22928_IG11: ; bbWeight=4, gcrefRegs=6080 {rdi r13 r14}, byrefRegs=8002 {rcx r15}, byref, isz
+ mov bword ptr [rbp-0x68], rcx
; GC ptr vars +{V04}
xor r8d, r8d
mov qword ptr [rbp-0x50], r8
mov byte ptr [rbp-0x48], 0
mov bword ptr [rbp-0x40], r15
mov dword ptr [rbp-0x38], ebx
- add rdx, 12
- ; gcrRegs -[rdx]
- ; byrRegs +[rdx]
- mov r8d, esi
- lea rsi, [rbp-0x50]
- mov qword ptr [rsp], rsi
+ add rdi, 12
+ ; gcrRegs -[rdi]
+ ; byrRegs +[rdi]
+ mov r8, rdi
+ ; byrRegs +[r8]
+ mov r9d, esi
+ lea rdi, [rbp-0x50]
+ ; byrRegs -[rdi]
+ mov qword ptr [rsp], rdi
mov rdi, r15
+ ; byrRegs +[rdi]
mov esi, ebx
- mov ecx, r8d
+ mov rdx, r8
+ ; byrRegs +[rdx]
+ mov ecx, r9d
+ ; byrRegs -[rcx]
mov r8, r13
; gcrRegs +[r8]
+ ; byrRegs -[r8]
mov r9d, r12d
call [<unknown method>]
; gcrRegs -[r8]
@@ -170,25 +181,27 @@ G_M22928_IG11: ; bbWeight=4, gcrefRegs=6004 {rdx r13 r14}, byrefRegs=8080
jne SHORT G_M22928_IG16
mov eax, dword ptr [rbp-0x2C]
inc eax
- mov edi, dword ptr [rbp-0x5C]
- cmp edi, eax
- mov rdi, bword ptr [rbp-0x68]
- ; byrRegs +[rdi]
+ mov esi, dword ptr [rbp-0x5C]
+ cmp esi, eax
+ mov rcx, bword ptr [rbp-0x68]
+ ; byrRegs +[rcx]
jg SHORT G_M22928_IG09
- ;; size=77 bbWeight=4 PerfScore 69.00
-G_M22928_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref
+ ;; size=83 bbWeight=4 PerfScore 71.00
+G_M22928_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref
; gcrRegs -[r13-r14]
; byrRegs -[r15]
; GC ptr vars -{V04}
jmp G_M22928_IG06
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M22928_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref
+G_M22928_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
mov byte ptr [rbp-0x58], 0
mov word ptr [rbp-0x56], 0
mov esi, dword ptr [rbp-0x58]
+ mov rdi, rcx
+ ; byrRegs +[rdi]
call [System.Globalization.TimeSpanParse+TimeSpanResult:SetBadFormatSpecifierFailure(System.Nullable`1[ushort]):ubyte:this]
- ; byrRegs -[rdi]
- ;; size=19 bbWeight=0.50 PerfScore 3.00
+ ; byrRegs -[rcx rdi]
+ ;; size=22 bbWeight=0.50 PerfScore 3.12
G_M22928_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, al
;; size=3 bbWeight=0.50 PerfScore 0.12
@@ -231,7 +244,7 @@ G_M22928_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 314, prolog size 33, PerfScore 130.08, instruction count 105, allocated bytes for code 314 (MethodHash=d9dba66f) for method System.Globalization.TimeSpanParse:TryParseExactMultipleTimeSpan(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):ubyte (FullOpts)
+; Total bytes of code 329, prolog size 33, PerfScore 132.46, instruction count 110, allocated bytes for code 329 (MethodHash=d9dba66f) for method System.Globalization.TimeSpanParse:TryParseExactMultipleTimeSpan(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
+3 (+7.89%) : 31041.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable1[int]):this (FullOpts)@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
; V03 arg3 [V03,T04] ( 3, 3 ) ubyte -> rcx single-def
@@ -17,34 +17,30 @@
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Nullable`1[int]>
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> r9 single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V10 tmp2 [V10,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V11 tmp3 [V11,T12] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp4 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V13 tmp5 [V13,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V14 tmp6 [V14,T06] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V15 tmp7 [V15,T09] ( 2, 4 ) int -> rdx "argument with side effect"
-; V16 tmp8 [V16,T07] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V17 tmp9 [V17,T08] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> rax single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V10 tmp2 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp3 [V11,T07] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+; V12 tmp4 [V12,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 8
G_M26014_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rax
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M26014_IG02: ; bbWeight=1, gcrefRegs=03C0 {rsi rdi r8 r9}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rsi rdi r8-r9]
+ mov rax, r9
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M26014_IG02: ; bbWeight=1, gcrefRegs=01C1 {rax rsi rdi r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi rdi r8]
+ mov byte ptr [rsp], 0
+ xor r9d, r9d
+ mov dword ptr [rsp+0x04], r9d
+ mov r9, qword ptr [rsp]
movzx rdx, cl
mov rcx, r8
; gcrRegs +[rcx]
- mov r8, r9
- mov byte ptr [rsp], 0
- xor r9d, r9d
- ; gcrRegs -[r9]
- mov dword ptr [rsp+0x04], r9d
- mov r9, qword ptr [rsp]
+ mov r8, rax
call [Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int])]
- ; gcrRegs -[rcx rsi rdi r8]
+ ; gcrRegs -[rax rcx rsi rdi r8]
; gcr arg pop 0
nop
;; size=32 bbWeight=1 PerfScore 7.25
@@ -53,7 +49,7 @@ G_M26014_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 38, prolog size 1, PerfScore 9.50, instruction count 12, allocated bytes for code 38 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 41, prolog size 1, PerfScore 9.75, instruction count 13, allocated bytes for code 41 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
+27 (+15.79%) : 22236.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
@@ -9,9 +9,9 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 2.50) ref -> [rbp-0x30] this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> [rbp-0x38] class-hnd single-def <System.String>
-; V02 arg2 [V02,T02] ( 3, 2.50) ubyte -> r14 single-def
+; V00 this [V00,T01] ( 4, 2.50) ref -> [rbp-0x30] this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 4, 3 ) ref -> [rbp-0x38] class-hnd single-def <System.String>
+; V02 arg2 [V02,T02] ( 4, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T05] ( 3, 2.50) long -> rax
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <Interop+ErrorInfo>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -19,10 +19,9 @@
; V07 tmp2 [V07,T04] ( 3, 3 ) int -> r13 "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._error (fldOffset=0x0)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._rawErrno (fldOffset=0x4)" P-INDEP
-; V10 tmp5 [V10,T06] ( 2, 1 ) int -> rbx "field V06._error (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T07] ( 2, 1 ) int -> r13 "field V06._rawErrno (fldOffset=0x4)" P-INDEP
-; V12 tmp7 [V12,T03] ( 4, 3 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
-;* V13 tmp8 [V13,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V10 tmp5 [V10,T06] ( 3, 1 ) int -> rbx "field V06._error (fldOffset=0x0)" P-INDEP
+; V11 tmp6 [V11,T07] ( 3, 1 ) int -> r13 "field V06._rawErrno (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T03] ( 7, 3 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
;
; Lcl frame size = 32
@@ -36,17 +35,17 @@ G_M13357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
lea rbp, [rsp+0x40]
mov gword ptr [rbp-0x30], rdi
; GC ptr vars +{V00}
- mov r15, rsi
- ; gcrRegs +[r15]
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
mov r14d, edx
;; size=27 bbWeight=1 PerfScore 7.25
-G_M13357_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
- mov gword ptr [rbp-0x38], r15
+G_M13357_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov gword ptr [rbp-0x38], rbx
; GC ptr vars +{V01}
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [<unknown method>]
- ; gcrRegs -[rdi r15]
+ ; gcrRegs -[rbx rdi]
test rax, rax
jne SHORT G_M13357_IG07
;; size=18 bbWeight=1 PerfScore 5.50
@@ -58,24 +57,24 @@ G_M13357_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
G_M13357_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
call [<unknown method>]
mov ebx, eax
- mov rdi, qword ptr [(reloc)]
- cmp dword ptr [rdi], 0
+ mov rsi, qword ptr [(reloc)]
+ cmp dword ptr [rsi], 0
jne SHORT G_M13357_IG08
- ;; size=20 bbWeight=0.50 PerfScore 4.62
-G_M13357_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x28], ebx
mov dword ptr [rbp-0x24], r13d
- mov rdi, gword ptr [rbp-0x30]
- ; gcrRegs +[rdi]
mov rsi, qword ptr [rbp-0x28]
movzx rdx, r14b
- ; GC ptr vars -{V00}
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ ; GC ptr vars -{V00 V01}
call [System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:InternalContinueOnError(Interop+ErrorInfo,ubyte):ubyte:this]
; gcrRegs -[rdi]
test eax, eax
je SHORT G_M13357_IG09
+ ;; size=49 bbWeight=0.50 PerfScore 8.88
+G_M13357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
- ;; size=31 bbWeight=0.50 PerfScore 4.38
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M13357_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -86,7 +85,6 @@ G_M13357_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
G_M13357_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V01}
add rsp, 32
pop rbx
pop r13
@@ -98,15 +96,23 @@ G_M13357_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
G_M13357_IG08: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V01}
call [CORINFO_HELP_POLL_GC]
- jmp SHORT G_M13357_IG05
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M13357_IG09: ; bbWeight=0, gcVars=0000000000000002 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00}
+ mov dword ptr [rbp-0x28], ebx
+ mov dword ptr [rbp-0x24], r13d
+ mov rsi, qword ptr [rbp-0x28]
+ movzx rdx, r14b
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ ; GC ptr vars -{V00 V01}
+ call [System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:InternalContinueOnError(Interop+ErrorInfo,ubyte):ubyte:this]
+ ; gcrRegs -[rdi]
+ test eax, eax
+ jne SHORT G_M13357_IG05
+ ;; size=35 bbWeight=0 PerfScore 0.00
+G_M13357_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x28]
mov rsi, gword ptr [rbp-0x38]
; gcrRegs +[rsi]
mov edx, 1
- ; GC ptr vars -{V01}
call [<unknown method>]
; gcrRegs -[rsi] +[rax]
mov rdi, rax
@@ -116,7 +122,7 @@ G_M13357_IG09: ; bbWeight=0, gcVars=0000000000000002 {V01}, gcrefRegs=000
int3
;; size=29 bbWeight=0 PerfScore 0.00
-; Total bytes of code 171, prolog size 17, PerfScore 27.25, instruction count 55, allocated bytes for code 171 (MethodHash=29b6cbd2) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
+; Total bytes of code 198, prolog size 17, PerfScore 27.25, instruction count 62, allocated bytes for code 198 (MethodHash=29b6cbd2) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.linux.x64.checked.mch
-23 (-46.94%) : 134538.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,37 +10,32 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[System.DateTime]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[System.DateTime]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M46195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M46195_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov byte ptr [rsp], dil
- mov qword ptr [rsp+0x08], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rdi, qword ptr [rsp]
- mov rsi, qword ptr [rsp+0x08]
- movzx rdx, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
call [System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[System.DateTime],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs +[rax]
; gcr arg pop 0
nop
- ;; size=40 bbWeight=1 PerfScore 10.25
+ ;; size=20 bbWeight=1 PerfScore 6.25
G_M46195_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 4, PerfScore 11.75, instruction count 12, allocated bytes for code 49 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 8.50, instruction count 8, allocated bytes for code 26 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -48,9 +43,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-46.94%) : 134539.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,37 +10,32 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) short -> rdi single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> rsi single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
+; V03 tmp1 [V03,T01] ( 2, 2 ) short -> rdi single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> rsi single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M31891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M31891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov word ptr [rsp], di
- mov qword ptr [rsp+0x08], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rdi, qword ptr [rsp]
- mov rsi, qword ptr [rsp+0x08]
- movzx rdx, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
call [System.Text.Json.Nodes.JsonValue:Create(System.DateTimeOffset,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs +[rax]
; gcr arg pop 0
nop
- ;; size=40 bbWeight=1 PerfScore 10.25
+ ;; size=20 bbWeight=1 PerfScore 6.25
G_M31891_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 4, PerfScore 11.75, instruction count 12, allocated bytes for code 49 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 8.50, instruction count 8, allocated bytes for code 26 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -48,9 +43,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-23 (-46.94%) : 134563.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,37 +10,32 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[ulong]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> rdi single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> rsi single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- ;; size=4 bbWeight=1 PerfScore 0.25
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov byte ptr [rsp], dil
- mov qword ptr [rsp+0x08], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rdi, qword ptr [rsp]
- mov rsi, qword ptr [rsp+0x08]
- movzx rdx, word ptr [rsp+0x10]
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
call [System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[ulong],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs +[rax]
; gcr arg pop 0
nop
- ;; size=40 bbWeight=1 PerfScore 10.25
+ ;; size=20 bbWeight=1 PerfScore 6.25
G_M16550_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 49, prolog size 4, PerfScore 11.75, instruction count 12, allocated bytes for code 49 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 8.50, instruction count 8, allocated bytes for code 26 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -48,9 +43,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+6 (+6.19%) : 129391.dasm - System.Net.NegotiateAuthenticationPal+UnixNegotiateAuthenticationPal:VerifyMIC(System.ReadOnlySpan
1[ubyte],System.ReadOnlySpan1[ubyte]):ubyte:this (FullOpts)@@ -14,32 +14,29 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 loc1 [V04 ] ( 1, 1 ) int -> [rsp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T14] ( 2, 2 ) int -> rax "Inline return value spill temp"
+; V06 tmp1 [V06,T11] ( 2, 2 ) int -> rax "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V08 tmp3 [V08 ] ( 2, 2 ) byref -> [rsp+0x08] must-init pinned "Inline stloc first use temp"
;* V09 tmp4 [V09 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;* V10 tmp5 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V11 tmp6 [V11 ] ( 2, 2 ) byref -> [rsp+0x00] must-init pinned "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V13 tmp8 [V13,T05] ( 2, 4 ) ref -> r8 class-hnd exact single-def "Inlining Arg" <Microsoft.Win32.SafeHandles.SafeGssContextHandle>
+; V13 tmp8 [V13,T05] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <Microsoft.Win32.SafeHandles.SafeGssContextHandle>
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V15 tmp10 [V15,T00] ( 5, 5 ) byref -> rdi "Inline stloc first use temp"
+; V15 tmp10 [V15,T00] ( 5, 5 ) byref -> r8 "Inline stloc first use temp"
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V17 tmp12 [V17,T01] ( 5, 5 ) byref -> rsi "Inline stloc first use temp"
+; V17 tmp12 [V17,T01] ( 5, 5 ) byref -> r8 "Inline stloc first use temp"
; V18 tmp13 [V18,T06] ( 2, 2 ) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V19 tmp14 [V19,T03] ( 3, 3 ) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V19 tmp14 [V19,T03] ( 3, 3 ) int -> r9 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V20 tmp15 [V20,T07] ( 2, 2 ) byref -> rcx single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp16 [V21,T04] ( 3, 3 ) int -> r9 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V21 tmp16 [V21,T04] ( 3, 3 ) int -> rax single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V07._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) int -> zero-ref "field V07._length (fldOffset=0x8)" P-INDEP
;* V24 tmp19 [V24 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP
;* V25 tmp20 [V25 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP
-; V26 tmp21 [V26,T09] ( 2, 4 ) long -> rdi "Cast away GC"
-; V27 tmp22 [V27,T10] ( 2, 4 ) long -> rax "Cast away GC"
-; V28 tmp23 [V28,T08] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V29 tmp24 [V29,T11] ( 2, 4 ) long -> rdi "argument with side effect"
-; V30 tmp25 [V30,T12] ( 2, 4 ) int -> rcx "argument with side effect"
-; V31 tmp26 [V31,T13] ( 2, 4 ) long -> rax "argument with side effect"
+; V26 tmp21 [V26,T08] ( 2, 4 ) long -> r10 "Cast away GC"
+; V27 tmp22 [V27,T09] ( 2, 4 ) long -> r8 "Cast away GC"
+; V28 tmp23 [V28,T10] ( 2, 4 ) long -> r8 "argument with side effect"
;
; Lcl frame size = 24
@@ -48,41 +45,42 @@ G_M45951_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor eax, eax
mov qword ptr [rsp+0x08], rax
mov qword ptr [rsp], rax
- mov r9d, r8d
- ;; size=18 bbWeight=1 PerfScore 2.75
+ mov r9d, edx
+ mov eax, r8d
+ ;; size=21 bbWeight=1 PerfScore 3.00
G_M45951_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0042 {rcx rsi}, byref
; gcrRegs +[rdi]
; byrRegs +[rcx rsi]
- mov r8, gword ptr [rdi+0x18]
- ; gcrRegs +[r8]
- xor rdi, rdi
- ; gcrRegs -[rdi]
- ; byrRegs +[rdi]
- test edx, edx
- cmovne rdi, rsi
- mov bword ptr [rsp+0x08], rdi
- xor rsi, rsi
+ mov rdx, gword ptr [rdi+0x18]
+ ; gcrRegs +[rdx]
+ xor r8, r8
+ ; byrRegs +[r8]
test r9d, r9d
- cmovne rsi, rcx
- mov bword ptr [rsp], rsi
- mov ecx, edx
- ; byrRegs -[rcx]
- mov rax, rsi
- mov rsi, r8
+ cmovne r8, rsi
+ mov bword ptr [rsp+0x08], r8
+ mov r10, r8
+ xor r8, r8
+ test eax, eax
+ cmovne r8, rcx
+ mov bword ptr [rsp], r8
+ lea rdi, [rsp+0x10]
+ ; gcrRegs -[rdi]
+ mov rsi, rdx
; gcrRegs +[rsi]
; byrRegs -[rsi]
- mov rdx, rdi
- mov r8, rax
- ; gcrRegs -[r8]
- lea rdi, [rsp+0x10]
- ; byrRegs -[rdi]
+ mov rdx, r10
+ ; gcrRegs -[rdx]
+ mov ecx, r9d
+ ; byrRegs -[rcx]
+ mov r9d, eax
call [<unknown method>]
; gcrRegs -[rsi]
+ ; byrRegs -[r8]
; gcr arg pop 0
xor rcx, rcx
; byrRegs +[rcx]
mov bword ptr [rsp+0x08], rcx
- ;; size=62 bbWeight=1 PerfScore 11.50
+ ;; size=65 bbWeight=1 PerfScore 11.50
G_M45951_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov bword ptr [rsp], rcx
@@ -95,7 +93,7 @@ G_M45951_IG04: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 97, prolog size 15, PerfScore 18.00, instruction count 29, allocated bytes for code 97 (MethodHash=56bb4c80) for method System.Net.NegotiateAuthenticationPal+UnixNegotiateAuthenticationPal:VerifyMIC(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
+; Total bytes of code 103, prolog size 15, PerfScore 18.25, instruction count 30, allocated bytes for code 103 (MethodHash=56bb4c80) for method System.Net.NegotiateAuthenticationPal+UnixNegotiateAuthenticationPal:VerifyMIC(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+12 (+6.82%) : 130821.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
@@ -7,36 +7,37 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 8, 16.50) ref -> r15 this class-hnd single-def <System.Security.Cryptography.Xml.Transform>
-; V01 arg1 [V01,T01] ( 5, 14 ) ref -> rbx class-hnd single-def <System.Type>
-; V02 loc0 [V02,T00] ( 8, 28.50) int -> r13
+; V00 this [V00,T03] ( 8, 16.50) ref -> rbx this class-hnd single-def <System.Security.Cryptography.Xml.Transform>
+; V01 arg1 [V01,T04] ( 5, 14 ) ref -> r15 class-hnd single-def <System.Type>
+; V02 loc0 [V02,T00] ( 7, 24.50) int -> r13
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 24 ) ref -> rax "arr expr"
+; V04 tmp1 [V04,T01] ( 3, 24 ) ref -> rax "arr expr"
; V05 tmp2 [V05,T05] ( 2, 16 ) ref -> rsi "argument with side effect"
-;* V06 tmp3 [V06,T08] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V07 tmp4 [V07,T03] ( 3, 24 ) ref -> rax "arr expr"
-; V08 tmp5 [V08,T06] ( 2, 16 ) ref -> rsi "argument with side effect"
-;* V09 tmp6 [V09,T09] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V10 cse0 [V10,T07] ( 6, 14.50) long -> r14 "CSE - moderate"
+; V06 tmp3 [V06,T02] ( 3, 24 ) ref -> rax "arr expr"
+; V07 tmp4 [V07,T06] ( 2, 16 ) ref -> rsi "argument with side effect"
+; V08 cse0 [V08,T07] ( 6, 14.50) long -> r14 "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 3, 12 ) long -> r12 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M18864_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
push r13
+ push r12
push rbx
- lea rbp, [rsp+0x20]
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rsi
+ push rax
+ lea rbp, [rsp+0x30]
+ mov rbx, rdi
; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 6.00
+ mov r15, rsi
+ ; gcrRegs +[r15]
+ ;; size=22 bbWeight=1 PerfScore 8.00
G_M18864_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [rbx]
mov r14, qword ptr [rax+0x48]
call [r14+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
@@ -46,7 +47,7 @@ G_M18864_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
G_M18864_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
xor r13d, r13d
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [r14+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
@@ -55,33 +56,32 @@ G_M18864_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
;; size=16 bbWeight=0.50 PerfScore 3.75
G_M18864_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [r14+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp r13d, dword ptr [rax+0x08]
jae SHORT G_M18864_IG09
- mov esi, r13d
- mov rsi, gword ptr [rax+8*rsi+0x10]
+ mov r12d, r13d
+ mov rsi, gword ptr [rax+8*r12+0x10]
; gcrRegs +[rsi]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
call [System.Type:op_Equality(System.Type,System.Type):ubyte]
; gcrRegs -[rax rsi rdi]
test eax, eax
jne SHORT G_M18864_IG07
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [r14+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp r13d, dword ptr [rax+0x08]
jae SHORT G_M18864_IG09
- mov esi, r13d
- mov rsi, gword ptr [rax+8*rsi+0x10]
+ mov rsi, gword ptr [rax+8*r12+0x10]
; gcrRegs +[rsi]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
+ mov rax, qword ptr [r15]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0xB8]
call [rax+0x18]<unknown method>
@@ -89,42 +89,46 @@ G_M18864_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
test eax, eax
jne SHORT G_M18864_IG07
inc r13d
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [r14+0x20]<unknown method>
; gcrRegs -[rdi] +[rax]
cmp dword ptr [rax+0x08], r13d
jg SHORT G_M18864_IG04
- ;; size=91 bbWeight=4 PerfScore 158.00
+ ;; size=88 bbWeight=4 PerfScore 157.00
G_M18864_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rbx r15]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M18864_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M18864_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M18864_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r12
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=15 bbWeight=0.50 PerfScore 2.12
G_M18864_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 13, PerfScore 180.00, instruction count 62, allocated bytes for code 176 (MethodHash=64fdb64f) for method System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
+; Total bytes of code 188, prolog size 16, PerfScore 181.75, instruction count 67, allocated bytes for code 188 (MethodHash=64fdb64f) for method System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -132,12 +136,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0B
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 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)
+3 (+7.89%) : 21684.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable1[int]):this (FullOpts)@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
; V03 arg3 [V03,T04] ( 3, 3 ) ubyte -> rcx single-def
@@ -16,34 +16,30 @@
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Nullable`1[int]>
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> r9 single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V10 tmp2 [V10,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V11 tmp3 [V11,T12] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp4 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V13 tmp5 [V13,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V14 tmp6 [V14,T06] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V15 tmp7 [V15,T09] ( 2, 4 ) int -> rdx "argument with side effect"
-; V16 tmp8 [V16,T07] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V17 tmp9 [V17,T08] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
+; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> rax single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V10 tmp2 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp3 [V11,T07] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+; V12 tmp4 [V12,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 8
G_M26014_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rax
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M26014_IG02: ; bbWeight=1, gcrefRegs=03C0 {rsi rdi r8 r9}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rsi rdi r8-r9]
+ mov rax, r9
+ ; gcrRegs +[rax]
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M26014_IG02: ; bbWeight=1, gcrefRegs=01C1 {rax rsi rdi r8}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi rdi r8]
+ mov byte ptr [rsp], 0
+ xor r9d, r9d
+ mov dword ptr [rsp+0x04], r9d
+ mov r9, qword ptr [rsp]
movzx rdx, cl
mov rcx, r8
; gcrRegs +[rcx]
- mov r8, r9
- mov byte ptr [rsp], 0
- xor r9d, r9d
- ; gcrRegs -[r9]
- mov dword ptr [rsp+0x04], r9d
- mov r9, qword ptr [rsp]
+ mov r8, rax
call [Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int])]
- ; gcrRegs -[rcx rsi rdi r8]
+ ; gcrRegs -[rax rcx rsi rdi r8]
; gcr arg pop 0
nop
;; size=32 bbWeight=1 PerfScore 7.25
@@ -52,7 +48,7 @@ G_M26014_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 38, prolog size 1, PerfScore 9.50, instruction count 12, allocated bytes for code 38 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 41, prolog size 1, PerfScore 9.75, instruction count 13, allocated bytes for code 41 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
libraries_tests.run.linux.x64.Release.mch
-37 (-27.61%) : 57142.dasm - System.Collections.Concurrent.ConcurrentDictionary
2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray1[System.Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray1[System.__Canon],System.Collections.Immutable.ImmutableArray1[System.Canon]):ubyte:this (Tier1)@@ -7,57 +7,39 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
-; V01 arg1 [V01,T08] ( 1, 1 ) struct (24) [rsp+0x60] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo>
+; V00 this [V00,T00] ( 4, 4 ) ref -> [rsp+0x28] this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]>
+; V01 arg1 [V01,T05] ( 1, 1 ) struct (24) [rsp+0x40] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T02] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
-; V07 tmp2 [V07,T03] ( 2, 2 ) ref -> [rsp+0x20] single-def "field V02.array (fldOffset=0x0)" P-INDEP
+; V06 tmp1 [V06,T02] ( 2, 4 ) ref -> [rsp+0x20] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
+; V07 tmp2 [V07,T03] ( 2, 2 ) ref -> [rsp+0x18] single-def "field V02.array (fldOffset=0x0)" P-INDEP
; V08 tmp3 [V08,T04] ( 2, 2 ) ref -> r8 single-def "field V03.array (fldOffset=0x0)" P-INDEP
-;* V09 tmp4 [V09,T09] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V10 tmp5 [V10,T10] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
-; V11 tmp6 [V11,T01] ( 3, 6 ) struct ( 8) [rsp+0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V12 tmp7 [V12,T07] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V13 tmp8 [V13,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V14 tmp9 [V14,T06] ( 2, 4 ) struct (24) [rsp+0x28] do-not-enreg[S] single-def "argument with side effect" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo>
-; TEMP_02 ref -> [rsp+0x50]
-; TEMP_01 ref -> [rsp+0x48]
+;* V09 tmp4 [V09,T06] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp5 [V10,T07] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
+; V11 tmp6 [V11,T01] ( 3, 6 ) struct ( 8) [rsp+0x30] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
-; Lcl frame size = 88
+; Lcl frame size = 56
G_M29310_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 88
- vzeroupper
- xor eax, eax
- mov qword ptr [rsp+0x48], rax
- mov qword ptr [rsp+0x50], rax
- mov gword ptr [rsp+0x20], rsi
+ sub rsp, 56
+ mov gword ptr [rsp+0x18], rsi
; GC ptr vars +{V07}
mov r8, rdx
; gcrRegs +[r8]
- ;; size=27 bbWeight=1 PerfScore 4.75
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M29310_IG02: ; bbWeight=1, gcVars=0000000000000008 {V07}, gcrefRegs=0180 {rdi r8}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdi]
+ mov gword ptr [rsp+0x28], rdi
+ ; GC ptr vars +{V00}
mov rsi, gword ptr [rdi+0x08]
; gcrRegs +[rsi]
- ;; size=4 bbWeight=1 PerfScore 2.00
-G_M29310_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rsp+0x60]
- vmovdqu xmmword ptr [rsp+0x28], xmm0
- mov rdx, qword ptr [rsp+0x70]
- mov qword ptr [rsp+0x38], rdx
- ;; size=22 bbWeight=1 PerfScore 6.00
-G_M29310_IG04: ; bbWeight=1, extend
- mov byte ptr [rsp+0x40], 0
- xor edx, edx
- mov dword ptr [rsp+0x44], edx
- mov gword ptr [rsp+0x50], rdi
- mov gword ptr [rsp+0x48], rsi
+ mov gword ptr [rsp+0x20], rsi
+ ; GC ptr vars +{V06}
lea rdi, [rsp]
; gcrRegs -[rdi]
- lea rsi, [rsp+0x28]
+ lea rsi, [rsp+0x40]
; gcrRegs -[rsi]
mov rcx, gword ptr [rsi]
; gcrRegs +[rcx]
@@ -67,24 +49,27 @@ G_M29310_IG04: ; bbWeight=1, extend
add rdi, 8
movsq
movsq
- mov rdx, qword ptr [rsp+0x40]
- mov rcx, gword ptr [rsp+0x20]
- mov rdi, gword ptr [rsp+0x50]
- ; gcrRegs +[rdi]
- mov rsi, gword ptr [rsp+0x48]
+ mov byte ptr [rsp+0x30], 0
+ xor edx, edx
+ mov dword ptr [rsp+0x34], edx
+ mov rdx, qword ptr [rsp+0x30]
+ mov rsi, gword ptr [rsp+0x20]
; gcrRegs +[rsi]
- ; GC ptr vars -{V07}
+ mov rdi, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rsp+0x18]
+ ; GC ptr vars -{V00 V06 V07}
call [<unknown method>]
; gcrRegs -[rcx rsi rdi r8]
; gcr arg pop 0
nop
- ;; size=76 bbWeight=1 PerfScore 18.00
-G_M29310_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 88
+ ;; size=80 bbWeight=1 PerfScore 20.00
+G_M29310_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 56
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 134, prolog size 19, PerfScore 32.00, instruction count 33, allocated bytes for code 134 (MethodHash=6c1d8d81) for method System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte:this (Tier1)
+; Total bytes of code 97, prolog size 4, PerfScore 22.75, instruction count 25, allocated bytes for code 97 (MethodHash=6c1d8d81) for method System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte:this (Tier1)
; ============================================================
Unwind Info:
@@ -97,4 +82,4 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
-23 (-24.73%) : 661708.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (Tier1)
@@ -7,45 +7,34 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 3, 3 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlyMemory`1[ubyte]>
+; V00 arg0 [V00,T00] ( 4, 4 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.ReadOnlyMemory`1[ubyte]>
; V01 arg1 [V01 ] ( 3, 3 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Text.Json.JsonDocumentOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct ( 8) [rbp-0x20] do-not-enreg[SB] "spilled call-like call argument" <System.Text.Json.JsonReaderOptions>
-; V04 tmp2 [V04,T02] ( 2, 4 ) int -> [rbp-0x20] do-not-enreg[] "field V03._maxDepth (fldOffset=0x0)" P-DEP
-; V05 tmp3 [V05,T03] ( 2, 4 ) ubyte -> [rbp-0x1C] do-not-enreg[] "field V03._commentHandling (fldOffset=0x4)" P-DEP
-; V06 tmp4 [V06,T04] ( 2, 4 ) ubyte -> [rbp-0x1B] do-not-enreg[] "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
-; V07 tmp5 [V07,T05] ( 2, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
-; V08 tmp6 [V08,T00] ( 3, 6 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
+; V04 tmp2 [V04,T01] ( 2, 4 ) int -> [rbp-0x20] do-not-enreg[] "field V03._maxDepth (fldOffset=0x0)" P-DEP
+; V05 tmp3 [V05,T02] ( 2, 4 ) ubyte -> [rbp-0x1C] do-not-enreg[] "field V03._commentHandling (fldOffset=0x4)" P-DEP
+; V06 tmp4 [V06,T03] ( 2, 4 ) ubyte -> [rbp-0x1B] do-not-enreg[] "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
+; V07 tmp5 [V07,T04] ( 2, 4 ) struct ( 8) [rbp-0x28] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M57583_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- vzeroupper
- lea rbp, [rsp+0x40]
- xor eax, eax
- mov qword ptr [rbp-0x38], rax
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
mov gword ptr [rbp-0x10], rdi
mov qword ptr [rbp-0x08], rsi
mov qword ptr [rbp-0x18], rdx
- ;; size=31 bbWeight=1 PerfScore 7.00
+ ;; size=22 bbWeight=1 PerfScore 4.75
G_M57583_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0x18]
call [System.Text.Json.JsonDocumentOptions:GetReaderOptions():System.Text.Json.JsonReaderOptions:this]
mov qword ptr [rbp-0x20], rax
- ;; size=14 bbWeight=1 PerfScore 4.50
-G_M57583_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rbp-0x10]
- vmovdqu xmmword ptr [rbp-0x38], xmm0
- ;; size=10 bbWeight=1 PerfScore 4.00
-G_M57583_IG04: ; bbWeight=1, extend
- mov rdi, qword ptr [rbp-0x20]
- mov qword ptr [rbp-0x28], rdi
- mov rdi, gword ptr [rbp-0x38]
+ mov rdx, qword ptr [rbp-0x20]
+ mov qword ptr [rbp-0x28], rdx
+ mov rdi, gword ptr [rbp-0x10]
; gcrRegs +[rdi]
- mov rsi, qword ptr [rbp-0x30]
- mov rdx, qword ptr [rbp-0x28]
+ mov rsi, qword ptr [rbp-0x08]
xor rcx, rcx
; gcrRegs +[rcx]
xor r8, r8
@@ -53,14 +42,14 @@ G_M57583_IG04: ; bbWeight=1, extend
call [<unknown method>]
; gcrRegs -[rcx rdi r8] +[rax]
nop
- ;; size=32 bbWeight=1 PerfScore 8.75
-G_M57583_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ ;; size=42 bbWeight=1 PerfScore 12.25
+G_M57583_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 93, prolog size 19, PerfScore 26.00, instruction count 26, allocated bytes for code 93 (MethodHash=4c311f10) for method System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (Tier1)
+; Total bytes of code 70, prolog size 10, PerfScore 18.75, instruction count 20, allocated bytes for code 70 (MethodHash=4c311f10) for method System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (Tier1)
; ============================================================
Unwind Info:
@@ -73,5 +62,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-46 (-24.60%) : 129035.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Add(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (Tier1)
@@ -10,69 +10,47 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier>
-; V02 arg2 [V02,T04] ( 3, 3 ) ref -> [rbp-0x48] class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite>
+; V02 arg2 [V02,T04] ( 3, 3 ) ref -> [rbp-0x30] class-hnd single-def <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (24) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey>
-; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V05 tmp2 [V05,T00] ( 3, 6 ) ref -> [rbp-0x38] class-hnd spill-single-def "impAppendStmt" <<unknown class>>
; V06 tmp3 [V06,T01] ( 3, 6 ) struct (24) [rbp-0x18] do-not-enreg[S] must-init "Inlining Arg" <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
-; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> rsi class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V08 tmp5 [V08,T05] ( 2, 4 ) ref -> [rbp-0x40] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
; V09 tmp6 [V09 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite>
; V10 tmp7 [V10,T06] ( 2, 2 ) ref -> rsi single-def "field V01.<ServiceKey>k__BackingField (fldOffset=0x0)" P-INDEP
; V11 tmp8 [V11,T07] ( 2, 2 ) ref -> rdx single-def "field V01.<ServiceType>k__BackingField (fldOffset=0x8)" P-INDEP
-;* V12 tmp9 [V12,T11] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V13 tmp10 [V13,T12] ( 0, 0 ) int -> zero-ref "field V07.value (fldOffset=0x4)" P-INDEP
+;* V12 tmp9 [V12,T08] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V13 tmp10 [V13,T09] ( 0, 0 ) int -> zero-ref "field V07.value (fldOffset=0x4)" P-INDEP
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "V04.[000..004)"
;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "V04.[008..016)"
;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "V04.[016..024)"
; V17 tmp14 [V17,T02] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V18 tmp15 [V18,T08] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V19 tmp16 [V19,T09] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
-; V20 tmp17 [V20,T10] ( 2, 4 ) struct (24) [rbp-0x40] do-not-enreg[S] single-def "argument with side effect" <Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey>
-; TEMP_02 ref -> [rbp-0x50]
-; TEMP_01 ref -> [rbp-0x58]
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M55102_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 128
- vzeroupper
- lea rbp, [rsp+0x80]
- xor eax, eax
- mov qword ptr [rbp-0x58], rax
+ sub rsp, 96
+ lea rbp, [rsp+0x60]
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x50], ymm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
- vmovdqa xmmword ptr [rbp-0x10], xmm8
- mov gword ptr [rbp-0x48], rcx
+ vmovdqu ymmword ptr [rbp-0x20], ymm8
+ mov gword ptr [rbp-0x30], rcx
; GC ptr vars +{V02}
- ;; size=49 bbWeight=1 PerfScore 11.33
+ ;; size=24 bbWeight=1 PerfScore 5.08
G_M55102_IG02: ; bbWeight=1, gcVars=0000000000000010 {V02}, gcrefRegs=00C4 {rdx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rdx rsi rdi]
mov rdi, gword ptr [rdi+0x10]
+ mov gword ptr [rbp-0x38], rdi
+ ; GC ptr vars +{V05}
mov gword ptr [rbp-0x10], rsi
mov gword ptr [rbp-0x08], rdx
mov rsi, gword ptr [rdi+0x08]
- ;; size=16 bbWeight=1 PerfScore 6.00
-G_M55102_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rbp-0x18]
- vmovdqu xmmword ptr [rbp-0x40], xmm0
- mov rdx, qword ptr [rbp-0x08]
- ; gcrRegs -[rdx]
- mov qword ptr [rbp-0x30], rdx
- ;; size=18 bbWeight=1 PerfScore 6.00
-G_M55102_IG04: ; bbWeight=1, extend
- mov byte ptr [rbp-0x28], 0
- xor edx, edx
- mov dword ptr [rbp-0x24], edx
- lea rdx, [rbp-0x20]
- mov qword ptr [rsp+0x18], rdx
- mov gword ptr [rbp-0x50], rdi
- mov gword ptr [rbp-0x58], rsi
+ mov gword ptr [rbp-0x40], rsi
+ ; GC ptr vars +{V08}
lea rdi, [rsp]
; gcrRegs -[rdi]
- lea rsi, [rbp-0x40]
+ lea rsi, [rbp-0x18]
; gcrRegs -[rsi]
movsq
mov rcx, gword ptr [rsi]
@@ -82,26 +60,32 @@ G_M55102_IG04: ; bbWeight=1, extend
add rdi, 8
mov rcx, gword ptr [rsi]
mov gword ptr [rsp+0x10], rcx
+ mov byte ptr [rbp-0x28], 0
+ xor edx, edx
+ ; gcrRegs -[rdx]
+ mov dword ptr [rbp-0x24], edx
+ lea rdx, [rbp-0x20]
+ mov qword ptr [rsp+0x18], rdx
mov rdx, qword ptr [rbp-0x28]
- mov rcx, gword ptr [rbp-0x48]
+ mov rsi, gword ptr [rbp-0x40]
+ ; gcrRegs +[rsi]
+ mov rdi, gword ptr [rbp-0x38]
+ ; gcrRegs +[rdi]
+ mov rcx, gword ptr [rbp-0x30]
mov r8d, 1
mov r9d, 1
- mov rdi, gword ptr [rbp-0x50]
- ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x58]
- ; gcrRegs +[rsi]
- ; GC ptr vars -{V02}
+ ; GC ptr vars -{V02 V05 V08}
call [<unknown method>]
; gcrRegs -[rcx rsi rdi]
nop
- ;; size=95 bbWeight=1 PerfScore 22.00
-G_M55102_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 128
+ ;; size=111 bbWeight=1 PerfScore 28.00
+G_M55102_IG03: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 96
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 1.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 187, prolog size 45, PerfScore 47.08, instruction count 46, allocated bytes for code 187 (MethodHash=44df28c1) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Add(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (Tier1)
+; Total bytes of code 141, prolog size 20, PerfScore 34.83, instruction count 37, allocated bytes for code 141 (MethodHash=44df28c1) for method Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Add(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (Tier1)
; ============================================================
Unwind Info:
@@ -109,10 +93,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
+ SizeOfProlog : 0x05
CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 15 * 8 + 8 = 128 = 0x80
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+8 (+5.67%) : 277094.dasm - System.Data.Tests.SqlTypes.SqlStringTest+<>cDisplayClass14_0:
@@ -5,73 +5,74 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] this class-hnd <System.Data.Tests.SqlTypes.SqlStringTest+<>c__DisplayClass14_0>
+; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Data.Tests.SqlTypes.SqlStringTest+<>c__DisplayClass14_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Field obj"
-; V04 tmp3 [V04 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V05 tmp4 [V05 ] ( 1, 1 ) byref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
+; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "Field obj"
+; V04 tmp3 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
+; V05 tmp4 [V05 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M31389_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 40
+ sub rsp, 48
lea rbp, [rsp+0x30]
+ xor eax, eax
+ mov qword ptr [rbp-0x28], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
- mov gword ptr [rbp-0x10], rdi
- ;; size=25 bbWeight=1 PerfScore 6.08
+ vmovdqa xmmword ptr [rbp-0x20], xmm8
+ mov qword ptr [rbp-0x10], rax
+ mov gword ptr [rbp-0x08], rdi
+ ;; size=34 bbWeight=1 PerfScore 7.33
G_M31389_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov gword ptr [rbp-0x18], rax
- mov rbx, gword ptr [rbp-0x18]
- ; gcrRegs +[rbx]
- mov rsi, gword ptr [rbp-0x10]
+ mov gword ptr [rbp-0x10], rax
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+0x08]
- mov gword ptr [rbp-0x20], rsi
- mov rsi, gword ptr [rbp-0x20]
+ mov gword ptr [rbp-0x18], rsi
+ mov rsi, gword ptr [rbp-0x18]
cmp byte ptr [rsi], sil
- mov rsi, gword ptr [rbp-0x20]
+ mov rsi, gword ptr [rbp-0x18]
add rsi, 8
; gcrRegs -[rsi]
; byrRegs +[rsi]
- mov bword ptr [rbp-0x30], rsi
- mov rsi, gword ptr [rbp-0x10]
+ mov bword ptr [rbp-0x28], rsi
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
; byrRegs -[rsi]
cmp byte ptr [rsi], sil
- mov rsi, gword ptr [rbp-0x10]
+ mov rsi, gword ptr [rbp-0x08]
add rsi, 16
; gcrRegs -[rsi]
; byrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; System.Data.SqlTypes.SqlByte
call CORINFO_HELP_BOX
; byrRegs -[rsi]
- mov gword ptr [rbp-0x28], rax
- mov rsi, gword ptr [rbp-0x28]
+ mov gword ptr [rbp-0x20], rax
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
- mov rdi, bword ptr [rbp-0x30]
+ mov rdi, bword ptr [rbp-0x28]
; byrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov dword ptr [rbx+0x08], eax
- mov rax, gword ptr [rbp-0x18]
+ mov rcx, gword ptr [rbp-0x10]
+ ; gcrRegs +[rcx]
+ mov dword ptr [rcx+0x08], eax
+ mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax]
;; size=109 bbWeight=1 PerfScore 28.00
G_M31389_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
+ add rsp, 48
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 141, prolog size 21, PerfScore 36.33, instruction count 35, allocated bytes for code 141 (MethodHash=09578562) for method System.Data.Tests.SqlTypes.SqlStringTest+<>c__DisplayClass14_0:<CompareToArgumentException>b__0():System.Object:this (Tier0)
+; Total bytes of code 149, prolog size 30, PerfScore 37.08, instruction count 36, allocated bytes for code 149 (MethodHash=09578562) for method System.Data.Tests.SqlTypes.SqlStringTest+<>c__DisplayClass14_0:<CompareToArgumentException>b__0():System.Object:this (Tier0)
; ============================================================
Unwind Info:
@@ -79,11 +80,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+8 (+5.67%) : 273796.dasm - System.Data.Tests.SqlTypes.SqlBinaryTest+<>cDisplayClass8_0:
@@ -5,73 +5,74 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] this class-hnd <System.Data.Tests.SqlTypes.SqlBinaryTest+<>c__DisplayClass8_0>
+; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.Data.Tests.SqlTypes.SqlBinaryTest+<>c__DisplayClass8_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "Field obj"
-; V04 tmp3 [V04 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V05 tmp4 [V05 ] ( 1, 1 ) byref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
+; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "Field obj"
+; V04 tmp3 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
+; V05 tmp4 [V05 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M36478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 40
+ sub rsp, 48
lea rbp, [rsp+0x30]
+ xor eax, eax
+ mov qword ptr [rbp-0x28], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
- mov gword ptr [rbp-0x10], rdi
- ;; size=25 bbWeight=1 PerfScore 6.08
+ vmovdqa xmmword ptr [rbp-0x20], xmm8
+ mov qword ptr [rbp-0x10], rax
+ mov gword ptr [rbp-0x08], rdi
+ ;; size=34 bbWeight=1 PerfScore 7.33
G_M36478_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov gword ptr [rbp-0x18], rax
- mov rbx, gword ptr [rbp-0x18]
- ; gcrRegs +[rbx]
- mov rsi, gword ptr [rbp-0x10]
+ mov gword ptr [rbp-0x10], rax
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
mov rsi, gword ptr [rsi+0x08]
- mov gword ptr [rbp-0x20], rsi
- mov rsi, gword ptr [rbp-0x20]
+ mov gword ptr [rbp-0x18], rsi
+ mov rsi, gword ptr [rbp-0x18]
cmp byte ptr [rsi], sil
- mov rsi, gword ptr [rbp-0x20]
+ mov rsi, gword ptr [rbp-0x18]
add rsi, 8
; gcrRegs -[rsi]
; byrRegs +[rsi]
- mov bword ptr [rbp-0x30], rsi
- mov rsi, gword ptr [rbp-0x10]
+ mov bword ptr [rbp-0x28], rsi
+ mov rsi, gword ptr [rbp-0x08]
; gcrRegs +[rsi]
; byrRegs -[rsi]
cmp byte ptr [rsi], sil
- mov rsi, gword ptr [rbp-0x10]
+ mov rsi, gword ptr [rbp-0x08]
add rsi, 16
; gcrRegs -[rsi]
; byrRegs +[rsi]
mov rdi, 0xD1FFAB1E ; System.Data.SqlTypes.SqlString
call CORINFO_HELP_BOX
; byrRegs -[rsi]
- mov gword ptr [rbp-0x28], rax
- mov rsi, gword ptr [rbp-0x28]
+ mov gword ptr [rbp-0x20], rax
+ mov rsi, gword ptr [rbp-0x20]
; gcrRegs +[rsi]
- mov rdi, bword ptr [rbp-0x30]
+ mov rdi, bword ptr [rbp-0x28]
; byrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov dword ptr [rbx+0x08], eax
- mov rax, gword ptr [rbp-0x18]
+ mov rcx, gword ptr [rbp-0x10]
+ ; gcrRegs +[rcx]
+ mov dword ptr [rcx+0x08], eax
+ mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax]
;; size=109 bbWeight=1 PerfScore 28.00
G_M36478_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
+ add rsp, 48
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 141, prolog size 21, PerfScore 36.33, instruction count 35, allocated bytes for code 141 (MethodHash=59a97181) for method System.Data.Tests.SqlTypes.SqlBinaryTest+<>c__DisplayClass8_0:<CompareTo>b__0():System.Object:this (Tier0)
+; Total bytes of code 149, prolog size 30, PerfScore 37.08, instruction count 36, allocated bytes for code 149 (MethodHash=59a97181) for method System.Data.Tests.SqlTypes.SqlBinaryTest+<>c__DisplayClass8_0:<CompareTo>b__0():System.Object:this (Tier0)
; ============================================================
Unwind Info:
@@ -79,11 +80,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+8 (+5.97%) : 339694.dasm - System.IO.Tests.RandomAccessBase`1[long]:
@@ -5,68 +5,69 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] this class-hnd <System.IO.Tests.RandomAccess_Base`1[long]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [rbp-0x08] do-not-enreg[] this class-hnd <System.IO.Tests.RandomAccess_Base`1[long]>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <System.Int64>
-; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "handle histogram profile tmp"
-; V04 tmp3 [V04 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V05 tmp4 [V05 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
+; V02 tmp1 [V02 ] ( 1, 1 ) ref -> [rbp-0x10] do-not-enreg[] must-init class-hnd exact "Single-def Box Helper" <System.Int64>
+; V03 tmp2 [V03 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "handle histogram profile tmp"
+; V04 tmp3 [V04 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
+; V05 tmp4 [V05 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 40
+; Lcl frame size = 48
G_M63280_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- sub rsp, 40
+ sub rsp, 48
lea rbp, [rsp+0x30]
+ xor eax, eax
+ mov qword ptr [rbp-0x28], rax
vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
- mov gword ptr [rbp-0x10], rdi
- ;; size=25 bbWeight=1 PerfScore 6.08
+ vmovdqa xmmword ptr [rbp-0x20], xmm8
+ mov qword ptr [rbp-0x10], rax
+ mov gword ptr [rbp-0x08], rdi
+ ;; size=34 bbWeight=1 PerfScore 7.33
G_M63280_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, 0xD1FFAB1E ; System.Int64
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
- mov gword ptr [rbp-0x18], rax
- mov rbx, gword ptr [rbp-0x18]
- ; gcrRegs +[rbx]
- mov rdi, gword ptr [rbp-0x10]
+ mov gword ptr [rbp-0x10], rax
+ mov rdi, gword ptr [rbp-0x08]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x20], rdi
- mov rdi, gword ptr [rbp-0x20]
+ mov gword ptr [rbp-0x18], rdi
+ mov rdi, gword ptr [rbp-0x18]
mov rsi, 0xD1FFAB1E
call CORINFO_HELP_CLASSPROFILE32
; gcrRegs -[rax rdi]
- mov rax, gword ptr [rbp-0x20]
+ mov rax, gword ptr [rbp-0x18]
; gcrRegs +[rax]
- mov gword ptr [rbp-0x28], rax
+ mov gword ptr [rbp-0x20], rax
call [<unknown method>]
- mov gword ptr [rbp-0x30], rax
- mov rdi, gword ptr [rbp-0x28]
+ mov gword ptr [rbp-0x28], rax
+ mov rdi, gword ptr [rbp-0x20]
; gcrRegs +[rdi]
- mov rdx, gword ptr [rbp-0x30]
+ mov rdx, gword ptr [rbp-0x28]
; gcrRegs +[rdx]
xor rsi, rsi
; gcrRegs +[rsi]
xor ecx, ecx
- mov rax, gword ptr [rbp-0x28]
+ mov rax, gword ptr [rbp-0x20]
mov rax, qword ptr [rax]
; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
call [rax+0x38]<unknown method>
; gcrRegs -[rdx rsi rdi]
- mov qword ptr [rbx+0x08], rax
- mov rax, gword ptr [rbp-0x18]
+ mov rcx, gword ptr [rbp-0x10]
+ ; gcrRegs +[rcx]
+ mov qword ptr [rcx+0x08], rax
+ mov rax, gword ptr [rbp-0x10]
; gcrRegs +[rax]
;; size=102 bbWeight=1 PerfScore 26.00
G_M63280_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
- pop rbx
+ add rsp, 48
pop rbp
ret
- ;; size=7 bbWeight=1 PerfScore 2.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 134, prolog size 21, PerfScore 34.33, instruction count 34, allocated bytes for code 134 (MethodHash=e1f008cf) for method System.IO.Tests.RandomAccess_Base`1[long]:<ThrowsArgumentNullExceptionForNullHandle>b__6_0():System.Object:this (Instrumented Tier0)
+; Total bytes of code 142, prolog size 30, PerfScore 35.08, instruction count 35, allocated bytes for code 142 (MethodHash=e1f008cf) for method System.IO.Tests.RandomAccess_Base`1[long]:<ThrowsArgumentNullExceptionForNullHandle>b__6_0():System.Object:this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -74,11 +75,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x06
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-26 (-42.62%) : 255558.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>cDisplayClass160:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,40 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> rsi single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> rdi single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M18200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- xor eax, eax
- mov qword ptr [rsp], rax
- mov qword ptr [rsp+0x08], rax
- ;; size=15 bbWeight=1 PerfScore 2.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M18200_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdi
- ; gcrRegs +[rsi]
- cmp byte ptr [rsi], sil
- mov gword ptr [rsp], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rsi, qword ptr [rsp+0x08]
- ; gcrRegs -[rsi]
- movzx rdx, word ptr [rsp+0x10]
+ cmp byte ptr [rdi], dil
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
+ xor esi, esi
call [System.Text.Json.Nodes.JsonValue:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
nop
- ;; size=41 bbWeight=1 PerfScore 13.50
+ ;; size=29 bbWeight=1 PerfScore 11.50
G_M18200_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 61, prolog size 15, PerfScore 17.25, instruction count 16, allocated bytes for code 61 (MethodHash=e2eeb8e7) for method System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 35, prolog size 1, PerfScore 13.75, instruction count 11, allocated bytes for code 35 (MethodHash=e2eeb8e7) for method System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -62,9 +53,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-26 (-42.62%) : 265030.dasm - System.Text.Json.Nodes.Tests.JsonObjectTests+<>cDisplayClass160:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,40 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> rsi single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> rdi single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M65350_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- xor eax, eax
- mov qword ptr [rsp], rax
- mov qword ptr [rsp+0x08], rax
- ;; size=15 bbWeight=1 PerfScore 2.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M65350_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdi
- ; gcrRegs +[rsi]
- cmp byte ptr [rsi], sil
- mov gword ptr [rsp], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rsi, qword ptr [rsp+0x08]
- ; gcrRegs -[rsi]
- movzx rdx, word ptr [rsp+0x10]
+ cmp byte ptr [rdi], dil
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
+ xor esi, esi
call [System.Text.Json.Nodes.JsonObject:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonObject]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
nop
- ;; size=41 bbWeight=1 PerfScore 13.50
+ ;; size=29 bbWeight=1 PerfScore 11.50
G_M65350_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 61, prolog size 15, PerfScore 17.25, instruction count 16, allocated bytes for code 61 (MethodHash=0bb900b9) for method System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 35, prolog size 1, PerfScore 13.75, instruction count 11, allocated bytes for code 35 (MethodHash=0bb900b9) for method System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -62,9 +53,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
-26 (-42.62%) : 257231.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests+<>cDisplayClass10:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,40 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> rsi single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [rsp+0x00] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> rdi "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> rdi single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M52572_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 24
- xor eax, eax
- mov qword ptr [rsp], rax
- mov qword ptr [rsp+0x08], rax
- ;; size=15 bbWeight=1 PerfScore 2.50
+ push rax
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M52572_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rdi, gword ptr [rdi+0x08]
- mov rsi, rdi
- ; gcrRegs +[rsi]
- cmp byte ptr [rsi], sil
- mov gword ptr [rsp], rsi
- mov byte ptr [rsp+0x10], 0
- mov byte ptr [rsp+0x11], 0
- mov rsi, qword ptr [rsp+0x08]
- ; gcrRegs -[rsi]
- movzx rdx, word ptr [rsp+0x10]
+ cmp byte ptr [rdi], dil
+ mov byte ptr [rsp], 0
+ mov byte ptr [rsp+0x01], 0
+ movzx rdx, word ptr [rsp]
+ xor esi, esi
call [System.Text.Json.Nodes.JsonArray:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonArray]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
nop
- ;; size=41 bbWeight=1 PerfScore 13.50
+ ;; size=29 bbWeight=1 PerfScore 11.50
G_M52572_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+ add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 61, prolog size 15, PerfScore 17.25, instruction count 16, allocated bytes for code 61 (MethodHash=419932a3) for method System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 35, prolog size 1, PerfScore 13.75, instruction count 11, allocated bytes for code 35 (MethodHash=419932a3) for method System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -62,9 +53,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
+ SizeOfProlog : 0x01
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+ CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+49 (+6.86%) : 259867.dasm - System.Text.Json.Serialization.Tests.JsonElementClass:Initialize():this (FullOpts)
@@ -22,11 +22,11 @@
;* V11 tmp8 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V14 tmp11 [V14 ] ( 5, 10 ) struct (16) [rbp-0x20] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref
;* V16 tmp13 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V18 tmp15 [V18,T09] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V18 tmp15 [V18,T02] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -34,11 +34,11 @@
;* V23 tmp20 [V23 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V25 tmp22 [V25 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V26 tmp23 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V26 tmp23 [V26 ] ( 5, 10 ) struct (16) [rbp-0x30] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V27 tmp24 [V27 ] ( 0, 0 ) int -> zero-ref
;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp26 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V30 tmp27 [V30,T10] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V30 tmp27 [V30,T03] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V31 tmp28 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V33 tmp30 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -46,11 +46,11 @@
;* V35 tmp32 [V35 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V36 tmp33 [V36 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V37 tmp34 [V37 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V38 tmp35 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V38 tmp35 [V38 ] ( 5, 10 ) struct (16) [rbp-0x40] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V39 tmp36 [V39 ] ( 0, 0 ) int -> zero-ref
;* V40 tmp37 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp38 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V42 tmp39 [V42,T11] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V42 tmp39 [V42,T04] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V43 tmp40 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V44 tmp41 [V44 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V45 tmp42 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -58,11 +58,11 @@
;* V47 tmp44 [V47 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V48 tmp45 [V48 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V49 tmp46 [V49 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V50 tmp47 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V50 tmp47 [V50 ] ( 5, 10 ) struct (16) [rbp-0x50] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V51 tmp48 [V51 ] ( 0, 0 ) int -> zero-ref
;* V52 tmp49 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp50 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V54 tmp51 [V54,T12] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V54 tmp51 [V54,T05] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V55 tmp52 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V56 tmp53 [V56 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V57 tmp54 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -70,9 +70,9 @@
;* V59 tmp56 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V60 tmp57 [V60 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V61 tmp58 [V61 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V62 tmp59 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V62 tmp59 [V62 ] ( 5, 10 ) struct (16) [rbp-0x60] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V63 tmp60 [V63 ] ( 0, 0 ) int -> zero-ref
-; V64 tmp61 [V64,T13] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V64 tmp61 [V64,T06] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V65 tmp62 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V66 tmp63 [V66 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V67 tmp64 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -80,9 +80,9 @@
;* V69 tmp66 [V69 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V70 tmp67 [V70 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V71 tmp68 [V71 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V72 tmp69 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V72 tmp69 [V72 ] ( 5, 10 ) struct (16) [rbp-0x70] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V73 tmp70 [V73 ] ( 0, 0 ) int -> zero-ref
-; V74 tmp71 [V74,T14] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V74 tmp71 [V74,T07] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V75 tmp72 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V76 tmp73 [V76 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V77 tmp74 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -90,9 +90,9 @@
;* V79 tmp76 [V79 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V80 tmp77 [V80 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V81 tmp78 [V81 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V82 tmp79 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V82 tmp79 [V82 ] ( 5, 10 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V83 tmp80 [V83 ] ( 0, 0 ) int -> zero-ref
-; V84 tmp81 [V84,T15] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V84 tmp81 [V84,T08] ( 4, 7 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V85 tmp82 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
;* V86 tmp83 [V86 ] ( 0, 0 ) struct (16) zero-ref multireg-ret single-def "Inline return value spill temp" <System.Text.Json.JsonElement>
;* V87 tmp84 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -116,126 +116,119 @@
;* V105 tmp102 [V105 ] ( 0, 0 ) int -> zero-ref "field V09._idx (fldOffset=0x8)" P-INDEP
;* V106 tmp103 [V106 ] ( 0, 0 ) ref -> zero-ref "field V10._parent (fldOffset=0x0)" P-INDEP
;* V107 tmp104 [V107 ] ( 0, 0 ) int -> zero-ref "field V10._idx (fldOffset=0x8)" P-INDEP
-;* V108 tmp105 [V108,T44] ( 0, 0 ) int -> zero-ref single-def "field V11._maxDepth (fldOffset=0x0)" P-INDEP
-;* V109 tmp106 [V109,T45] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._commentHandling (fldOffset=0x4)" P-INDEP
-;* V110 tmp107 [V110,T46] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V108 tmp105 [V108,T51] ( 0, 0 ) int -> zero-ref single-def "field V11._maxDepth (fldOffset=0x0)" P-INDEP
+;* V109 tmp106 [V109,T52] ( 0, 0 ) ubyte -> zero-ref single-def "field V11._commentHandling (fldOffset=0x4)" P-INDEP
+;* V110 tmp107 [V110,T53] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V111 tmp108 [V111 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP
;* V112 tmp109 [V112 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP
;* V113 tmp110 [V113 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP
;* V114 tmp111 [V114 ] ( 0, 0 ) ref -> zero-ref "field V13._object (fldOffset=0x0)" P-INDEP
;* V115 tmp112 [V115 ] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
;* V116 tmp113 [V116 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0xc)" P-INDEP
-;* V117 tmp114 [V117,T37] ( 0, 0 ) ref -> zero-ref single-def "field V14._object (fldOffset=0x0)" P-INDEP
-;* V118 tmp115 [V118,T47] ( 0, 0 ) int -> zero-ref single-def "field V14._index (fldOffset=0x8)" P-INDEP
-;* V119 tmp116 [V119,T48] ( 0, 0 ) int -> zero-ref single-def "field V14._length (fldOffset=0xc)" P-INDEP
-; V120 tmp117 [V120,T16] ( 3, 2.50) ref -> rsi single-def "field V19._parent (fldOffset=0x0)" P-INDEP
-;* V121 tmp118 [V121,T49] ( 0, 0 ) int -> zero-ref single-def "field V19._idx (fldOffset=0x8)" P-INDEP
-; V122 tmp119 [V122,T23] ( 3, 2 ) ref -> rsi single-def "field V20._parent (fldOffset=0x0)" P-INDEP
-; V123 tmp120 [V123,T30] ( 3, 2 ) int -> r15 single-def "field V20._idx (fldOffset=0x8)" P-INDEP
-;* V124 tmp121 [V124,T50] ( 0, 0 ) int -> zero-ref single-def "field V23._maxDepth (fldOffset=0x0)" P-INDEP
-;* V125 tmp122 [V125,T51] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._commentHandling (fldOffset=0x4)" P-INDEP
-;* V126 tmp123 [V126,T52] ( 0, 0 ) ubyte -> zero-ref single-def "field V23.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V117 tmp114 [V117,T09] ( 3, 5 ) ref -> [rbp-0x20] do-not-enreg[] single-def "field V14._object (fldOffset=0x0)" P-DEP
+; V118 tmp115 [V118,T16] ( 3, 5 ) int -> [rbp-0x18] do-not-enreg[] single-def "field V14._index (fldOffset=0x8)" P-DEP
+; V119 tmp116 [V119,T17] ( 3, 5 ) int -> [rbp-0x14] do-not-enreg[] single-def "field V14._length (fldOffset=0xc)" P-DEP
+; V120 tmp117 [V120,T30] ( 3, 2.50) ref -> rsi single-def "field V19._parent (fldOffset=0x0)" P-INDEP
+;* V121 tmp118 [V121,T54] ( 0, 0 ) int -> zero-ref single-def "field V19._idx (fldOffset=0x8)" P-INDEP
+; V122 tmp119 [V122,T37] ( 3, 2 ) ref -> rsi single-def "field V20._parent (fldOffset=0x0)" P-INDEP
+; V123 tmp120 [V123,T44] ( 3, 2 ) int -> r15 single-def "field V20._idx (fldOffset=0x8)" P-INDEP
+;* V124 tmp121 [V124,T55] ( 0, 0 ) int -> zero-ref single-def "field V23._maxDepth (fldOffset=0x0)" P-INDEP
+;* V125 tmp122 [V125,T56] ( 0, 0 ) ubyte -> zero-ref single-def "field V23._commentHandling (fldOffset=0x4)" P-INDEP
+;* V126 tmp123 [V126,T57] ( 0, 0 ) ubyte -> zero-ref single-def "field V23.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V127 tmp124 [V127 ] ( 0, 0 ) ref -> zero-ref "field V24._object (fldOffset=0x0)" P-INDEP
;* V128 tmp125 [V128 ] ( 0, 0 ) int -> zero-ref "field V24._index (fldOffset=0x8)" P-INDEP
;* V129 tmp126 [V129 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0xc)" P-INDEP
;* V130 tmp127 [V130 ] ( 0, 0 ) ref -> zero-ref "field V25._object (fldOffset=0x0)" P-INDEP
;* V131 tmp128 [V131 ] ( 0, 0 ) int -> zero-ref "field V25._index (fldOffset=0x8)" P-INDEP
;* V132 tmp129 [V132 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0xc)" P-INDEP
-;* V133 tmp130 [V133,T38] ( 0, 0 ) ref -> zero-ref single-def "field V26._object (fldOffset=0x0)" P-INDEP
-;* V134 tmp131 [V134,T53] ( 0, 0 ) int -> zero-ref single-def "field V26._index (fldOffset=0x8)" P-INDEP
-;* V135 tmp132 [V135,T54] ( 0, 0 ) int -> zero-ref single-def "field V26._length (fldOffset=0xc)" P-INDEP
-; V136 tmp133 [V136,T17] ( 3, 2.50) ref -> rsi single-def "field V31._parent (fldOffset=0x0)" P-INDEP
-;* V137 tmp134 [V137,T55] ( 0, 0 ) int -> zero-ref single-def "field V31._idx (fldOffset=0x8)" P-INDEP
-; V138 tmp135 [V138,T24] ( 3, 2 ) ref -> rsi single-def "field V32._parent (fldOffset=0x0)" P-INDEP
-; V139 tmp136 [V139,T31] ( 3, 2 ) int -> r15 single-def "field V32._idx (fldOffset=0x8)" P-INDEP
-;* V140 tmp137 [V140,T56] ( 0, 0 ) int -> zero-ref single-def "field V35._maxDepth (fldOffset=0x0)" P-INDEP
-;* V141 tmp138 [V141,T57] ( 0, 0 ) ubyte -> zero-ref single-def "field V35._commentHandling (fldOffset=0x4)" P-INDEP
-;* V142 tmp139 [V142,T58] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V133 tmp130 [V133,T10] ( 3, 5 ) ref -> [rbp-0x30] do-not-enreg[] single-def "field V26._object (fldOffset=0x0)" P-DEP
+; V134 tmp131 [V134,T18] ( 3, 5 ) int -> [rbp-0x28] do-not-enreg[] single-def "field V26._index (fldOffset=0x8)" P-DEP
+; V135 tmp132 [V135,T19] ( 3, 5 ) int -> [rbp-0x24] do-not-enreg[] single-def "field V26._length (fldOffset=0xc)" P-DEP
+; V136 tmp133 [V136,T31] ( 3, 2.50) ref -> rsi single-def "field V31._parent (fldOffset=0x0)" P-INDEP
+;* V137 tmp134 [V137,T58] ( 0, 0 ) int -> zero-ref single-def "field V31._idx (fldOffset=0x8)" P-INDEP
+; V138 tmp135 [V138,T38] ( 3, 2 ) ref -> rsi single-def "field V32._parent (fldOffset=0x0)" P-INDEP
+; V139 tmp136 [V139,T45] ( 3, 2 ) int -> r15 single-def "field V32._idx (fldOffset=0x8)" P-INDEP
+;* V140 tmp137 [V140,T59] ( 0, 0 ) int -> zero-ref single-def "field V35._maxDepth (fldOffset=0x0)" P-INDEP
+;* V141 tmp138 [V141,T60] ( 0, 0 ) ubyte -> zero-ref single-def "field V35._commentHandling (fldOffset=0x4)" P-INDEP
+;* V142 tmp139 [V142,T61] ( 0, 0 ) ubyte -> zero-ref single-def "field V35.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V143 tmp140 [V143 ] ( 0, 0 ) ref -> zero-ref "field V36._object (fldOffset=0x0)" P-INDEP
;* V144 tmp141 [V144 ] ( 0, 0 ) int -> zero-ref "field V36._index (fldOffset=0x8)" P-INDEP
;* V145 tmp142 [V145 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0xc)" P-INDEP
;* V146 tmp143 [V146 ] ( 0, 0 ) ref -> zero-ref "field V37._object (fldOffset=0x0)" P-INDEP
;* V147 tmp144 [V147 ] ( 0, 0 ) int -> zero-ref "field V37._index (fldOffset=0x8)" P-INDEP
;* V148 tmp145 [V148 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0xc)" P-INDEP
-;* V149 tmp146 [V149,T39] ( 0, 0 ) ref -> zero-ref single-def "field V38._object (fldOffset=0x0)" P-INDEP
-;* V150 tmp147 [V150,T59] ( 0, 0 ) int -> zero-ref single-def "field V38._index (fldOffset=0x8)" P-INDEP
-;* V151 tmp148 [V151,T60] ( 0, 0 ) int -> zero-ref single-def "field V38._length (fldOffset=0xc)" P-INDEP
-; V152 tmp149 [V152,T18] ( 3, 2.50) ref -> rsi single-def "field V43._parent (fldOffset=0x0)" P-INDEP
-;* V153 tmp150 [V153,T61] ( 0, 0 ) int -> zero-ref single-def "field V43._idx (fldOffset=0x8)" P-INDEP
-; V154 tmp151 [V154,T25] ( 3, 2 ) ref -> rsi single-def "field V44._parent (fldOffset=0x0)" P-INDEP
-; V155 tmp152 [V155,T32] ( 3, 2 ) int -> r15 single-def "field V44._idx (fldOffset=0x8)" P-INDEP
-;* V156 tmp153 [V156,T62] ( 0, 0 ) int -> zero-ref single-def "field V47._maxDepth (fldOffset=0x0)" P-INDEP
-;* V157 tmp154 [V157,T63] ( 0, 0 ) ubyte -> zero-ref single-def "field V47._commentHandling (fldOffset=0x4)" P-INDEP
-;* V158 tmp155 [V158,T64] ( 0, 0 ) ubyte -> zero-ref single-def "field V47.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V149 tmp146 [V149,T11] ( 3, 5 ) ref -> [rbp-0x40] do-not-enreg[] single-def "field V38._object (fldOffset=0x0)" P-DEP
+; V150 tmp147 [V150,T20] ( 3, 5 ) int -> [rbp-0x38] do-not-enreg[] single-def "field V38._index (fldOffset=0x8)" P-DEP
+; V151 tmp148 [V151,T21] ( 3, 5 ) int -> [rbp-0x34] do-not-enreg[] single-def "field V38._length (fldOffset=0xc)" P-DEP
+; V152 tmp149 [V152,T32] ( 3, 2.50) ref -> rsi single-def "field V43._parent (fldOffset=0x0)" P-INDEP
+;* V153 tmp150 [V153,T62] ( 0, 0 ) int -> zero-ref single-def "field V43._idx (fldOffset=0x8)" P-INDEP
+; V154 tmp151 [V154,T39] ( 3, 2 ) ref -> rsi single-def "field V44._parent (fldOffset=0x0)" P-INDEP
+; V155 tmp152 [V155,T46] ( 3, 2 ) int -> r15 single-def "field V44._idx (fldOffset=0x8)" P-INDEP
+;* V156 tmp153 [V156,T63] ( 0, 0 ) int -> zero-ref single-def "field V47._maxDepth (fldOffset=0x0)" P-INDEP
+;* V157 tmp154 [V157,T64] ( 0, 0 ) ubyte -> zero-ref single-def "field V47._commentHandling (fldOffset=0x4)" P-INDEP
+;* V158 tmp155 [V158,T65] ( 0, 0 ) ubyte -> zero-ref single-def "field V47.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V159 tmp156 [V159 ] ( 0, 0 ) ref -> zero-ref "field V48._object (fldOffset=0x0)" P-INDEP
;* V160 tmp157 [V160 ] ( 0, 0 ) int -> zero-ref "field V48._index (fldOffset=0x8)" P-INDEP
;* V161 tmp158 [V161 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0xc)" P-INDEP
;* V162 tmp159 [V162 ] ( 0, 0 ) ref -> zero-ref "field V49._object (fldOffset=0x0)" P-INDEP
;* V163 tmp160 [V163 ] ( 0, 0 ) int -> zero-ref "field V49._index (fldOffset=0x8)" P-INDEP
;* V164 tmp161 [V164 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0xc)" P-INDEP
-;* V165 tmp162 [V165,T40] ( 0, 0 ) ref -> zero-ref single-def "field V50._object (fldOffset=0x0)" P-INDEP
-;* V166 tmp163 [V166,T65] ( 0, 0 ) int -> zero-ref single-def "field V50._index (fldOffset=0x8)" P-INDEP
-;* V167 tmp164 [V167,T66] ( 0, 0 ) int -> zero-ref single-def "field V50._length (fldOffset=0xc)" P-INDEP
-; V168 tmp165 [V168,T19] ( 3, 2.50) ref -> rsi single-def "field V55._parent (fldOffset=0x0)" P-INDEP
-;* V169 tmp166 [V169,T67] ( 0, 0 ) int -> zero-ref single-def "field V55._idx (fldOffset=0x8)" P-INDEP
-; V170 tmp167 [V170,T26] ( 3, 2 ) ref -> rsi single-def "field V56._parent (fldOffset=0x0)" P-INDEP
-; V171 tmp168 [V171,T33] ( 3, 2 ) int -> r15 single-def "field V56._idx (fldOffset=0x8)" P-INDEP
-;* V172 tmp169 [V172,T68] ( 0, 0 ) int -> zero-ref single-def "field V59._maxDepth (fldOffset=0x0)" P-INDEP
-;* V173 tmp170 [V173,T69] ( 0, 0 ) ubyte -> zero-ref single-def "field V59._commentHandling (fldOffset=0x4)" P-INDEP
-;* V174 tmp171 [V174,T70] ( 0, 0 ) ubyte -> zero-ref single-def "field V59.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V165 tmp162 [V165,T12] ( 3, 5 ) ref -> [rbp-0x50] do-not-enreg[] single-def "field V50._object (fldOffset=0x0)" P-DEP
+; V166 tmp163 [V166,T22] ( 3, 5 ) int -> [rbp-0x48] do-not-enreg[] single-def "field V50._index (fldOffset=0x8)" P-DEP
+; V167 tmp164 [V167,T23] ( 3, 5 ) int -> [rbp-0x44] do-not-enreg[] single-def "field V50._length (fldOffset=0xc)" P-DEP
+; V168 tmp165 [V168,T33] ( 3, 2.50) ref -> rsi single-def "field V55._parent (fldOffset=0x0)" P-INDEP
+;* V169 tmp166 [V169,T66] ( 0, 0 ) int -> zero-ref single-def "field V55._idx (fldOffset=0x8)" P-INDEP
+; V170 tmp167 [V170,T40] ( 3, 2 ) ref -> rsi single-def "field V56._parent (fldOffset=0x0)" P-INDEP
+; V171 tmp168 [V171,T47] ( 3, 2 ) int -> r15 single-def "field V56._idx (fldOffset=0x8)" P-INDEP
+;* V172 tmp169 [V172,T67] ( 0, 0 ) int -> zero-ref single-def "field V59._maxDepth (fldOffset=0x0)" P-INDEP
+;* V173 tmp170 [V173,T68] ( 0, 0 ) ubyte -> zero-ref single-def "field V59._commentHandling (fldOffset=0x4)" P-INDEP
+;* V174 tmp171 [V174,T69] ( 0, 0 ) ubyte -> zero-ref single-def "field V59.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V175 tmp172 [V175 ] ( 0, 0 ) ref -> zero-ref "field V60._object (fldOffset=0x0)" P-INDEP
;* V176 tmp173 [V176 ] ( 0, 0 ) int -> zero-ref "field V60._index (fldOffset=0x8)" P-INDEP
;* V177 tmp174 [V177 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0xc)" P-INDEP
;* V178 tmp175 [V178 ] ( 0, 0 ) ref -> zero-ref "field V61._object (fldOffset=0x0)" P-INDEP
;* V179 tmp176 [V179 ] ( 0, 0 ) int -> zero-ref "field V61._index (fldOffset=0x8)" P-INDEP
;* V180 tmp177 [V180 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0xc)" P-INDEP
-;* V181 tmp178 [V181,T41] ( 0, 0 ) ref -> zero-ref single-def "field V62._object (fldOffset=0x0)" P-INDEP
-;* V182 tmp179 [V182,T71] ( 0, 0 ) int -> zero-ref single-def "field V62._index (fldOffset=0x8)" P-INDEP
-;* V183 tmp180 [V183,T72] ( 0, 0 ) int -> zero-ref single-def "field V62._length (fldOffset=0xc)" P-INDEP
-; V184 tmp181 [V184,T20] ( 3, 2.50) ref -> rsi single-def "field V65._parent (fldOffset=0x0)" P-INDEP
-;* V185 tmp182 [V185,T73] ( 0, 0 ) int -> zero-ref single-def "field V65._idx (fldOffset=0x8)" P-INDEP
-; V186 tmp183 [V186,T27] ( 3, 2 ) ref -> rsi single-def "field V66._parent (fldOffset=0x0)" P-INDEP
-; V187 tmp184 [V187,T34] ( 3, 2 ) int -> r15 single-def "field V66._idx (fldOffset=0x8)" P-INDEP
-;* V188 tmp185 [V188,T74] ( 0, 0 ) int -> zero-ref single-def "field V69._maxDepth (fldOffset=0x0)" P-INDEP
-;* V189 tmp186 [V189,T75] ( 0, 0 ) ubyte -> zero-ref single-def "field V69._commentHandling (fldOffset=0x4)" P-INDEP
-;* V190 tmp187 [V190,T76] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V181 tmp178 [V181,T13] ( 3, 5 ) ref -> [rbp-0x60] do-not-enreg[] single-def "field V62._object (fldOffset=0x0)" P-DEP
+; V182 tmp179 [V182,T24] ( 3, 5 ) int -> [rbp-0x58] do-not-enreg[] single-def "field V62._index (fldOffset=0x8)" P-DEP
+; V183 tmp180 [V183,T25] ( 3, 5 ) int -> [rbp-0x54] do-not-enreg[] single-def "field V62._length (fldOffset=0xc)" P-DEP
+; V184 tmp181 [V184,T34] ( 3, 2.50) ref -> rsi single-def "field V65._parent (fldOffset=0x0)" P-INDEP
+;* V185 tmp182 [V185,T70] ( 0, 0 ) int -> zero-ref single-def "field V65._idx (fldOffset=0x8)" P-INDEP
+; V186 tmp183 [V186,T41] ( 3, 2 ) ref -> rsi single-def "field V66._parent (fldOffset=0x0)" P-INDEP
+; V187 tmp184 [V187,T48] ( 3, 2 ) int -> r15 single-def "field V66._idx (fldOffset=0x8)" P-INDEP
+;* V188 tmp185 [V188,T71] ( 0, 0 ) int -> zero-ref single-def "field V69._maxDepth (fldOffset=0x0)" P-INDEP
+;* V189 tmp186 [V189,T72] ( 0, 0 ) ubyte -> zero-ref single-def "field V69._commentHandling (fldOffset=0x4)" P-INDEP
+;* V190 tmp187 [V190,T73] ( 0, 0 ) ubyte -> zero-ref single-def "field V69.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V191 tmp188 [V191 ] ( 0, 0 ) ref -> zero-ref "field V70._object (fldOffset=0x0)" P-INDEP
;* V192 tmp189 [V192 ] ( 0, 0 ) int -> zero-ref "field V70._index (fldOffset=0x8)" P-INDEP
;* V193 tmp190 [V193 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0xc)" P-INDEP
;* V194 tmp191 [V194 ] ( 0, 0 ) ref -> zero-ref "field V71._object (fldOffset=0x0)" P-INDEP
;* V195 tmp192 [V195 ] ( 0, 0 ) int -> zero-ref "field V71._index (fldOffset=0x8)" P-INDEP
;* V196 tmp193 [V196 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0xc)" P-INDEP
-;* V197 tmp194 [V197,T42] ( 0, 0 ) ref -> zero-ref single-def "field V72._object (fldOffset=0x0)" P-INDEP
-;* V198 tmp195 [V198,T77] ( 0, 0 ) int -> zero-ref single-def "field V72._index (fldOffset=0x8)" P-INDEP
-;* V199 tmp196 [V199,T78] ( 0, 0 ) int -> zero-ref single-def "field V72._length (fldOffset=0xc)" P-INDEP
-; V200 tmp197 [V200,T21] ( 3, 2.50) ref -> rsi single-def "field V75._parent (fldOffset=0x0)" P-INDEP
-;* V201 tmp198 [V201,T79] ( 0, 0 ) int -> zero-ref single-def "field V75._idx (fldOffset=0x8)" P-INDEP
-; V202 tmp199 [V202,T28] ( 3, 2 ) ref -> rsi single-def "field V76._parent (fldOffset=0x0)" P-INDEP
-; V203 tmp200 [V203,T35] ( 3, 2 ) int -> r15 single-def "field V76._idx (fldOffset=0x8)" P-INDEP
-;* V204 tmp201 [V204,T80] ( 0, 0 ) int -> zero-ref single-def "field V79._maxDepth (fldOffset=0x0)" P-INDEP
-;* V205 tmp202 [V205,T81] ( 0, 0 ) ubyte -> zero-ref single-def "field V79._commentHandling (fldOffset=0x4)" P-INDEP
-;* V206 tmp203 [V206,T82] ( 0, 0 ) ubyte -> zero-ref single-def "field V79.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V197 tmp194 [V197,T14] ( 3, 5 ) ref -> [rbp-0x70] do-not-enreg[] single-def "field V72._object (fldOffset=0x0)" P-DEP
+; V198 tmp195 [V198,T26] ( 3, 5 ) int -> [rbp-0x68] do-not-enreg[] single-def "field V72._index (fldOffset=0x8)" P-DEP
...
+3 (+7.50%) : 122845.dasm - System.IO.Compression.Tests.ZipFileZipArchiveCreate+<>cDisplayClass0_0:
@@ -10,14 +10,12 @@
;
; V00 this [V00,T00] ( 4, 4 ) ref -> rdi this class-hnd single-def <System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.IO.Compression.ZipArchive>
-; V03 tmp2 [V03,T03] ( 2, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <System.String>
+; V02 tmp1 [V02,T02] ( 2, 4 ) ref -> rdx class-hnd single-def "Inlining Arg" <System.IO.Compression.ZipArchive>
+; V03 tmp2 [V03,T03] ( 2, 4 ) ref -> rsi class-hnd exact single-def "Inlining Arg" <System.String>
;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
-;* V05 tmp4 [V05,T06] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp5 [V06,T07] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
+;* V05 tmp4 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp5 [V06,T05] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP
; V07 tmp6 [V07,T01] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V08 tmp7 [V08,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V09 tmp8 [V09,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 8
@@ -26,29 +24,28 @@ G_M17240_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=1 bbWeight=1 PerfScore 1.00
G_M17240_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- mov rdx, gword ptr [rdi+0x18]
+ mov rdx, gword ptr [rdi+0x08]
; gcrRegs +[rdx]
- mov rdi, rcx
+ mov rsi, gword ptr [rdi+0x18]
+ ; gcrRegs +[rsi]
mov byte ptr [rsp], 0
xor ecx, ecx
- ; gcrRegs -[rcx]
mov dword ptr [rsp+0x04], ecx
mov rcx, qword ptr [rsp]
+ mov rdi, rdx
+ mov rdx, rsi
xor rsi, rsi
- ; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rdx rsi rdi] +[rax]
; gcr arg pop 0
nop
- ;; size=34 bbWeight=1 PerfScore 11.00
+ ;; size=37 bbWeight=1 PerfScore 11.25
G_M17240_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 40, prolog size 1, PerfScore 13.25, instruction count 13, allocated bytes for code 40 (MethodHash=2822bca7) for method System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
+; Total bytes of code 43, prolog size 1, PerfScore 13.50, instruction count 14, allocated bytes for code 43 (MethodHash=2822bca7) for method System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
+9 (+19.15%) : 263719.dasm - System.Text.Json.Serialization.Tests.DefaultJsonTypeInfoResolverTests+<>cDisplayClass86_0`1[System.Canon]:
@@ -15,13 +15,15 @@
; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonPolymorphismOptions>
; V05 tmp3 [V05,T02] ( 3, 5 ) ref -> rdi class-hnd single-def "dup spill" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
;* V06 tmp4 [V06 ] ( 0, 0 ) ref -> zero-ref single-def
-; V07 cse0 [V07,T03] ( 3, 3 ) ref -> rbx "CSE - aggressive"
+; V07 cse0 [V07,T03] ( 3, 3 ) ref -> r15 "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M10397_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push rbx
- ;; size=1 bbWeight=1 PerfScore 1.00
+ push rax
+ ;; size=4 bbWeight=1 PerfScore 3.00
G_M10397_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
mov rbx, gword ptr [rdi+0x18]
@@ -36,23 +38,26 @@ G_M10397_IG03: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
; gcr arg pop 0
;; size=6 bbWeight=0.50 PerfScore 1.50
G_M10397_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov r15, 0xD1FFAB1E
+ ; gcrRegs +[r15]
lea rdi, bword ptr [rbx+0x10]
; byrRegs +[rdi]
- mov rbx, 0xD1FFAB1E
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rbx rsi]
; byrRegs -[rdi]
- mov rax, rbx
+ mov rax, r15
; gcrRegs +[rax]
;; size=25 bbWeight=1 PerfScore 2.25
G_M10397_IG05: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 8
pop rbx
+ pop r15
ret
- ;; size=2 bbWeight=1 PerfScore 1.50
+ ;; size=8 bbWeight=1 PerfScore 2.25
-; Total bytes of code 47, prolog size 1, PerfScore 11.50, instruction count 13, allocated bytes for code 47 (MethodHash=b2f5d762) for method System.Text.Json.Serialization.Tests.DefaultJsonTypeInfoResolverTests+<>c__DisplayClass86_0`1[System.__Canon]:<TestTypeInfoImmutability>b__12():System.Object:this (FullOpts)
+; Total bytes of code 56, prolog size 4, PerfScore 14.25, instruction count 17, allocated bytes for code 56 (MethodHash=b2f5d762) for method System.Text.Json.Serialization.Tests.DefaultJsonTypeInfoResolverTests+<>c__DisplayClass86_0`1[System.__Canon]:<TestTypeInfoImmutability>b__12():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -60,9 +65,11 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x04
+ CountOfUnwindCodes: 3
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ 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)
realworld.run.linux.x64.checked.mch
-25 (-19.38%) : 14766.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan
1[ubyte],int,byref,System.Nullable1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1ubyte@@ -9,9 +9,9 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
-; V01 arg1 [V01,T04] ( 3, 3 ) int -> rdx single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) byref -> r9 single-def
-; V03 arg3 [V03,T01] ( 5, 5 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
+; V01 arg1 [V01,T03] ( 3, 3 ) int -> rdx single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) byref -> r9 single-def
+; V03 arg3 [V03,T00] ( 5, 5 ) struct (16) [rbp-0x10] do-not-enreg[SA] multireg-arg single-def <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op <System.Nullable`1[System.Formats.Asn1.Asn1Tag]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V06 tmp1 [V06 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[ubyte]>
@@ -20,40 +20,36 @@
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) struct ( 8) zero-ref <System.Formats.Asn1.Asn1Tag>
;* V11 tmp6 [V11 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ubyte]>
-; V12 tmp7 [V12,T05] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V12 tmp7 [V12,T04] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V13 tmp8 [V13,T05] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V14 tmp9 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "field V06._reference (fldOffset=0x0)" P-INDEP
;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V16 tmp11 [V16 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V17 tmp12 [V17 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
-; V18 tmp13 [V18,T09] ( 3, 2 ) ubyte -> rcx "field V10._controlFlags (fldOffset=0x0)" P-INDEP
-; V19 tmp14 [V19,T10] ( 3, 2 ) int -> r10 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
-; V20 tmp15 [V20,T11] ( 2, 2 ) byref -> rax single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V21 tmp16 [V21,T12] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
-; V22 tmp17 [V22,T13] ( 2, 2 ) ubyte -> rcx "V04.[000..001)"
-; V23 tmp18 [V23,T14] ( 2, 1.50) ubyte -> r8 "V04.[004..005)"
-; V24 tmp19 [V24,T15] ( 2, 1.50) int -> rax "V04.[008..012)"
-; V25 tmp20 [V25,T08] ( 3, 3 ) struct (16) [rbp-0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
-; V26 tmp21 [V26,T02] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V27 tmp22 [V27,T00] ( 4, 8 ) struct (16) [rbp-0x38] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V28 tmp23 [V28,T07] ( 2, 4 ) int -> rdx "argument with side effect"
-;* V29 cse0 [V29,T16] ( 0, 0 ) long -> zero-ref "CSE - moderate"
+; V18 tmp13 [V18,T07] ( 3, 2 ) ubyte -> rcx "field V10._controlFlags (fldOffset=0x0)" P-INDEP
+; V19 tmp14 [V19,T08] ( 3, 2 ) int -> r10 "field V10.<TagValue>k__BackingField (fldOffset=0x4)" P-INDEP
+; V20 tmp15 [V20,T09] ( 2, 2 ) byref -> rax single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V21 tmp16 [V21,T10] ( 2, 2 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
+; V22 tmp17 [V22,T11] ( 2, 2 ) ubyte -> rcx "V04.[000..001)"
+; V23 tmp18 [V23,T12] ( 2, 1.50) ubyte -> r8 "V04.[004..005)"
+; V24 tmp19 [V24,T13] ( 2, 1.50) int -> rax "V04.[008..012)"
+; V25 tmp20 [V25,T06] ( 3, 3 ) struct (16) [rbp-0x20] do-not-enreg[SFR] multireg-ret must-init "Return value temp for multi-reg return (rejected tail call)." <System.ReadOnlySpan`1[ubyte]>
+; V26 tmp21 [V26,T01] ( 3, 6 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
+;* V27 cse0 [V27,T14] ( 0, 0 ) long -> zero-ref "CSE - moderate"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M37843_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 64
- lea rbp, [rsp+0x40]
+ sub rsp, 48
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- vxorps xmm8, xmm8, xmm8
- vmovdqu ymmword ptr [rbp-0x30], ymm8
+ mov qword ptr [rbp-0x20], rax
mov qword ptr [rbp-0x10], r8
mov dword ptr [rbp-0x08], r9d
mov r9, rcx
; byrRegs +[r9]
- ;; size=37 bbWeight=1 PerfScore 7.58
+ ;; size=27 bbWeight=1 PerfScore 5.25
G_M37843_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9}, byref, isz
; byrRegs +[rdi]
movzx rcx, byte ptr [rbp-0x10]
@@ -72,12 +68,8 @@ G_M37843_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9
mov r10d, eax
;; size=7 bbWeight=0.50 PerfScore 0.25
G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9}, byref
- mov bword ptr [rbp-0x38], rdi
- mov dword ptr [rbp-0x30], esi
mov byte ptr [rbp-0x28], cl
mov dword ptr [rbp-0x24], r10d
- mov rdi, bword ptr [rbp-0x38]
- mov rsi, qword ptr [rbp-0x30]
mov rcx, qword ptr [rbp-0x28]
mov r8d, 2
call [System.Formats.Asn1.AsnDecoder:GetIntegerContents(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,byref):System.ReadOnlySpan`1[ubyte]]
@@ -86,14 +78,14 @@ G_M37843_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0280 {rdi r9},
mov qword ptr [rbp-0x18], rdx
mov rax, bword ptr [rbp-0x20]
mov edx, dword ptr [rbp-0x18]
- ;; size=53 bbWeight=1 PerfScore 14.25
+ ;; size=38 bbWeight=1 PerfScore 10.25
G_M37843_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 129, prolog size 26, PerfScore 29.33, instruction count 36, allocated bytes for code 129 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
+; Total bytes of code 104, prolog size 16, PerfScore 23.00, instruction count 30, allocated bytes for code 104 (MethodHash=cd5d6c2c) for method System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
; ============================================================
Unwind Info:
@@ -106,5 +98,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-9 (-19.15%) : 13636.dasm - Microsoft.ML.Trainers.SdcaTrainerBase
3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase3+Visitor[System.Canon,System.Canon,System.__Canon]):this (FullOpts)@@ -9,38 +9,32 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> rdi this class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]>
; V01 arg1 [V01,T00] ( 5, 5 ) long -> rsi single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T01] ( 4, 4 ) ref -> rax class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rdi single-def "arr expr"
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> rax single-def "argument with side effect"
-; V06 tmp3 [V06,T06] ( 2, 4 ) long -> rdx "argument with side effect"
-; V07 tmp4 [V07,T05] ( 2, 4 ) byref -> rdi single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> rdx single-def "arr expr"
+; V05 tmp2 [V05,T04] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 8
G_M22309_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rax
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M22309_IG02: ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rdx rdi]
mov rax, rdx
; gcrRegs +[rax]
- mov rdx, rsi
- ; gcrRegs -[rdx]
- mov rdi, gword ptr [rdi+0x08]
- cmp esi, dword ptr [rdi+0x08]
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M22309_IG02: ; bbWeight=1, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdi]
+ mov rdx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rdx]
+ cmp esi, dword ptr [rdx+0x08]
jae SHORT G_M22309_IG04
- mov esi, esi
- lea rdi, bword ptr [rdi+4*rsi+0x10]
+ mov edi, esi
; gcrRegs -[rdi]
- ; byrRegs +[rdi]
- mov rsi, rdx
- mov rdx, rdi
+ lea rdx, bword ptr [rdx+4*rdi+0x10]
+ ; gcrRegs -[rdx]
; byrRegs +[rdx]
mov rdi, gword ptr [rax+0x08]
; gcrRegs +[rdi]
- ; byrRegs -[rdi]
- ;; size=32 bbWeight=1 PerfScore 10.25
+ ;; size=20 bbWeight=1 PerfScore 9.25
G_M22309_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 8
tail.jmp [rax+0x18]<unknown method>
@@ -53,7 +47,7 @@ G_M22309_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 47, prolog size 1, PerfScore 13.50, instruction count 15, allocated bytes for code 47 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 38, prolog size 4, PerfScore 12.75, instruction count 12, allocated bytes for code 38 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-20 (-16.39%) : 3236.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
@@ -10,63 +10,56 @@
;
; V00 this [V00,T00] ( 10, 7 ) byref -> rbx this single-def
;* V01 TypeCtx [V01 ] ( 0, 0 ) long -> zero-ref single-def
-; V02 loc0 [V02,T01] ( 4, 3 ) ref -> [rbp-0x18] class-hnd spill-single-def <<unknown class>>
+; V02 loc0 [V02,T01] ( 4, 3 ) ref -> rdi class-hnd single-def <<unknown class>>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> rax single-def "arr expr"
+; V04 tmp1 [V04,T02] ( 3, 3 ) ref -> rdi single-def "arr expr"
; V05 tmp2 [V05,T03] ( 3, 3 ) int -> rsi "index expr"
; V06 cse0 [V06,T05] ( 3, 1.50) int -> rsi "CSE - moderate"
; V07 cse1 [V07,T04] ( 3, 2.50) ref -> r15 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M60837_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
+ lea rbp, [rsp+0x10]
mov rbx, rdi
; byrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 3.75
G_M60837_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r15, gword ptr [rbx]
; gcrRegs +[r15]
mov rdi, r15
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x18], rdi
- ; GC ptr vars +{V02}
mov esi, dword ptr [rbx+0x14]
cmp esi, dword ptr [rdi+0x14]
jne SHORT G_M60837_IG08
- ;; size=18 bbWeight=1 PerfScore 9.25
-G_M60837_IG03: ; bbWeight=0.50, gcVars=0000000000000002 {V02}, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ;; size=14 bbWeight=1 PerfScore 8.25
+G_M60837_IG03: ; bbWeight=0.50, gcrefRegs=8080 {rdi r15}, byrefRegs=0008 {rbx}, byref, isz
mov esi, dword ptr [rbx+0x10]
cmp esi, dword ptr [rdi+0x10]
jae SHORT G_M60837_IG05
+ mov rdi, gword ptr [rdi+0x08]
+ cmp esi, dword ptr [rdi+0x08]
+ jae SHORT G_M60837_IG07
+ mov rsi, gword ptr [rdi+8*rsi+0x10]
+ ; gcrRegs +[rsi]
lea rdi, bword ptr [rbx+0x08]
; gcrRegs -[rdi]
; byrRegs +[rdi]
- mov rax, gword ptr [rbp-0x18]
- ; gcrRegs +[rax]
- mov rax, gword ptr [rax+0x08]
- cmp esi, dword ptr [rax+0x08]
- jae SHORT G_M60837_IG07
- mov rsi, gword ptr [rax+8*rsi+0x10]
- ; gcrRegs +[rsi]
- ; GC ptr vars -{V02}
call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rax rsi r15]
+ ; gcrRegs -[rsi r15]
; byrRegs -[rdi]
inc dword ptr [rbx+0x10]
mov eax, 1
- ;; size=43 bbWeight=0.50 PerfScore 9.88
+ ;; size=39 bbWeight=0.50 PerfScore 9.38
G_M60837_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.38
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M60837_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs +[r15]
mov eax, dword ptr [r15+0x10]
@@ -79,12 +72,11 @@ G_M60837_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
G_M60837_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax r15]
; byrRegs -[rbx]
- add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.38
+ ;; size=5 bbWeight=0.50 PerfScore 1.25
G_M60837_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
;; size=5 bbWeight=0 PerfScore 0.00
@@ -93,7 +85,7 @@ G_M60837_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 122, prolog size 13, PerfScore 28.12, instruction count 42, allocated bytes for code 122 (MethodHash=5726125a) for method System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 102, prolog size 9, PerfScore 26.12, instruction count 37, allocated bytes for code 102 (MethodHash=5726125a) for method System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -101,12 +93,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)
+35 (+2.46%) : 23800.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
@@ -11,23 +11,23 @@
; V00 this [V00,T07] ( 4, 3.50) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder>
; V01 arg1 [V01,T00] ( 14, 10.50) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax>
; V02 arg2 [V02,T01] ( 11, 8.50) ref -> r15 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag>
-; V03 loc0 [V03,T08] ( 5, 3.50) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
+; V03 loc0 [V03,T12] ( 5, 3.50) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
; V04 loc1 [V04 ] ( 3, 2.50) ubyte -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V05 loc2 [V05,T09] ( 5, 3.50) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
+; V05 loc2 [V05,T13] ( 5, 3.50) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
; V06 loc3 [V06 ] ( 3, 2 ) ubyte -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V07 loc4 [V07 ] ( 16, 8 ) struct (24) [rbp-0x50] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T16] ( 3, 2 ) int -> rdi
+; V09 tmp1 [V09,T16] ( 3, 2 ) int -> r8
;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref single-def
-;* V11 tmp3 [V11,T59] ( 0, 0 ) int -> zero-ref
+;* V11 tmp3 [V11,T53] ( 0, 0 ) int -> zero-ref
;* V12 tmp4 [V12 ] ( 0, 0 ) int -> zero-ref single-def
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
; V14 tmp6 [V14,T02] ( 5, 7 ) byref -> r13 single-def "Inlining Arg"
; V15 tmp7 [V15,T14] ( 4, 3.50) ref -> r12 class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
; V16 tmp8 [V16,T29] ( 4, 2 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V17 tmp9 [V17,T27] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V18 tmp10 [V18,T60] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V19 tmp11 [V19,T12] ( 5, 3.75) ref -> rsi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
+; V18 tmp10 [V18,T54] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V19 tmp11 [V19,T10] ( 5, 3.75) ref -> rsi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
;* V20 tmp12 [V20 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
;* V21 tmp13 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
;* V22 tmp14 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
@@ -35,14 +35,14 @@
; V24 tmp16 [V24,T15] ( 4, 3.50) ref -> [rbp-0x88] class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
; V25 tmp17 [V25,T30] ( 4, 2 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
; V26 tmp18 [V26,T28] ( 3, 2.25) ref -> rax single-def "CASTCLASS eval op1"
-; V27 tmp19 [V27,T61] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
-; V28 tmp20 [V28,T13] ( 5, 3.75) ref -> rsi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
+; V27 tmp19 [V27,T55] ( 3, 1.25) long -> rdi "fgMakeTemp is creating a new local variable"
+; V28 tmp20 [V28,T11] ( 5, 3.75) ref -> rsi class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
;* V29 tmp21 [V29 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
;* V30 tmp22 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax>
;* V31 tmp23 [V31 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
-; V32 tmp24 [V32,T33] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNavigator>
+; V32 tmp24 [V32,T31] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNavigator>
;* V33 tmp25 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
-; V34 tmp26 [V34,T34] ( 2, 2 ) ref -> rcx class-hnd single-def "impAppendStmt" <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]>
+; V34 tmp26 [V34,T32] ( 2, 2 ) ref -> rcx class-hnd single-def "impAppendStmt" <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]>
;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp28 [V36 ] ( 0, 0 ) int -> zero-ref
;* V37 tmp29 [V37 ] ( 0, 0 ) int -> zero-ref
@@ -51,15 +51,15 @@
;* V40 tmp32 [V40 ] ( 0, 0 ) int -> zero-ref
;* V41 tmp33 [V41 ] ( 0, 0 ) int -> zero-ref
;* V42 tmp34 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V43 tmp35 [V43,T53] ( 3, 1.50) ref -> [rbp-0x98] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
+; V43 tmp35 [V43,T47] ( 3, 1.50) ref -> [rbp-0x98] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
;* V44 tmp36 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree>
;* V45 tmp37 [V45 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V46 tmp38 [V46,T31] ( 4, 2 ) ref -> [rbp-0xA0] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
-; V47 tmp39 [V47,T10] ( 4, 4 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+; V46 tmp38 [V46,T25] ( 5, 2.50) ref -> [rbp-0xA0] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
+; V47 tmp39 [V47,T08] ( 4, 4 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
;* V48 tmp40 [V48 ] ( 0, 0 ) ref -> zero-ref single-def
;* V49 tmp41 [V49 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V50 tmp42 [V50,T45] ( 2, 2 ) int -> [rbp-0x54] spill-single-def "impAppendStmt"
-; V51 tmp43 [V51,T46] ( 2, 2 ) int -> [rbp-0x58] spill-single-def "impAppendStmt"
+; V50 tmp42 [V50,T39] ( 2, 2 ) int -> [rbp-0x54] spill-single-def "impAppendStmt"
+; V51 tmp43 [V51,T40] ( 2, 2 ) int -> [rbp-0x58] spill-single-def "impAppendStmt"
; V52 tmp44 [V52 ] ( 4, 4 ) struct ( 8) [rbp-0x60] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Text.TextSpan>
;* V53 tmp45 [V53 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Text.TextSpan>
;* V54 tmp46 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
@@ -71,9 +71,9 @@
;* V60 tmp52 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnostic>
; V61 tmp53 [V61,T19] ( 3, 3 ) ref -> [rbp-0xC0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueue`1[Microsoft.CodeAnalysis.Diagnostic]>
;* V62 tmp54 [V62 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
-; V63 tmp55 [V63,T35] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNavigator>
+; V63 tmp55 [V63,T33] ( 2, 2 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNavigator>
;* V64 tmp56 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
-; V65 tmp57 [V65,T36] ( 2, 2 ) ref -> rcx class-hnd single-def "impAppendStmt" <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]>
+; V65 tmp57 [V65,T34] ( 2, 2 ) ref -> rcx class-hnd single-def "impAppendStmt" <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]>
;* V66 tmp58 [V66 ] ( 0, 0 ) int -> zero-ref
;* V67 tmp59 [V67 ] ( 0, 0 ) int -> zero-ref
;* V68 tmp60 [V68 ] ( 0, 0 ) int -> zero-ref
@@ -82,15 +82,15 @@
;* V71 tmp63 [V71 ] ( 0, 0 ) int -> zero-ref
;* V72 tmp64 [V72 ] ( 0, 0 ) int -> zero-ref
;* V73 tmp65 [V73 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V74 tmp66 [V74,T54] ( 3, 1.50) ref -> [rbp-0xC8] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
+; V74 tmp66 [V74,T48] ( 3, 1.50) ref -> [rbp-0xC8] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
;* V75 tmp67 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree>
;* V76 tmp68 [V76 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V77 tmp69 [V77,T32] ( 4, 2 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
-; V78 tmp70 [V78,T11] ( 4, 4 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
+; V77 tmp69 [V77,T26] ( 5, 2.50) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
+; V78 tmp70 [V78,T09] ( 4, 4 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
;* V79 tmp71 [V79 ] ( 0, 0 ) ref -> zero-ref single-def
;* V80 tmp72 [V80 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V81 tmp73 [V81,T47] ( 2, 2 ) int -> [rbp-0x64] spill-single-def "impAppendStmt"
-; V82 tmp74 [V82,T48] ( 2, 2 ) int -> [rbp-0x68] spill-single-def "impAppendStmt"
+; V81 tmp73 [V81,T41] ( 2, 2 ) int -> [rbp-0x64] spill-single-def "impAppendStmt"
+; V82 tmp74 [V82,T42] ( 2, 2 ) int -> [rbp-0x68] spill-single-def "impAppendStmt"
; V83 tmp75 [V83 ] ( 4, 4 ) struct ( 8) [rbp-0x70] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Text.TextSpan>
;* V84 tmp76 [V84 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Text.TextSpan>
;* V85 tmp77 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.CSDiagnosticInfo>
@@ -107,41 +107,33 @@
; V96 tmp88 [V96 ] ( 4, 2 ) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed "field V07.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V97 tmp89 [V97 ] ( 0, 0 ) int -> zero-ref "field V45.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V45.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V99 tmp91 [V99,T55] ( 3, 1.50) int -> rax "field V49.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-; V100 tmp92 [V100,T56] ( 3, 1.50) int -> rcx "field V49.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
+; V99 tmp91 [V99,T49] ( 3, 1.50) int -> rcx "field V49.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
+; V100 tmp92 [V100,T50] ( 3, 1.50) int -> rdx "field V49.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
; V101 tmp93 [V101 ] ( 3, 2.50) int -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V52.<Start>k__BackingField (fldOffset=0x0)" P-DEP
; V102 tmp94 [V102 ] ( 3, 2.50) int -> [rbp-0x5C] do-not-enreg[X] addr-exposed "field V52.<Length>k__BackingField (fldOffset=0x4)" P-DEP
;* V103 tmp95 [V103 ] ( 0, 0 ) int -> zero-ref single-def "field V53.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V104 tmp96 [V104 ] ( 0, 0 ) int -> zero-ref single-def "field V53.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
;* V105 tmp97 [V105 ] ( 0, 0 ) int -> zero-ref "field V76.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V106 tmp98 [V106 ] ( 0, 0 ) int -> zero-ref "field V76.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V107 tmp99 [V107,T57] ( 3, 1.50) int -> rax "field V80.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-; V108 tmp100 [V108,T58] ( 3, 1.50) int -> rcx "field V80.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
+; V107 tmp99 [V107,T51] ( 3, 1.50) int -> rcx "field V80.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
+; V108 tmp100 [V108,T52] ( 3, 1.50) int -> rdx "field V80.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
; V109 tmp101 [V109 ] ( 3, 2.50) int -> [rbp-0x70] do-not-enreg[X] addr-exposed "field V83.<Start>k__BackingField (fldOffset=0x0)" P-DEP
; V110 tmp102 [V110 ] ( 3, 2.50) int -> [rbp-0x6C] do-not-enreg[X] addr-exposed "field V83.<Length>k__BackingField (fldOffset=0x4)" P-DEP
;* V111 tmp103 [V111 ] ( 0, 0 ) int -> zero-ref single-def "field V84.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V112 tmp104 [V112 ] ( 0, 0 ) int -> zero-ref single-def "field V84.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
; V113 tmp105 [V113,T23] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V114 tmp106 [V114,T49] ( 2, 2 ) int -> rdx "argument with side effect"
+; V114 tmp106 [V114,T43] ( 2, 2 ) int -> rdx "argument with side effect"
; V115 tmp107 [V115,T24] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V116 tmp108 [V116,T50] ( 2, 2 ) int -> rdx "argument with side effect"
-; V117 tmp109 [V117,T37] ( 2, 2 ) ref -> rdx single-def "arr expr"
+; V116 tmp108 [V116,T44] ( 2, 2 ) int -> rdx "argument with side effect"
+; V117 tmp109 [V117,T35] ( 2, 2 ) ref -> r8 single-def "arr expr"
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "index expr"
-; V119 tmp111 [V119,T38] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-;* V120 tmp112 [V120,T62] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V121 tmp113 [V121,T39] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V122 tmp114 [V122,T40] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V123 tmp115 [V123,T51] ( 2, 2 ) int -> rdx "argument with side effect"
-; V124 tmp116 [V124,T06] ( 6, 6 ) struct ( 8) [rbp-0x78] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V125 tmp117 [V125,T25] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
-; V126 tmp118 [V126,T41] ( 2, 2 ) ref -> rdx single-def "arr expr"
-;* V127 tmp119 [V127 ] ( 0, 0 ) int -> zero-ref "index expr"
-; V128 tmp120 [V128,T42] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-;* V129 tmp121 [V129,T63] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V130 tmp122 [V130,T43] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V131 tmp123 [V131,T44] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V132 tmp124 [V132,T52] ( 2, 2 ) int -> rdx "argument with side effect"
-; V133 tmp125 [V133,T26] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
+; V119 tmp111 [V119,T36] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V120 tmp112 [V120,T45] ( 2, 2 ) int -> rdx "argument with side effect"
+; V121 tmp113 [V121,T06] ( 6, 6 ) struct ( 8) [rbp-0x78] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Text.TextSpan>
+; V122 tmp114 [V122,T37] ( 2, 2 ) ref -> r8 single-def "arr expr"
+;* V123 tmp115 [V123 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V124 tmp116 [V124,T38] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
+; V125 tmp117 [V125,T46] ( 2, 2 ) int -> rdx "argument with side effect"
;
; Lcl frame size = 200
@@ -336,11 +328,11 @@ G_M58562_IG12: ; bbWeight=1, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefR
;; size=25 bbWeight=1 PerfScore 7.25
G_M58562_IG13: ; bbWeight=0.50, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- xor edi, edi
+ xor r8d, r8d
cmp byte ptr [rbp-0x38], 1
- sete dil
+ sete r8b
jmp SHORT G_M58562_IG16
- ;; size=12 bbWeight=0.50 PerfScore 2.62
+ ;; size=13 bbWeight=0.50 PerfScore 2.62
G_M58562_IG14: ; bbWeight=0.50, gcVars=0000000000008000 {V24}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r12]
; GC ptr vars +{V15 V24}
@@ -351,29 +343,29 @@ G_M58562_IG14: ; bbWeight=0.50, gcVars=0000000000008000 {V24}, gcrefRegs=
G_M58562_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] +[r12]
; GC ptr vars -{V15 V24}
- xor edi, edi
- ;; size=2 bbWeight=0.50 PerfScore 0.12
+ xor r8d, r8d
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
G_M58562_IG16: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
- test edi, edi
+ test r8d, r8d
jne G_M58562_IG31
- ;; size=8 bbWeight=1 PerfScore 1.25
+ ;; size=9 bbWeight=1 PerfScore 1.25
G_M58562_IG17: ; bbWeight=0.50, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0x38], 1
jne G_M58562_IG24
cmp byte ptr [r12], r12b
- mov rdi, 0xD1FFAB1E ; const ptr
- mov rdi, gword ptr [rdi]
+ mov r8, 0xD1FFAB1E ; const ptr
+ mov rdi, gword ptr [r8]
; gcrRegs +[rdi]
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rcx, gword ptr [rdx]
+ mov r8, 0xD1FFAB1E ; const ptr
+ mov rcx, gword ptr [r8]
; gcrRegs +[rcx]
- mov rdx, 0xD1FFAB1E ; const ptr
- mov rdx, gword ptr [rdx]
- ; gcrRegs +[rdx]
- mov r8, gword ptr [rdx+0x10]
+ mov r8, 0xD1FFAB1E ; const ptr
+ mov r8, gword ptr [r8]
; gcrRegs +[r8]
- mov rdx, r12
+ mov r8, gword ptr [r8+0x10]
lea rsi, [rbp-0x50]
+ mov rdx, r12
+ ; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx rdi r8]
mov rdi, gword ptr [rbp-0x50]
@@ -382,43 +374,42 @@ G_M58562_IG17: ; bbWeight=0.50, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byr
jne SHORT G_M58562_IG18
xor rax, rax
; gcrRegs +[rax]
- xor rdi, rdi
jmp SHORT G_M58562_IG19
- ;; size=85 bbWeight=0.50 PerfScore 11.62
+ ;; size=83 bbWeight=0.50 PerfScore 11.50
G_M58562_IG18: ; bbWeight=0.50, gcrefRegs=F088 {rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x30]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M58562_IG19: ; bbWeight=0.50, gcrefRegs=F088 {rbx rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov gword ptr [rbp-0xA0], rdi
+ ;; size=10 bbWeight=0.50 PerfScore 3.50
+G_M58562_IG19: ; bbWeight=0.50, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V46}
- test rdi, rdi
- je SHORT G_M58562_IG22
+ test rax, rax
+ je G_M58562_IG22
+ mov rax, gword ptr [rbp-0xA0]
cmp gword ptr [rbp-0x48], 0
jne SHORT G_M58562_IG20
- xor eax, eax
xor ecx, ecx
...
+16 (+2.54%) : 25771.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:
@@ -10,33 +10,33 @@
;
; V00 this [V00,T05] ( 5, 10 ) ref -> r15 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker>
; V01 arg1 [V01,T04] ( 6, 10 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02,T37] ( 1, 4 ) struct (40) [rbp+0x10] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
-; V03 arg3 [V03,T27] ( 4, 4 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
-; V04 arg4 [V04,T34] ( 3, 3 ) ref -> r14 class-hnd single-def <System.String>
+; V02 arg2 [V02,T32] ( 1, 4 ) struct (40) [rbp+0x10] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState>
+; V03 arg3 [V03,T22] ( 4, 4 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V04 arg4 [V04,T29] ( 3, 3 ) ref -> r14 class-hnd single-def <System.String>
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V06 loc1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
; V07 loc2 [V07,T06] ( 4, 12 ) ref -> r12 class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
; V08 loc3 [V08 ] ( 8, 16 ) struct (24) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T36] ( 2, 4 ) ref -> [rbp-0x70] spill-single-def
+; V10 tmp1 [V10,T31] ( 2, 4 ) ref -> [rbp-0x70] spill-single-def
;* V11 tmp2 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 tmp3 [V12 ] ( 0, 0 ) ref -> zero-ref
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref
-; V14 tmp5 [V14,T28] ( 3, 6 ) ref -> registers
+; V14 tmp5 [V14,T23] ( 3, 6 ) ref -> registers
;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp7 [V16 ] ( 0, 0 ) int -> zero-ref
; V17 tmp8 [V17,T11] ( 4, 8 ) ref -> [rbp-0x78]
; V18 tmp9 [V18,T07] ( 3, 12 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "dup spill" <System.Object[]>
-; V19 tmp10 [V19,T13] ( 2, 8 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
+; V19 tmp10 [V19,T12] ( 2, 8 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
;* V20 tmp11 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V21 tmp12 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]>
;* V22 tmp13 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon[]>
-; V23 tmp14 [V23,T14] ( 2, 8 ) ref -> [rbp-0x88] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxTree>
+; V23 tmp14 [V23,T08] ( 3, 12 ) ref -> [rbp-0x88] class-hnd spill-single-def "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxTree>
; V24 tmp15 [V24 ] ( 2, 8 ) struct ( 8) [rbp-0x48] do-not-enreg[SB] "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V25 tmp16 [V25,T08] ( 3, 12 ) ref -> rdx ld-addr-op class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
-; V26 tmp17 [V26,T15] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNavigator>
+; V25 tmp16 [V25,T09] ( 3, 12 ) ref -> rdx ld-addr-op class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
+; V26 tmp17 [V26,T13] ( 2, 8 ) ref -> rdi class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNavigator>
;* V27 tmp18 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.SyntaxNode>
-; V28 tmp19 [V28,T16] ( 2, 8 ) ref -> rcx class-hnd "impAppendStmt" <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]>
+; V28 tmp19 [V28,T14] ( 2, 8 ) ref -> rcx class-hnd "impAppendStmt" <System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte]>
;* V29 tmp20 [V29 ] ( 0, 0 ) int -> zero-ref
;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref
@@ -45,50 +45,45 @@
;* V34 tmp25 [V34 ] ( 0, 0 ) int -> zero-ref
;* V35 tmp26 [V35 ] ( 0, 0 ) int -> zero-ref
;* V36 tmp27 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V37 tmp28 [V37,T29] ( 3, 6 ) ref -> r9 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
+; V37 tmp28 [V37,T24] ( 3, 6 ) ref -> r9 class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
;* V38 tmp29 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree>
;* V39 tmp30 [V39 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V40 tmp31 [V40,T12] ( 4, 8 ) ref -> [rbp-0x90] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
+; V40 tmp31 [V40,T10] ( 5, 10 ) ref -> [rbp-0x90] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
; V41 tmp32 [V41,T01] ( 4, 16 ) ref -> rdi class-hnd "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref
;* V43 tmp34 [V43 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V44 tmp35 [V44,T22] ( 2, 8 ) int -> [rbp-0x4C] spill-single-def "impAppendStmt"
-; V45 tmp36 [V45,T23] ( 2, 8 ) int -> [rbp-0x50] spill-single-def "impAppendStmt"
+; V44 tmp35 [V44,T17] ( 2, 8 ) int -> [rbp-0x4C] spill-single-def "impAppendStmt"
+; V45 tmp36 [V45,T18] ( 2, 8 ) int -> [rbp-0x50] spill-single-def "impAppendStmt"
; V46 tmp37 [V46 ] ( 4, 16 ) struct ( 8) [rbp-0x58] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Text.TextSpan>
;* V47 tmp38 [V47 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Text.TextSpan>
; V48 tmp39 [V48,T03] ( 4, 13 ) int -> r12 "Inline stloc first use temp"
-; V49 tmp40 [V49,T35] ( 2, 5 ) ref -> r13 single-def "field V05._array (fldOffset=0x0)" P-INDEP
+; V49 tmp40 [V49,T30] ( 2, 5 ) ref -> r13 single-def "field V05._array (fldOffset=0x0)" P-INDEP
; V50 tmp41 [V50,T02] ( 4, 13 ) int -> [rbp-0x5C] "field V05._index (fldOffset=0x8)" P-INDEP
-; V51 tmp42 [V51,T38] ( 3, 3 ) ref -> rax "field V06.array (fldOffset=0x0)" P-INDEP
+; V51 tmp42 [V51,T33] ( 3, 3 ) ref -> rax "field V06.array (fldOffset=0x0)" P-INDEP
; V52 tmp43 [V52 ] ( 2, 4 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V08.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
; V53 tmp44 [V53 ] ( 6, 12 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V08.<Node>k__BackingField (fldOffset=0x8)" P-DEP
; V54 tmp45 [V54 ] ( 1, 2 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V08.<Index>k__BackingField (fldOffset=0x10)" P-DEP
; V55 tmp46 [V55 ] ( 2, 4 ) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V08.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V56 tmp47 [V56 ] ( 0, 0 ) ref -> zero-ref single-def "field V20.array (fldOffset=0x0)" P-INDEP
-; V57 tmp48 [V57,T39] ( 2, 2 ) ref -> r13 single-def "field V21._array (fldOffset=0x0)" P-INDEP
-;* V58 tmp49 [V58,T40] ( 0, 0 ) int -> zero-ref single-def "field V21._index (fldOffset=0x8)" P-INDEP
-; V59 tmp50 [V59,T24] ( 2, 8 ) int -> [rbp-0x48] do-not-enreg[] "field V24.<Start>k__BackingField (fldOffset=0x0)" P-DEP
-; V60 tmp51 [V60,T25] ( 2, 8 ) int -> [rbp-0x44] do-not-enreg[] "field V24.<Length>k__BackingField (fldOffset=0x4)" P-DEP
+; V57 tmp48 [V57,T34] ( 2, 2 ) ref -> r13 single-def "field V21._array (fldOffset=0x0)" P-INDEP
+;* V58 tmp49 [V58,T35] ( 0, 0 ) int -> zero-ref single-def "field V21._index (fldOffset=0x8)" P-INDEP
+; V59 tmp50 [V59,T19] ( 2, 8 ) int -> [rbp-0x48] do-not-enreg[] "field V24.<Start>k__BackingField (fldOffset=0x0)" P-DEP
+; V60 tmp51 [V60,T20] ( 2, 8 ) int -> [rbp-0x44] do-not-enreg[] "field V24.<Length>k__BackingField (fldOffset=0x4)" P-DEP
;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref "field V39.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V62 tmp53 [V62 ] ( 0, 0 ) int -> zero-ref "field V39.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V63 tmp54 [V63,T31] ( 3, 6 ) int -> rax "field V43.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-; V64 tmp55 [V64,T32] ( 3, 6 ) int -> rcx "field V43.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
+; V63 tmp54 [V63,T26] ( 3, 6 ) int -> rcx "field V43.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
+; V64 tmp55 [V64,T27] ( 3, 6 ) int -> rdx "field V43.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
; V65 tmp56 [V65 ] ( 3, 10 ) int -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V46.<Start>k__BackingField (fldOffset=0x0)" P-DEP
; V66 tmp57 [V66 ] ( 3, 10 ) int -> [rbp-0x54] do-not-enreg[X] addr-exposed "field V46.<Length>k__BackingField (fldOffset=0x4)" P-DEP
;* V67 tmp58 [V67 ] ( 0, 0 ) int -> zero-ref "field V47.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V68 tmp59 [V68 ] ( 0, 0 ) int -> zero-ref "field V47.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V69 tmp60 [V69,T30] ( 3, 6 ) ref -> rax single-def "argument with side effect"
+; V69 tmp60 [V69,T25] ( 3, 6 ) ref -> rax single-def "argument with side effect"
; V70 tmp61 [V70,T00] ( 5, 20 ) struct ( 8) [rbp-0x68] do-not-enreg[S] "by-value struct argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V71 tmp62 [V71,T09] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V72 tmp63 [V72,T17] ( 2, 8 ) ref -> r8 "arr expr"
-;* V73 tmp64 [V73 ] ( 0, 0 ) int -> zero-ref "index expr"
-; V74 tmp65 [V74,T18] ( 2, 8 ) ref -> rdi "argument with side effect"
-; V75 tmp66 [V75,T19] ( 2, 8 ) ref -> rdx "argument with side effect"
-; V76 tmp67 [V76,T20] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V77 tmp68 [V77,T21] ( 2, 8 ) ref -> r8 "argument with side effect"
-; V78 tmp69 [V78,T26] ( 2, 8 ) int -> rdx "argument with side effect"
-; V79 tmp70 [V79,T10] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V80 cse0 [V80,T33] ( 3, 6 ) int -> r14 "CSE - moderate"
+; V71 tmp62 [V71,T15] ( 2, 8 ) ref -> r8 "arr expr"
+;* V72 tmp63 [V72 ] ( 0, 0 ) int -> zero-ref "index expr"
+; V73 tmp64 [V73,T16] ( 2, 8 ) ref -> r8 "argument with side effect"
+; V74 tmp65 [V74,T21] ( 2, 8 ) int -> rdx "argument with side effect"
+; V75 cse0 [V75,T28] ( 3, 6 ) int -> r14 "CSE - aggressive"
;
; Lcl frame size = 152
@@ -177,7 +172,7 @@ G_M39317_IG04: ; bbWeight=2, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=
; gcrRegs +[rcx]
jmp SHORT G_M39317_IG06
;; size=17 bbWeight=2 PerfScore 13.00
-G_M39317_IG05: ; bbWeight=2, gcVars=0000001000000000 {V10}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M39317_IG05: ; bbWeight=2, gcVars=0000000080000000 {V10}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rcx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -192,10 +187,10 @@ G_M39317_IG05: ; bbWeight=2, gcVars=0000001000000000 {V10}, gcrefRegs=B00
call [Microsoft.CodeAnalysis.SyntaxNode:get_Span():Microsoft.CodeAnalysis.Text.TextSpan:this]
; gcrRegs -[rax rdi]
mov qword ptr [rbp-0x48], rax
- mov rdi, gword ptr [rbp-0x88]
- ; gcrRegs +[rdi]
mov rsi, qword ptr [rbp-0x48]
mov qword ptr [rbp-0x68], rsi
+ mov rdi, gword ptr [rbp-0x88]
+ ; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x60]
; GC ptr vars -{V23}
@@ -212,19 +207,17 @@ G_M39317_IG06: ; bbWeight=2, gcrefRegs=B00A {rcx rbx r12 r13 r15}, byrefR
mov gword ptr [rbp-0x78], r9
; GC ptr vars +{V17}
jne G_M39317_IG13
- mov rdi, gword ptr [r15+0x20]
- ; gcrRegs +[rdi]
- mov rdx, gword ptr [rdi+0x08]
+ mov r8, gword ptr [r15+0x20]
+ ; gcrRegs +[r8]
+ mov rdx, gword ptr [r8+0x08]
; gcrRegs +[rdx]
cmp byte ptr [rdx], dl
- mov rdi, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rdi]
- mov rdi, gword ptr [rdi]
+ mov r8, 0xD1FFAB1E ; const ptr
+ ; gcrRegs -[r8]
+ mov rdi, gword ptr [r8]
; gcrRegs +[rdi]
- mov rcx, 0xD1FFAB1E ; const ptr
- ; gcrRegs -[rcx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
+ mov r8, 0xD1FFAB1E ; const ptr
+ mov rcx, gword ptr [r8]
mov r8, 0xD1FFAB1E ; const ptr
mov r8, gword ptr [r8]
; gcrRegs +[r8]
@@ -239,43 +232,43 @@ G_M39317_IG06: ; bbWeight=2, gcrefRegs=B00A {rcx rbx r12 r13 r15}, byrefR
jne SHORT G_M39317_IG07
xor rax, rax
; gcrRegs +[rax]
- xor rdi, rdi
jmp SHORT G_M39317_IG08
- ;; size=94 bbWeight=2 PerfScore 53.00
+ ;; size=92 bbWeight=2 PerfScore 52.50
G_M39317_IG07: ; bbWeight=2, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x30]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=13 bbWeight=2 PerfScore 14.50
-G_M39317_IG08: ; bbWeight=2, gcrefRegs=B088 {rbx rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov gword ptr [rbp-0x90], rdi
+ ;; size=10 bbWeight=2 PerfScore 14.00
+G_M39317_IG08: ; bbWeight=2, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rbp-0x90], rax
; GC ptr vars +{V40}
- test rdi, rdi
- je SHORT G_M39317_IG11
+ test rax, rax
+ je G_M39317_IG11
+ mov rax, gword ptr [rbp-0x90]
cmp gword ptr [rbp-0x38], 0
jne SHORT G_M39317_IG09
- xor eax, eax
xor ecx, ecx
+ xor edx, edx
jmp SHORT G_M39317_IG10
- ;; size=25 bbWeight=2 PerfScore 15.50
-G_M39317_IG09: ; bbWeight=2, gcVars=0000001000001000 {V10 V40}, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rdi]
- mov eax, dword ptr [rbp-0x2C]
- mov dword ptr [rbp-0x4C], eax
+ ;; size=36 bbWeight=2 PerfScore 17.50
+G_M39317_IG09: ; bbWeight=2, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, byref
+ ; GC ptr vars -{V10 V40}
+ mov gword ptr [rbp-0x90], rax
+ ; GC ptr vars +{V40}
+ mov ecx, dword ptr [rbp-0x2C]
+ mov dword ptr [rbp-0x4C], ecx
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- mov rcx, qword ptr [rcx]
- ; gcrRegs -[rcx]
- mov rcx, qword ptr [rcx+0x58]
- call [rcx+0x08]<unknown method>
- ; gcrRegs -[rdi]
+ mov rdx, gword ptr [rbp-0x38]
+ ; gcrRegs +[rdx]
+ mov rdx, qword ptr [rdx]
+ ; gcrRegs -[rdx]
+ mov rdx, qword ptr [rdx+0x58]
+ ; GC ptr vars +{V10}
+ call [rdx+0x08]<unknown method>
+ ; gcrRegs -[rax rdi]
add eax, dword ptr [rbp-0x4C]
mov dword ptr [rbp-0x50], eax
xor edi, edi
@@ -293,24 +286,27 @@ G_M39317_IG09: ; bbWeight=2, gcVars=0000001000001000 {V10 V40}, gcrefRegs
lea rdi, [rbp-0x58]
mov esi, dword ptr [rbp-0x50]
call [Microsoft.CodeAnalysis.Text.TextSpan:.ctor(int,int):this]
- mov eax, dword ptr [rbp-0x58]
- mov ecx, dword ptr [rbp-0x54]
- ;; size=74 bbWeight=2 PerfScore 62.00
-G_M39317_IG10: ; bbWeight=2, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0x90]
- ; gcrRegs +[rdi]
- mov dword ptr [rbp-0x68], eax
- mov dword ptr [rbp-0x64], ecx
+ mov ecx, dword ptr [rbp-0x58]
+ mov edx, dword ptr [rbp-0x54]
+ mov rax, gword ptr [rbp-0x90]
+ ; gcrRegs +[rax]
+ ;; size=88 bbWeight=2 PerfScore 66.00
+G_M39317_IG10: ; bbWeight=2, gcVars=0000000080000000 {V10}, gcrefRegs=B009 {rax rbx r12 r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V10 V40}
+ mov dword ptr [rbp-0x68], ecx
...
+12 (+2.89%) : 20457.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:CreateConstructorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol (FullOpts)
@@ -16,18 +16,18 @@
; V05 loc1 [V05 ] ( 8, 5 ) struct (24) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
; V06 OutArgs [V06 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T06] ( 2, 4 ) struct (24) [rbp-0x58] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxTokenList>
-; V08 tmp2 [V08,T11] ( 2, 2 ) int -> r12
+; V08 tmp2 [V08,T10] ( 2, 2 ) int -> r12
; V09 tmp3 [V09,T02] ( 3, 6 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol>
; V10 tmp4 [V10 ] ( 2, 4 ) struct (24) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxTokenList>
-; V11 tmp5 [V11,T10] ( 3, 2 ) ref -> [rbp-0x98] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
+; V11 tmp5 [V11,T09] ( 3, 2 ) ref -> [rbp-0x98] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.Location>
;* V12 tmp6 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxTree>
;* V13 tmp7 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V14 tmp8 [V14,T09] ( 4, 2.50) ref -> [rbp-0xA0] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
+; V14 tmp8 [V14,T07] ( 5, 3 ) ref -> [rbp-0xA0] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxTree>
; V15 tmp9 [V15,T01] ( 4, 6 ) ref -> rdi class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.SyntaxNode>
;* V16 tmp10 [V16 ] ( 0, 0 ) ref -> zero-ref single-def
;* V17 tmp11 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V18 tmp12 [V18,T12] ( 2, 2 ) int -> [rbp-0x74] spill-single-def "impAppendStmt"
-; V19 tmp13 [V19,T13] ( 2, 2 ) int -> [rbp-0x78] spill-single-def "impAppendStmt"
+; V18 tmp12 [V18,T11] ( 2, 2 ) int -> [rbp-0x74] spill-single-def "impAppendStmt"
+; V19 tmp13 [V19,T12] ( 2, 2 ) int -> [rbp-0x78] spill-single-def "impAppendStmt"
; V20 tmp14 [V20 ] ( 4, 4 ) struct ( 8) [rbp-0x80] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Text.TextSpan>
;* V21 tmp15 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.Text.TextSpan>
; V22 tmp16 [V22 ] ( 2, 2 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V05.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
@@ -36,15 +36,14 @@
; V25 tmp19 [V25 ] ( 2, 1.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V05.<Position>k__BackingField (fldOffset=0x14)" P-DEP
;* V26 tmp20 [V26 ] ( 0, 0 ) int -> zero-ref "field V13.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V27 tmp21 [V27 ] ( 0, 0 ) int -> zero-ref "field V13.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V28 tmp22 [V28,T15] ( 3, 1.50) int -> rax "field V17.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-; V29 tmp23 [V29,T16] ( 3, 1.50) int -> rcx "field V17.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
+; V28 tmp22 [V28,T14] ( 3, 1.50) int -> rcx "field V17.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
+; V29 tmp23 [V29,T15] ( 3, 1.50) int -> rdx "field V17.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
; V30 tmp24 [V30 ] ( 3, 2.50) int -> [rbp-0x80] do-not-enreg[X] addr-exposed "field V20.<Start>k__BackingField (fldOffset=0x0)" P-DEP
; V31 tmp25 [V31 ] ( 3, 2.50) int -> [rbp-0x7C] do-not-enreg[X] addr-exposed "field V20.<Length>k__BackingField (fldOffset=0x4)" P-DEP
;* V32 tmp26 [V32 ] ( 0, 0 ) int -> zero-ref single-def "field V21.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
;* V33 tmp27 [V33 ] ( 0, 0 ) int -> zero-ref single-def "field V21.<Length>k__BackingField (fldOffset=0x4)" P-INDEP
-; V34 tmp28 [V34,T14] ( 2, 2 ) int -> rdx "argument with side effect"
+; V34 tmp28 [V34,T13] ( 2, 2 ) int -> rdx "argument with side effect"
; V35 tmp29 [V35,T08] ( 3, 3 ) struct ( 8) [rbp-0x88] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.Text.TextSpan>
-; V36 tmp30 [V36,T07] ( 3, 3 ) ref -> rdi single-def "argument with side effect"
;
; Lcl frame size = 136
@@ -107,46 +106,46 @@ G_M54551_IG05: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rdi]
xor rax, rax
; gcrRegs +[rax]
- xor rdi, rdi
- ; gcrRegs +[rdi]
jmp SHORT G_M54551_IG07
- ;; size=6 bbWeight=0.50 PerfScore 1.25
+ ;; size=4 bbWeight=0.50 PerfScore 1.12
G_M54551_IG06: ; bbWeight=0.50, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
+ ; gcrRegs -[rax] +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x50]
call [rax+0x30]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov rdi, rax
- ; gcrRegs +[rdi]
- ;; size=13 bbWeight=0.50 PerfScore 3.62
-G_M54551_IG07: ; bbWeight=1, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax]
- mov gword ptr [rbp-0xA0], rdi
+ ;; size=10 bbWeight=0.50 PerfScore 3.50
+G_M54551_IG07: ; bbWeight=1, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V14}
- test rdi, rdi
+ test rax, rax
je G_M54551_IG11
;; size=16 bbWeight=1 PerfScore 2.25
-G_M54551_IG08: ; bbWeight=0.50, gcVars=0000000000000200 {V14}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rdi]
+G_M54551_IG08: ; bbWeight=0.50, gcVars=0000000000000080 {V14}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax]
+ mov rax, gword ptr [rbp-0xA0]
+ ; gcrRegs +[rax]
cmp gword ptr [rbp-0x38], 0
jne SHORT G_M54551_IG09
- xor eax, eax
xor ecx, ecx
+ xor edx, edx
jmp SHORT G_M54551_IG10
- ;; size=13 bbWeight=0.50 PerfScore 2.75
-G_M54551_IG09: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rbp-0x2C]
- mov dword ptr [rbp-0x74], eax
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
+G_M54551_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars -{V14}
+ mov gword ptr [rbp-0xA0], rax
+ ; GC ptr vars +{V14}
+ mov ecx, dword ptr [rbp-0x2C]
+ mov dword ptr [rbp-0x74], ecx
mov rdi, gword ptr [rbp-0x38]
; gcrRegs +[rdi]
- mov rcx, gword ptr [rbp-0x38]
- ; gcrRegs +[rcx]
- mov rcx, qword ptr [rcx]
- ; gcrRegs -[rcx]
- mov rcx, qword ptr [rcx+0x58]
- call [rcx+0x08]<unknown method>
- ; gcrRegs -[rdi]
+ mov rdx, gword ptr [rbp-0x38]
+ ; gcrRegs +[rdx]
+ mov rdx, qword ptr [rdx]
+ ; gcrRegs -[rdx]
+ mov rdx, qword ptr [rdx+0x58]
+ call [rdx+0x08]<unknown method>
+ ; gcrRegs -[rax rdi]
add eax, dword ptr [rbp-0x74]
mov dword ptr [rbp-0x78], eax
xor edi, edi
@@ -164,24 +163,27 @@ G_M54551_IG09: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
lea rdi, [rbp-0x80]
mov esi, dword ptr [rbp-0x78]
call [Microsoft.CodeAnalysis.Text.TextSpan:.ctor(int,int):this]
- mov eax, dword ptr [rbp-0x80]
- mov ecx, dword ptr [rbp-0x7C]
- ;; size=74 bbWeight=0.50 PerfScore 15.50
-G_M54551_IG10: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, gword ptr [rbp-0xA0]
- ; gcrRegs +[rdi]
- mov dword ptr [rbp-0x88], eax
- mov dword ptr [rbp-0x84], ecx
- mov rsi, qword ptr [rbp-0x88]
- mov rax, qword ptr [rdi]
- mov rax, qword ptr [rax+0x60]
+ mov ecx, dword ptr [rbp-0x80]
+ mov edx, dword ptr [rbp-0x7C]
+ mov rax, gword ptr [rbp-0xA0]
+ ; gcrRegs +[rax]
+ ;; size=88 bbWeight=0.50 PerfScore 16.50
+G_M54551_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V14}
+ mov dword ptr [rbp-0x88], ecx
+ mov dword ptr [rbp-0x84], edx
+ mov rsi, qword ptr [rbp-0x88]
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
+ mov rax, qword ptr [rax+0x60]
call [rax+0x28]<unknown method>
; gcrRegs -[rdi] +[rax]
mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V11}
jmp SHORT G_M54551_IG12
- ;; size=45 bbWeight=0.50 PerfScore 7.00
+ ;; size=41 bbWeight=0.50 PerfScore 6.62
G_M54551_IG11: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
; GC ptr vars -{V11}
@@ -191,7 +193,7 @@ G_M54551_IG11: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V11}
;; size=20 bbWeight=0.50 PerfScore 1.62
-G_M54551_IG12: ; bbWeight=1, gcVars=0000000000000400 {V11}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M54551_IG12: ; bbWeight=1, gcVars=0000000000000200 {V11}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, 0xD1FFAB1E ; Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol
call CORINFO_HELP_NEWSFAST
@@ -209,7 +211,7 @@ G_M54551_IG12: ; bbWeight=1, gcVars=0000000000000400 {V11}, gcrefRegs=C00
mov rcx, rbx
; gcrRegs +[rcx]
mov r8d, r12d
- ; GC ptr vars -{V11}
+ ; GC ptr vars -{V09 V11}
call [<unknown method>]
; gcrRegs -[rax rcx rdx rbx rsi rdi r14-r15]
mov rax, gword ptr [rbp-0x90]
@@ -226,7 +228,7 @@ G_M54551_IG13: ; bbWeight=1, epilog, nogc, extend
ret
;; size=18 bbWeight=1 PerfScore 4.25
-; Total bytes of code 415, prolog size 49, PerfScore 85.58, instruction count 108, allocated bytes for code 415 (MethodHash=23a22ae8) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:CreateConstructorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol (FullOpts)
+; Total bytes of code 427, prolog size 49, PerfScore 86.46, instruction count 109, allocated bytes for code 427 (MethodHash=23a22ae8) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:CreateConstructorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol (FullOpts)
; ============================================================
Unwind Info:
smoke_tests.nativeaot.linux.x64.checked.mch
-4 (-13.79%) : 10866.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
@@ -9,40 +9,36 @@
;
; V00 arg0 [V00,T00] ( 3, 3 ) ref -> rdi class-hnd exact single-def <System.String>
; V01 arg1 [V01,T02] ( 3, 3 ) ushort -> rsi single-def
-; V02 arg2 [V02,T03] ( 3, 3 ) int -> rdx single-def
+; V02 arg2 [V02,T03] ( 3, 3 ) int -> rax single-def
; V03 arg3 [V03,T01] ( 3, 3 ) byref -> rcx 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 "Inlining Arg"
-; V06 tmp2 [V06,T05] ( 2, 4 ) long -> r8 "Cast away GC"
-; V07 tmp3 [V07,T06] ( 2, 4 ) long -> r8 "argument with side effect"
-; V08 tmp4 [V08,T04] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V09 tmp5 [V09,T07] ( 2, 4 ) int -> rax "argument with side effect"
-; V10 tmp6 [V10,T08] ( 2, 4 ) int -> r9 "argument with side effect"
+; V06 tmp2 [V06,T04] ( 2, 4 ) long -> r8 "Cast away GC"
+; V07 tmp3 [V07,T05] ( 2, 4 ) long -> r8 "argument with side effect"
;
; Lcl frame size = 0
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ mov eax, edx
+ ;; size=2 bbWeight=1 PerfScore 0.25
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0002 {rcx}, byref
; gcrRegs +[rdi]
; byrRegs +[rcx]
- movzx rax, si
- mov r9d, edx
mov r8, rcx
+ movzx rdx, si
mov rsi, rdi
; gcrRegs +[rsi]
- mov edx, eax
- mov ecx, r9d
+ mov ecx, eax
; byrRegs -[rcx]
lea rdi, [(reloc)] ; function address
; gcrRegs -[rdi]
- ;; size=24 bbWeight=1 PerfScore 2.00
+ ;; size=18 bbWeight=1 PerfScore 1.50
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
jmp Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte
; gcr arg pop 0
;; size=5 bbWeight=1 PerfScore 2.00
-; Total bytes of code 29, prolog size 0, PerfScore 4.00, instruction count 8, allocated bytes for code 29 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
+; Total bytes of code 25, prolog size 2, PerfScore 3.75, instruction count 7, allocated bytes for code 25 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
; ============================================================
Cfi Info:
-22 (-13.17%) : 20050.dasm - Internal.CompilerGenerated.
@@ -27,25 +27,21 @@
;* V17 tmp2 [V17 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
;* V18 tmp3 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V20 tmp5 [V20,T05] ( 2, 4 ) long -> r15 "Cast away GC"
-; V21 tmp6 [V21,T06] ( 2, 4 ) long -> r15 "argument with side effect"
-; TEMP_01 byref -> [rbp-0x18]
+; V20 tmp5 [V20,T05] ( 2, 4 ) long -> rdi "Cast away GC"
+; V21 tmp6 [V21,T06] ( 2, 4 ) long -> rdi "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M8134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push rbx
- sub rsp, 16
- lea rbp, [rsp+0x20]
- xor eax, eax
- mov qword ptr [rbp-0x18], rax
+ lea rbp, [rsp+0x10]
mov r15, rdi
; byrRegs +[r15]
mov rbx, rsi
; byrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 5.50
+ ;; size=15 bbWeight=1 PerfScore 4.00
G_M8134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov edi, dword ptr [r15]
mov dword ptr [rbx+0x10], edi
@@ -83,40 +79,35 @@ G_M8134_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15},
;; size=36 bbWeight=4 PerfScore 54.00
G_M8134_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
; gcrRegs -[rsi]
- lea rdi, bword ptr [rbx+0x08]
- ; byrRegs +[rdi]
- mov bword ptr [rbp-0x18], rdi
add r15, 268
mov rdi, r15
- ; byrRegs -[rdi]
mov esi, 11
call Internal.Runtime.CompilerHelpers.InteropHelpers:ByValAnsiStringToString(ulong,int):System.String
; gcrRegs +[rax]
- ; byrRegs -[rbx r15]
+ ; byrRegs -[r15]
; gcr arg pop 0
- mov rdi, bword ptr [rbp-0x18]
+ lea rdi, bword ptr [rbx+0x08]
; byrRegs +[rdi]
mov rsi, rax
; gcrRegs +[rsi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rsi]
- ; byrRegs -[rdi]
+ ; byrRegs -[rbx rdi]
nop
- ;; size=41 bbWeight=1 PerfScore 5.75
+ ;; size=33 bbWeight=1 PerfScore 3.75
G_M8134_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
pop rbx
pop r15
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 2.75
+ ;; size=5 bbWeight=1 PerfScore 2.50
G_M8134_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 167, prolog size 25, PerfScore 80.50, instruction count 50, allocated bytes for code 167 (MethodHash=6c21e039) for method Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
+; Total bytes of code 145, prolog size 15, PerfScore 76.75, instruction count 44, allocated bytes for code 145 (MethodHash=6c21e039) for method Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
; ============================================================
Cfi Info:
@@ -128,4 +119,3 @@ Cfi Info:
CodeOffset: 0x03 Op: RelOffset DwarfReg:0xf Offset:0x0
CodeOffset: 0x04 Op: AdjustCfaOffset Offset:0x8
CodeOffset: 0x04 Op: RelOffset DwarfReg:0x3 Offset:0x0
- CodeOffset: 0x08 Op: AdjustCfaOffset Offset:0x10
-10 (-12.82%) : 9155.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -9,7 +9,7 @@
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 8
@@ -33,11 +33,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov edi, 1
xchg dword ptr [rbx], edi
test edi, edi
- sete dil
- movzx rdi, dil
- test edi, edi
- jne SHORT G_M21281_IG05
- ;; size=35 bbWeight=1 PerfScore 27.50
+ je SHORT G_M21281_IG05
+ ;; size=25 bbWeight=1 PerfScore 26.00
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
lea rdi, gword ptr [(reloc)]
@@ -59,7 +56,7 @@ G_M21281_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret
;; size=7 bbWeight=0.50 PerfScore 1.12
-; Total bytes of code 78, prolog size 8, PerfScore 34.50, instruction count 26, allocated bytes for code 78 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 68, prolog size 8, PerfScore 33.00, instruction count 23, allocated bytes for code 68 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
Cfi Info:
+9 (+3.12%) : 24194.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
@@ -10,34 +10,31 @@
; V00 this [V00,T05] ( 3, 3 ) ref -> rdi this class-hnd exact single-def <System.Text.UnicodeEncoding>
; V01 arg1 [V01,T03] ( 5, 5 ) ref -> rsi class-hnd exact single-def <System.String>
; V02 arg2 [V02,T01] ( 6, 5 ) int -> rdx single-def
-; V03 arg3 [V03,T02] ( 6, 5 ) int -> rcx single-def
+; V03 arg3 [V03,T02] ( 6, 5 ) int -> rax single-def
; V04 arg4 [V04,T04] ( 5, 5 ) ref -> r8 class-hnd single-def <ubyte[]>
; V05 arg5 [V05,T00] ( 6, 6 ) int -> r9 single-def
-; V06 loc0 [V06,T13] ( 2, 2 ) int -> rax
+; V06 loc0 [V06,T11] ( 2, 2 ) int -> r10
;* V07 loc1 [V07 ] ( 0, 0 ) long -> zero-ref
; V08 loc2 [V08 ] ( 2, 2 ) byref -> [rbp-0x10] must-init pinned single-def
;* V09 loc3 [V09 ] ( 0, 0 ) long -> zero-ref
; V10 loc4 [V10 ] ( 1, 1 ) byref -> [rbp-0x18] must-init pinned single-def
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T16] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-; V13 tmp2 [V13,T14] ( 2, 2 ) long -> rsi
+; V12 tmp1 [V12,T13] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V13 tmp2 [V13,T12] ( 2, 2 ) long -> rsi
;* V14 tmp3 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V15 tmp4 [V15,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V15 tmp4 [V15,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V18 tmp7 [V18 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V20 tmp9 [V20,T11] ( 3, 3 ) byref -> r8 "field V16._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp9 [V20,T09] ( 3, 3 ) byref -> r8 "field V16._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V22 tmp11 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
; V24 tmp13 [V24,T06] ( 2, 4 ) long -> rsi "Cast away GC"
; V25 tmp14 [V25,T07] ( 2, 4 ) long -> r8 "Cast away GC"
-;* V26 tmp15 [V26,T15] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V27 tmp16 [V27,T08] ( 2, 4 ) long -> rsi "argument with side effect"
-; V28 tmp17 [V28,T09] ( 2, 4 ) int -> rdx "argument with side effect"
-; V29 tmp18 [V29,T10] ( 2, 4 ) long -> rcx "argument with side effect"
-; V30 cse0 [V30,T12] ( 3, 3 ) int -> rax "CSE - moderate"
+; V26 tmp15 [V26,T08] ( 2, 4 ) long -> rcx "argument with side effect"
+; V27 cse0 [V27,T10] ( 3, 3 ) int -> rcx "CSE - moderate"
;
; Lcl frame size = 24
@@ -49,27 +46,29 @@ G_M25035_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor eax, eax
mov qword ptr [rbp-0x10], rax
mov qword ptr [rbp-0x18], rax
- ;; size=21 bbWeight=1 PerfScore 5.00
+ mov eax, ecx
+ ;; size=23 bbWeight=1 PerfScore 5.25
G_M25035_IG02: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi r8]
test rsi, rsi
je SHORT G_M25035_IG04
test r8, r8
- je SHORT G_M25035_IG05
+ je G_M25035_IG05
test edx, edx
jl G_M25035_IG06
- test ecx, ecx
+ test eax, eax
jl G_M25035_IG07
- mov eax, dword ptr [rsi+0x08]
- sub eax, edx
- cmp eax, ecx
+ mov ecx, dword ptr [rsi+0x08]
+ sub ecx, edx
+ cmp ecx, eax
jl G_M25035_IG08
test r9d, r9d
jl G_M25035_IG09
- mov eax, dword ptr [r8+0x08]
- cmp eax, r9d
+ mov ecx, dword ptr [r8+0x08]
+ cmp ecx, r9d
jl G_M25035_IG09
- sub eax, r9d
+ sub ecx, r9d
+ mov r10d, ecx
add rsi, 12
; gcrRegs -[rsi]
; byrRegs +[rsi]
@@ -79,13 +78,13 @@ G_M25035_IG02: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0000
; gcrRegs -[r8]
; byrRegs +[r8]
mov bword ptr [rbp-0x18], r8
+ movsxd rcx, r9d
+ add rcx, r8
movsxd rdx, edx
lea rsi, [rsi+2*rdx]
; byrRegs -[rsi]
- mov edx, ecx
- movsxd rcx, r9d
- add rcx, r8
- mov r8d, eax
+ mov edx, eax
+ mov r8d, r10d
; byrRegs -[r8]
xor r9, r9
; gcrRegs +[r9]
@@ -93,7 +92,7 @@ G_M25035_IG02: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0000
call <unknown method>
; gcrRegs -[rdi r9]
nop
- ;; size=113 bbWeight=1 PerfScore 23.00
+ ;; size=120 bbWeight=1 PerfScore 23.25
G_M25035_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
@@ -123,7 +122,7 @@ G_M25035_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=15 bbWeight=0 PerfScore 0.00
G_M25035_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edi, ecx
+ mov edi, eax
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
@@ -170,7 +169,7 @@ G_M25035_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=46 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 21, PerfScore 30.25, instruction count 77, allocated bytes for code 288 (MethodHash=45cf9e34) for method System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
+; Total bytes of code 297, prolog size 21, PerfScore 30.75, instruction count 79, allocated bytes for code 297 (MethodHash=45cf9e34) for method System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
; ============================================================
Cfi Info:
+9 (+3.12%) : 20708.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
@@ -10,34 +10,31 @@
; V00 this [V00,T05] ( 3, 3 ) ref -> rdi this class-hnd exact single-def <System.Text.UnicodeEncoding>
; V01 arg1 [V01,T03] ( 5, 5 ) ref -> rsi class-hnd exact single-def <System.String>
; V02 arg2 [V02,T01] ( 6, 5 ) int -> rdx single-def
-; V03 arg3 [V03,T02] ( 6, 5 ) int -> rcx single-def
+; V03 arg3 [V03,T02] ( 6, 5 ) int -> rax single-def
; V04 arg4 [V04,T04] ( 5, 5 ) ref -> r8 class-hnd single-def <ubyte[]>
; V05 arg5 [V05,T00] ( 6, 6 ) int -> r9 single-def
-; V06 loc0 [V06,T13] ( 2, 2 ) int -> rax
+; V06 loc0 [V06,T11] ( 2, 2 ) int -> r10
;* V07 loc1 [V07 ] ( 0, 0 ) long -> zero-ref
; V08 loc2 [V08 ] ( 2, 2 ) byref -> [rbp-0x10] must-init pinned single-def
;* V09 loc3 [V09 ] ( 0, 0 ) long -> zero-ref
; V10 loc4 [V10 ] ( 1, 1 ) byref -> [rbp-0x18] must-init pinned single-def
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V12 tmp1 [V12,T16] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
-; V13 tmp2 [V13,T14] ( 2, 2 ) long -> rsi
+; V12 tmp1 [V12,T13] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V13 tmp2 [V13,T12] ( 2, 2 ) long -> rsi
;* V14 tmp3 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V15 tmp4 [V15,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
+; V15 tmp4 [V15,T14] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.ArgumentOutOfRangeException>
;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V17 tmp6 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V18 tmp7 [V18 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V19 tmp8 [V19 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
-; V20 tmp9 [V20,T11] ( 3, 3 ) byref -> r8 "field V16._reference (fldOffset=0x0)" P-INDEP
+; V20 tmp9 [V20,T09] ( 3, 3 ) byref -> r8 "field V16._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp10 [V21 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V22 tmp11 [V22 ] ( 0, 0 ) byref -> zero-ref single-def "field V17._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp12 [V23 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
; V24 tmp13 [V24,T06] ( 2, 4 ) long -> rsi "Cast away GC"
; V25 tmp14 [V25,T07] ( 2, 4 ) long -> r8 "Cast away GC"
-;* V26 tmp15 [V26,T15] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V27 tmp16 [V27,T08] ( 2, 4 ) long -> rsi "argument with side effect"
-; V28 tmp17 [V28,T09] ( 2, 4 ) int -> rdx "argument with side effect"
-; V29 tmp18 [V29,T10] ( 2, 4 ) long -> rcx "argument with side effect"
-; V30 cse0 [V30,T12] ( 3, 3 ) int -> rax "CSE - moderate"
+; V26 tmp15 [V26,T08] ( 2, 4 ) long -> rcx "argument with side effect"
+; V27 cse0 [V27,T10] ( 3, 3 ) int -> rcx "CSE - moderate"
;
; Lcl frame size = 24
@@ -49,27 +46,29 @@ G_M25035_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xor eax, eax
mov qword ptr [rbp-0x10], rax
mov qword ptr [rbp-0x18], rax
- ;; size=21 bbWeight=1 PerfScore 5.00
+ mov eax, ecx
+ ;; size=23 bbWeight=1 PerfScore 5.25
G_M25035_IG02: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi rdi r8]
test rsi, rsi
je SHORT G_M25035_IG04
test r8, r8
- je SHORT G_M25035_IG05
+ je G_M25035_IG05
test edx, edx
jl G_M25035_IG06
- test ecx, ecx
+ test eax, eax
jl G_M25035_IG07
- mov eax, dword ptr [rsi+0x08]
- sub eax, edx
- cmp eax, ecx
+ mov ecx, dword ptr [rsi+0x08]
+ sub ecx, edx
+ cmp ecx, eax
jl G_M25035_IG08
test r9d, r9d
jl G_M25035_IG09
- mov eax, dword ptr [r8+0x08]
- cmp eax, r9d
+ mov ecx, dword ptr [r8+0x08]
+ cmp ecx, r9d
jl G_M25035_IG09
- sub eax, r9d
+ sub ecx, r9d
+ mov r10d, ecx
add rsi, 12
; gcrRegs -[rsi]
; byrRegs +[rsi]
@@ -79,13 +78,13 @@ G_M25035_IG02: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0000
; gcrRegs -[r8]
; byrRegs +[r8]
mov bword ptr [rbp-0x18], r8
+ movsxd rcx, r9d
+ add rcx, r8
movsxd rdx, edx
lea rsi, [rsi+2*rdx]
; byrRegs -[rsi]
- mov edx, ecx
- movsxd rcx, r9d
- add rcx, r8
- mov r8d, eax
+ mov edx, eax
+ mov r8d, r10d
; byrRegs -[r8]
xor r9, r9
; gcrRegs +[r9]
@@ -93,7 +92,7 @@ G_M25035_IG02: ; bbWeight=1, gcrefRegs=01C0 {rsi rdi r8}, byrefRegs=0000
call <unknown method>
; gcrRegs -[rdi r9]
nop
- ;; size=113 bbWeight=1 PerfScore 23.00
+ ;; size=120 bbWeight=1 PerfScore 23.25
G_M25035_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 24
pop rbx
@@ -123,7 +122,7 @@ G_M25035_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=15 bbWeight=0 PerfScore 0.00
G_M25035_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edi, ecx
+ mov edi, eax
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
@@ -170,7 +169,7 @@ G_M25035_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=46 bbWeight=0 PerfScore 0.00
-; Total bytes of code 288, prolog size 21, PerfScore 30.25, instruction count 77, allocated bytes for code 288 (MethodHash=45cf9e34) for method System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
+; Total bytes of code 297, prolog size 21, PerfScore 30.75, instruction count 79, allocated bytes for code 297 (MethodHash=45cf9e34) for method System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
; ============================================================
Cfi Info:
+26 (+15.76%) : 9130.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
@@ -7,9 +7,9 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 2.50) ref -> [rbp-0x30] this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
-; V01 arg1 [V01,T01] ( 4, 3 ) ref -> [rbp-0x38] class-hnd exact single-def <System.String>
-; V02 arg2 [V02,T02] ( 3, 2.50) ubyte -> r14 single-def
+; V00 this [V00,T01] ( 4, 2.50) ref -> [rbp-0x30] this class-hnd single-def <System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]>
+; V01 arg1 [V01,T00] ( 4, 3 ) ref -> [rbp-0x38] class-hnd exact single-def <System.String>
+; V02 arg2 [V02,T02] ( 4, 2.50) ubyte -> r14 single-def
; V03 loc0 [V03,T05] ( 3, 2.50) long -> rax
;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref <Interop+ErrorInfo>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -17,10 +17,9 @@
; V07 tmp2 [V07,T04] ( 3, 3 ) int -> r13 "Inlining Arg"
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref "field V04._error (fldOffset=0x0)" P-INDEP
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._rawErrno (fldOffset=0x4)" P-INDEP
-; V10 tmp5 [V10,T06] ( 2, 1 ) int -> rbx "field V06._error (fldOffset=0x0)" P-INDEP
-; V11 tmp6 [V11,T07] ( 2, 1 ) int -> r13 "field V06._rawErrno (fldOffset=0x4)" P-INDEP
-; V12 tmp7 [V12,T03] ( 4, 3 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
-;* V13 tmp8 [V13,T08] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V10 tmp5 [V10,T06] ( 3, 1 ) int -> rbx "field V06._error (fldOffset=0x0)" P-INDEP
+; V11 tmp6 [V11,T07] ( 3, 1 ) int -> r13 "field V06._rawErrno (fldOffset=0x4)" P-INDEP
+; V12 tmp7 [V12,T03] ( 7, 3 ) struct ( 8) [rbp-0x28] do-not-enreg[SF] "by-value struct argument" <Interop+ErrorInfo>
;
; Lcl frame size = 32
@@ -34,17 +33,17 @@ G_M13357_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
lea rbp, [rsp+0x40]
mov gword ptr [rbp-0x30], rdi
; GC ptr vars +{V00}
- mov r15, rsi
- ; gcrRegs +[r15]
+ mov rbx, rsi
+ ; gcrRegs +[rbx]
mov r14d, edx
;; size=27 bbWeight=1 PerfScore 7.25
-G_M13357_IG02: ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref, isz
- mov gword ptr [rbp-0x38], r15
+G_M13357_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov gword ptr [rbp-0x38], rbx
; GC ptr vars +{V01}
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call <unknown method>
- ; gcrRegs -[rdi r15]
+ ; gcrRegs -[rbx rdi]
test rax, rax
jne SHORT G_M13357_IG07
;; size=17 bbWeight=1 PerfScore 3.50
@@ -60,21 +59,21 @@ G_M13357_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov ebx, eax
cmp dword ptr [(reloc)], 0
jne SHORT G_M13357_IG08
- ;; size=16 bbWeight=0.50 PerfScore 2.62
-G_M13357_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x28], ebx
mov dword ptr [rbp-0x24], r13d
- mov rdi, gword ptr [rbp-0x30]
- ; gcrRegs +[rdi]
mov rsi, qword ptr [rbp-0x28]
movzx rdx, r14b
- ; GC ptr vars -{V00}
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ ; GC ptr vars -{V00 V01}
call System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:InternalContinueOnError(Interop+ErrorInfo,ubyte):ubyte:this
; gcrRegs -[rdi]
test eax, eax
je SHORT G_M13357_IG09
+ ;; size=44 bbWeight=0.50 PerfScore 5.88
+G_M13357_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
xor eax, eax
- ;; size=30 bbWeight=0.50 PerfScore 3.38
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M13357_IG06: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 32
pop rbx
@@ -85,7 +84,6 @@ G_M13357_IG06: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=13 bbWeight=0.50 PerfScore 1.88
G_M13357_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, epilog, nogc
- ; GC ptr vars -{V01}
add rsp, 32
pop rbx
pop r13
@@ -97,15 +95,23 @@ G_M13357_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
G_M13357_IG08: ; bbWeight=0, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00 V01}
call CORINFO_HELP_POLL_GC
- jmp SHORT G_M13357_IG05
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M13357_IG09: ; bbWeight=0, gcVars=0000000000000002 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; GC ptr vars -{V00}
+ mov dword ptr [rbp-0x28], ebx
+ mov dword ptr [rbp-0x24], r13d
+ mov rsi, qword ptr [rbp-0x28]
+ movzx rdx, r14b
+ mov rdi, gword ptr [rbp-0x30]
+ ; gcrRegs +[rdi]
+ ; GC ptr vars -{V00 V01}
+ call System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:InternalContinueOnError(Interop+ErrorInfo,ubyte):ubyte:this
+ ; gcrRegs -[rdi]
+ test eax, eax
+ jne SHORT G_M13357_IG05
+ ;; size=33 bbWeight=0 PerfScore 0.00
+G_M13357_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, qword ptr [rbp-0x28]
mov rsi, gword ptr [rbp-0x38]
; gcrRegs +[rsi]
mov edx, 1
- ; GC ptr vars -{V01}
call <unknown method>
; gcrRegs -[rsi] +[rax]
mov rdi, rax
@@ -115,7 +121,7 @@ G_M13357_IG09: ; bbWeight=0, gcVars=0000000000000002 {V01}, gcrefRegs=000
int3
;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 165, prolog size 17, PerfScore 22.12, instruction count 54, allocated bytes for code 165 (MethodHash=29b6cbd2) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
+; Total bytes of code 191, prolog size 17, PerfScore 22.12, instruction count 61, allocated bytes for code 191 (MethodHash=29b6cbd2) for method System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
; ============================================================
Cfi Info:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.linux.x64.checked.mch
657
222
62
373
-4,396
+484
benchmarks.run_pgo.linux.x64.checked.mch
4,024
1,310
1,555
1,159
-39,845
+4,860
benchmarks.run_tiered.linux.x64.checked.mch
214
115
21
78
-2,265
+158
coreclr_tests.run.linux.x64.checked.mch
11,440
9,917
265
1,258
-380,399
+1,803
libraries.crossgen2.linux.x64.checked.mch
2,181
782
145
1,254
-21,562
+664
libraries.pmi.linux.x64.checked.mch
4,806
1,622
535
2,649
-29,725
+4,334
libraries_tests.run.linux.x64.Release.mch
24,579
17,465
1,531
5,583
-498,576
+9,869
librariestestsnotieredcompilation.run.linux.x64.Release.mch
15,645
2,164
504
12,977
-45,377
+4,111
realworld.run.linux.x64.checked.mch
894
330
137
427
-7,938
+1,937
smoke_tests.nativeaot.linux.x64.checked.mch
227
61
26
140
-472
+131
64,667
33,988
4,781
25,898
-1,030,555
+28,351
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.linux.x64.checked.mch
34,995
3,164
31,831
4 (0.01%)
4 (0.01%)
benchmarks.run_pgo.linux.x64.checked.mch
155,969
58,399
97,570
151 (0.10%)
151 (0.10%)
benchmarks.run_tiered.linux.x64.checked.mch
58,888
44,312
14,576
2 (0.00%)
2 (0.00%)
coreclr_tests.run.linux.x64.checked.mch
694,084
429,241
264,843
329 (0.05%)
329 (0.05%)
libraries.crossgen2.linux.x64.checked.mch
233,626
15
233,611
0 (0.00%)
0 (0.00%)
libraries.pmi.linux.x64.checked.mch
295,414
6
295,408
8 (0.00%)
8 (0.00%)
libraries_tests.run.linux.x64.Release.mch
756,819
495,271
261,548
3,121 (0.41%)
3,124 (0.41%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
304,605
21,873
282,732
10 (0.00%)
10 (0.00%)
realworld.run.linux.x64.checked.mch
33,163
39
33,124
3 (0.01%)
4 (0.01%)
smoke_tests.nativeaot.linux.x64.checked.mch
27,440
9
27,431
0 (0.00%)
0 (0.00%)
2,595,003
1,052,329
1,542,674
3,628 (0.14%)
3,632 (0.14%)
jit-analyze output
benchmarks.run.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13735124 (overridden on cmd)
Total bytes of diff: 13731212 (overridden on cmd)
Total bytes of delta: -3912 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
63 : 7518.dasm (0.53 % of base)
55 : 19629.dasm (3.46 % of base)
52 : 1380.dasm (6.27 % of base)
39 : 24571.dasm (0.35 % of base)
25 : 24559.dasm (0.46 % of base)
18 : 20791.dasm (0.89 % of base)
13 : 20457.dasm (0.54 % of base)
12 : 20481.dasm (0.53 % of base)
12 : 20388.dasm (0.50 % of base)
12 : 24584.dasm (0.36 % of base)
10 : 17486.dasm (0.44 % of base)
10 : 7769.dasm (0.76 % of base)
9 : 33492.dasm (0.78 % of base)
9 : 12873.dasm (1.21 % of base)
8 : 915.dasm (1.44 % of base)
7 : 19618.dasm (0.74 % of base)
7 : 20835.dasm (0.39 % of base)
6 : 12070.dasm (2.31 % of base)
6 : 16903.dasm (2.31 % of base)
6 : 5090.dasm (3.33 % of base)
Top file improvements (bytes):
-364 : 9626.dasm (-10.02 % of base)
-193 : 11284.dasm (-9.91 % of base)
-114 : 15049.dasm (-6.14 % of base)
-107 : 5328.dasm (-5.41 % of base)
-92 : 6786.dasm (-3.36 % of base)
-87 : 20751.dasm (-14.01 % of base)
-84 : 6720.dasm (-7.09 % of base)
-80 : 22360.dasm (-1.97 % of base)
-79 : 2573.dasm (-12.87 % of base)
-78 : 28306.dasm (-13.22 % of base)
-73 : 5371.dasm (-11.30 % of base)
-67 : 8533.dasm (-2.37 % of base)
-64 : 1046.dasm (-9.68 % of base)
-62 : 6703.dasm (-3.05 % of base)
-61 : 6159.dasm (-8.69 % of base)
-56 : 21271.dasm (-0.42 % of base)
-53 : 21459.dasm (-1.39 % of base)
-50 : 8745.dasm (-0.59 % of base)
-49 : 22357.dasm (-9.02 % of base)
-49 : 5367.dasm (-2.51 % of base)
71 total files with Code Size differences (41 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
63 (0.53 % of base) : 7518.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
55 (3.46 % of base) : 19629.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
52 (6.27 % of base) : 1380.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
39 (0.35 % of base) : 24571.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
25 (0.46 % of base) : 24559.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
18 (0.89 % of base) : 20791.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (FullOpts)
13 (0.54 % of base) : 20457.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ToDeclarationModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.DiagnosticBag,ubyte):uint (FullOpts)
12 (0.53 % of base) : 20481.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:CreateRootSingleNamespaceDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration],ubyte):Microsoft.CodeAnalysis.CSharp.RootSingleNamespaceDeclaration:this (FullOpts)
12 (0.50 % of base) : 20388.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitNamespaceChildren(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration]:this (FullOpts)
12 (0.36 % of base) : 24584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,int,int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
10 (0.44 % of base) : 17486.dasm - MessagePack.Formatters.ListFormatter`1[int]:Serialize(byref,int,System.Collections.Generic.List`1[int],MessagePack.IFormatterResolver):int:this (FullOpts)
10 (0.76 % of base) : 7769.dasm - System.Net.Http.HttpConnection:ParseStatusLineCore(System.Span`1[ubyte],System.Net.Http.HttpResponseMessage) (FullOpts)
9 (0.78 % of base) : 33492.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
9 (1.21 % of base) : 12873.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
8 (1.44 % of base) : 915.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetConverterForType(System.Type,System.Text.Json.JsonSerializerOptions,ubyte):System.Text.Json.Serialization.JsonConverter (FullOpts)
7 (0.39 % of base) : 20835.dasm - Microsoft.CodeAnalysis.PEModule:EnsureForwardTypeToAssemblyMap():this (FullOpts)
7 (0.74 % of base) : 19618.dasm - V8.Crypto.BigInteger:squareTo(V8.Crypto.BigInteger):this (FullOpts)
6 (2.31 % of base) : 12070.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListActiveOrUpcomingEventSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.ActiveOrUpcomingEvent]):this (FullOpts)
6 (2.31 % of base) : 16901.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItem]):this (FullOpts)
6 (2.31 % of base) : 16903.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemTaskSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]):this (FullOpts)
Top method improvements (bytes):
-364 (-10.02 % of base) : 9626.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-193 (-9.91 % of base) : 11284.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-114 (-6.14 % of base) : 15049.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-107 (-5.41 % of base) : 5328.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:.ctor(System.Collections.Generic.ICollection`1[Microsoft.Extensions.DependencyInjection.ServiceDescriptor],Microsoft.Extensions.DependencyInjection.ServiceProviderOptions):this (FullOpts)
-92 (-3.36 % of base) : 6786.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-87 (-14.01 % of base) : 20751.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:LookupDeclaredTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-84 (-7.09 % of base) : 6720.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (FullOpts)
-80 (-1.97 % of base) : 22360.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager:AssignTemplatesNamesAndCompile(Microsoft.CodeAnalysis.CSharp.MethodCompiler,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-79 (-12.87 % of base) : 2573.dasm - System.Formats.Asn1.AsnDecoder:TryReadOctetString(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-78 (-13.22 % of base) : 28306.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-73 (-11.30 % of base) : 5371.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:TryCreateOpenGeneric(Microsoft.Extensions.DependencyInjection.ServiceDescriptor,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain,int,ubyte):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this (FullOpts)
-67 (-2.37 % of base) : 8533.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
-64 (-9.68 % of base) : 1046.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon]:GetOrAdd[System.__Canon](System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (FullOpts)
-62 (-3.05 % of base) : 6703.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-61 (-8.69 % of base) : 6159.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder:BuildType(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder+GeneratedMethod:this (FullOpts)
-56 (-0.42 % of base) : 21271.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-53 (-1.39 % of base) : 21459.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
-50 (-0.59 % of base) : 8745.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-49 (-9.02 % of base) : 22357.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-49 (-2.51 % of base) : 5367.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:TryCreateEnumerable(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite:this (FullOpts)
Top method regressions (percentages):
52 (6.27 % of base) : 1380.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
55 (3.46 % of base) : 19629.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
6 (3.33 % of base) : 5090.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
2 (2.90 % of base) : 29395.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:set_Item(int,int):this (FullOpts)
6 (2.31 % of base) : 12070.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListActiveOrUpcomingEventSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.ActiveOrUpcomingEvent]):this (FullOpts)
6 (2.31 % of base) : 16901.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItem]):this (FullOpts)
6 (2.31 % of base) : 16903.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ListMyEventsListerItemTaskSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Generic.List`1[MicroBenchmarks.Serializers.MyEventsListerItemTask]):this (FullOpts)
4 (1.96 % of base) : 20322.dasm - Microsoft.CodeAnalysis.Emit.EmitOptions:.ctor(Microsoft.CodeAnalysis.Emit.EmitOptions):this (FullOpts)
2 (1.67 % of base) : 19616.dasm - V8.Crypto.BigInteger:copyTo(V8.Crypto.BigInteger):this (FullOpts)
8 (1.44 % of base) : 915.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:GetConverterForType(System.Type,System.Text.Json.JsonSerializerOptions,ubyte):System.Text.Json.Serialization.JsonConverter (FullOpts)
9 (1.21 % of base) : 12873.dasm - System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:LeafToRootRefill(System.Collections.Generic.IEnumerable`1[System.__Canon]):System.Collections.Immutable.ImmutableSortedSet`1[System.__Canon]:this (FullOpts)
4 (1.14 % of base) : 2651.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
18 (0.89 % of base) : 20791.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (FullOpts)
2 (0.89 % of base) : 17096.dasm - System.Text.Json.JsonSerializerOptions:TryGetPolymorphicTypeInfoForRootType(System.Object,byref):ubyte:this (FullOpts)
9 (0.78 % of base) : 33492.dasm - BenchmarksGame.ReverseComplement_1:Bench(System.IO.Stream,System.IO.Stream) (FullOpts)
10 (0.76 % of base) : 7769.dasm - System.Net.Http.HttpConnection:ParseStatusLineCore(System.Span`1[ubyte],System.Net.Http.HttpResponseMessage) (FullOpts)
7 (0.74 % of base) : 19618.dasm - V8.Crypto.BigInteger:squareTo(V8.Crypto.BigInteger):this (FullOpts)
4 (0.73 % of base) : 1132.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:CreatePropertyInfo(System.Text.Json.Serialization.Metadata.JsonTypeInfo,System.Type,System.Reflection.MemberInfo,System.Text.Json.JsonSerializerOptions,ubyte,ubyte):System.Text.Json.Serialization.Metadata.JsonPropertyInfo (FullOpts)
3 (0.70 % of base) : 7091.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
4 (0.70 % of base) : 10994.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
Top method improvements (percentages):
-31 (-32.98 % of base) : 30360.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
-34 (-30.63 % of base) : 29424.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
-25 (-19.38 % of base) : 2864.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-21 (-17.50 % of base) : 2332.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-20 (-16.00 % of base) : 19868.dasm - System.Text.Json.Serialization.Tests.ReadJson`1[MicroBenchmarks.Serializers.SimpleStructWithProperties]:DeserializeFromUtf8Bytes():MicroBenchmarks.Serializers.SimpleStructWithProperties:this (FullOpts)
-16 (-15.84 % of base) : 33615.dasm - System.Text.Json.Serialization.Tests.ReadJson`1[int]:DeserializeFromUtf8Bytes():int:this (FullOpts)
-21 (-14.89 % of base) : 2312.dasm - System.Formats.Asn1.AsnDecoder:TryReadInt32(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-20 (-14.81 % of base) : 1268.dasm - System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:MoveNext():ubyte:this (FullOpts)
-20 (-14.81 % of base) : 1093.dasm - System.Collections.Generic.List`1+Enumerator[System.Text.Json.Serialization.Metadata.JsonDerivedType]:MoveNext():ubyte:this (FullOpts)
-87 (-14.01 % of base) : 20751.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:LookupDeclaredTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-29 (-13.94 % of base) : 6174.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:ReplaceServiceAccessor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,System.Func`2[Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope,System.Object]):this (FullOpts)
-78 (-13.22 % of base) : 28306.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-79 (-12.87 % of base) : 2573.dasm - System.Formats.Asn1.AsnDecoder:TryReadOctetString(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-16 (-12.50 % of base) : 11420.dasm - System.Diagnostics.ActivityTagsCollection+Enumerator:MoveNext():ubyte:this (FullOpts)
-21 (-12.14 % of base) : 2319.dasm - System.Formats.Asn1.AsnDecoder:ReadObjectIdentifier(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.String (FullOpts)
-28 (-11.91 % of base) : 3655.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-37 (-11.90 % of base) : 5548.dasm - System.Text.Json.Node.Tests.Perf_ParseThenWrite:ParseThenWrite():this (FullOpts)
-10 (-11.63 % of base) : 6157.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-28 (-11.57 % of base) : 27231.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteValidator:ValidateCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (FullOpts)
-30 (-11.36 % of base) : 2518.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveBitString(System.ReadOnlySpan`1[ubyte],int,byref,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
benchmarks.run_pgo.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 68635056 (overridden on cmd)
Total bytes of diff: 68600071 (overridden on cmd)
Total bytes of delta: -34985 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
15 : 92532.dasm (0.32 % of base)
13 : 90805.dasm (2.49 % of base)
11 : 58148.dasm (0.44 % of base)
11 : 83371.dasm (0.52 % of base)
11 : 85071.dasm (0.32 % of base)
11 : 86023.dasm (0.69 % of base)
11 : 89008.dasm (0.69 % of base)
11 : 89636.dasm (0.46 % of base)
11 : 14030.dasm (0.61 % of base)
11 : 14376.dasm (0.10 % of base)
11 : 17932.dasm (0.44 % of base)
11 : 18622.dasm (0.77 % of base)
11 : 2914.dasm (0.61 % of base)
11 : 89680.dasm (0.32 % of base)
11 : 90814.dasm (0.25 % of base)
11 : 90885.dasm (0.69 % of base)
11 : 91065.dasm (0.28 % of base)
11 : 97766.dasm (0.98 % of base)
11 : 84584.dasm (0.97 % of base)
11 : 86967.dasm (0.28 % of base)
Top file improvements (bytes):
-504 : 28300.dasm (-2.52 % of base)
-385 : 84323.dasm (-6.97 % of base)
-324 : 37004.dasm (-4.89 % of base)
-301 : 34586.dasm (-4.51 % of base)
-295 : 20142.dasm (-6.76 % of base)
-295 : 32863.dasm (-6.76 % of base)
-288 : 83962.dasm (-2.83 % of base)
-280 : 32883.dasm (-7.32 % of base)
-258 : 90006.dasm (-4.72 % of base)
-258 : 86373.dasm (-4.72 % of base)
-252 : 36428.dasm (-8.85 % of base)
-252 : 152951.dasm (-8.42 % of base)
-252 : 32769.dasm (-10.68 % of base)
-239 : 152849.dasm (-9.77 % of base)
-235 : 20124.dasm (-8.03 % of base)
-209 : 113029.dasm (-5.20 % of base)
-207 : 42178.dasm (-5.86 % of base)
-207 : 95190.dasm (-5.86 % of base)
-202 : 88460.dasm (-3.77 % of base)
-191 : 37141.dasm (-0.72 % of base)
85 total files with Code Size differences (52 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
15 (0.32 % of base) : 92532.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (Tier1)
13 (2.49 % of base) : 90805.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Instrumented Tier0)
11 (0.28 % of base) : 91065.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodSemanticsTableRows():this (Instrumented Tier0)
11 (0.28 % of base) : 86967.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodSemanticsTableRows():this (Instrumented Tier0)
11 (0.46 % of base) : 89636.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindStatement(Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Instrumented Tier0)
11 (0.32 % of base) : 85071.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindToNaturalType(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
11 (0.32 % of base) : 89680.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindToNaturalType(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
11 (0.69 % of base) : 86023.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteDocumentationCommentXml(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.String,System.IO.Stream,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (Instrumented Tier0)
11 (0.69 % of base) : 90885.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteDocumentationCommentXml(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.String,System.IO.Stream,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (Instrumented Tier0)
11 (0.25 % of base) : 90814.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:InterceptCallAndAdjustArguments(byref,byref,byref,byref,ubyte,Microsoft.CodeAnalysis.Location):this (Instrumented Tier0)
11 (0.69 % of base) : 89008.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:EnsureSignatureIsLoaded():this (Instrumented Tier0)
11 (0.52 % of base) : 83371.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:IsTupleTypeOfCardinality(byref):ubyte:this (Instrumented Tier0)
11 (0.52 % of base) : 87632.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:IsTupleTypeOfCardinality(byref):ubyte:this (Instrumented Tier0)
11 (0.97 % of base) : 84584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckTypeParameterNameConflicts(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
11 (0.98 % of base) : 97766.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (Instrumented Tier0)
11 (0.44 % of base) : 58148.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:BindDictionary(System.Object,System.Type,Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Configuration.BinderOptions) (Instrumented Tier0)
11 (0.77 % of base) : 18622.dasm - Sigil.Emit`1[System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[System.__Canon]:this (Instrumented Tier0)
11 (0.44 % of base) : 17932.dasm - Sigil.NonGeneric.Emit:ValidateDelegateType(System.Type):this (Instrumented Tier0)
11 (0.10 % of base) : 14376.dasm - System.Net.Http.HttpConnection+<SendAsync>d__57:MoveNext():this (Instrumented Tier0)
11 (0.61 % of base) : 14030.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Instrumented Tier0)
Top method improvements (bytes):
-504 (-2.52 % of base) : 28300.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Instrumented Tier0)
-385 (-6.97 % of base) : 84323.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-324 (-4.89 % of base) : 37004.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-301 (-4.51 % of base) : 34586.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Instrumented Tier0)
-295 (-6.76 % of base) : 20142.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-295 (-6.76 % of base) : 32863.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-288 (-2.83 % of base) : 83962.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-280 (-7.32 % of base) : 32883.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Instrumented Tier0)
-258 (-4.72 % of base) : 90006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
-258 (-4.72 % of base) : 86373.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
-252 (-8.42 % of base) : 152951.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeValue(Newtonsoft.Json.JsonWriter,System.Object,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty):this (Instrumented Tier0)
-252 (-10.68 % of base) : 32769.dasm - System.Linq.Expressions.Expression:Call(System.Linq.Expressions.Expression,System.Reflection.MethodInfo,System.Collections.Generic.IEnumerable`1[System.Linq.Expressions.Expression]):System.Linq.Expressions.MethodCallExpression (Instrumented Tier0)
-252 (-8.85 % of base) : 36428.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:RequiresMemberAccessForRead(System.Security.SecurityException):ubyte:this (Instrumented Tier0)
-239 (-9.77 % of base) : 152849.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:IsValidCallback(System.Reflection.MethodInfo,System.Reflection.ParameterInfo[],System.Type,System.Reflection.MethodInfo,byref):ubyte (Instrumented Tier0)
-235 (-8.03 % of base) : 20124.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Instrumented Tier0)
-209 (-5.20 % of base) : 113029.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (Instrumented Tier0)
-207 (-5.86 % of base) : 42178.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFrom(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (Instrumented Tier0)
-207 (-5.86 % of base) : 95190.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFrom(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (Instrumented Tier0)
-202 (-3.77 % of base) : 88460.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-191 (-0.72 % of base) : 37141.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,ubyte,ubyte,System.Xml.Serialization.RecursionLimiter):this (Instrumented Tier0)
Top method regressions (percentages):
8 (4.28 % of base) : 82807.dasm - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (Instrumented Tier0)
13 (2.49 % of base) : 90805.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbol):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Instrumented Tier0)
7 (2.21 % of base) : 1053.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
8 (1.53 % of base) : 119984.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
4 (1.48 % of base) : 18920.dasm - System.Linq.Enumerable+SelectArrayIterator`2[short,System.Collections.NotKnownComparable]:Fill(System.ReadOnlySpan`1[short],System.Span`1[System.Collections.NotKnownComparable],System.Func`2[short,System.Collections.NotKnownComparable]) (Instrumented Tier0)
6 (1.41 % of base) : 47395.dasm - System.Linq.Enumerable+WhereSelectArrayIterator`2[int,int]:MoveNext():ubyte:this (Instrumented Tier0)
5 (1.30 % of base) : 16479.dasm - System.Reflection.Emit.DynamicResolver:Finalize():this (Instrumented Tier0)
6 (1.29 % of base) : 89887.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:GetParameterCount(Microsoft.CodeAnalysis.CSharp.Symbol):int (Instrumented Tier0)
3 (1.17 % of base) : 93219.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode:GetLeadingTrivia():Microsoft.CodeAnalysis.SyntaxTriviaList:this (Tier1)
4 (1.02 % of base) : 26098.dasm - System.Runtime.Serialization.CodeGenerator:InitILGeneration(System.Type[]):this (Instrumented Tier0)
11 (0.98 % of base) : 97766.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (Instrumented Tier0)
11 (0.97 % of base) : 84584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckTypeParameterNameConflicts(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
11 (0.77 % of base) : 18622.dasm - Sigil.Emit`1[System.__Canon]:LoadLocal(Sigil.Local):Sigil.Emit`1[System.__Canon]:this (Instrumented Tier0)
2 (0.70 % of base) : 98155.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetGlobalAnnotationState():ubyte:this (Instrumented Tier0)
11 (0.69 % of base) : 86023.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteDocumentationCommentXml(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.String,System.IO.Stream,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (Instrumented Tier0)
11 (0.69 % of base) : 90885.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteDocumentationCommentXml(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,System.String,System.IO.Stream,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (Instrumented Tier0)
11 (0.69 % of base) : 89008.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:EnsureSignatureIsLoaded():this (Instrumented Tier0)
5 (0.64 % of base) : 45618.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindEndPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+InitialStateFindOptimizationsHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],int,int,byref,byref,byref,byref,byref,byref):ubyte:this (Tier1-OSR)
4 (0.63 % of base) : 125606.dasm - BenchmarksGame.KNucleotide_1:Bench(System.IO.Stream,BenchmarksGame.NucleotideHelpers,ubyte):ubyte (Tier1-OSR)
11 (0.61 % of base) : 14030.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Instrumented Tier0)
Top method improvements (percentages):
-52 (-29.21 % of base) : 107103.dasm - System.Numerics.Tests.Perf_Matrix4x4:TransformBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-31 (-27.93 % of base) : 19077.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
-31 (-27.93 % of base) : 19031.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-35 (-20.35 % of base) : 90772.dasm - Microsoft.CodeAnalysis.CSharp.AccessCheck:IsSymbolAccessible(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Instrumented Tier0)
-14 (-17.95 % of base) : 69988.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateFromQuaternionBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.95 % of base) : 134891.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateScaleFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.95 % of base) : 41045.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateTranslationFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.07 % of base) : 124761.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateRotationXWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.07 % of base) : 26529.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateRotationYWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.07 % of base) : 144644.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateScaleFromScalarWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-16.28 % of base) : 68838.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateFromAxisAngleBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-24 (-15.48 % of base) : 41359.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAdd(System.Text.RegularExpressions.RegexCache+Key,System.__Canon):ubyte:this (Tier1)
-138 (-15.33 % of base) : 120637.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Instrumented Tier0)
-79 (-15.08 % of base) : 83760.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]:GetOrAdd(System.ValueTuple`2[System.__Canon,int],System.Func`2[System.ValueTuple`2[System.__Canon,int],System.__Canon]):System.__Canon:this (Instrumented Tier0)
-104 (-14.99 % of base) : 78805.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon]:GetOrAdd[System.__Canon](System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon,System.__Canon],System.__Canon):System.__Canon:this (Instrumented Tier0)
-26 (-14.86 % of base) : 46078.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-26 (-14.86 % of base) : 22043.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-26 (-14.86 % of base) : 93749.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-26 (-14.86 % of base) : 54541.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
-26 (-14.86 % of base) : 121765.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (Tier1)
benchmarks.run_tiered.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 17373152 (overridden on cmd)
Total bytes of diff: 17371045 (overridden on cmd)
Total bytes of delta: -2107 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
52 : 4291.dasm (6.21 % of base)
25 : 50434.dasm (0.47 % of base)
18 : 51035.dasm (0.89 % of base)
13 : 50977.dasm (0.56 % of base)
7 : 913.dasm (2.21 % of base)
6 : 20636.dasm (3.33 % of base)
6 : 51171.dasm (0.10 % of base)
4 : 24649.dasm (0.70 % of base)
4 : 32383.dasm (1.14 % of base)
3 : 53657.dasm (0.65 % of base)
3 : 32933.dasm (0.54 % of base)
3 : 50377.dasm (0.06 % of base)
3 : 52323.dasm (0.32 % of base)
3 : 50804.dasm (0.22 % of base)
2 : 5478.dasm (0.52 % of base)
1 : 18856.dasm (0.10 % of base)
1 : 47926.dasm (0.24 % of base)
1 : 51174.dasm (0.03 % of base)
1 : 3998.dasm (0.29 % of base)
1 : 50421.dasm (0.03 % of base)
Top file improvements (bytes):
-138 : 53957.dasm (-15.86 % of base)
-87 : 47715.dasm (-14.01 % of base)
-84 : 15557.dasm (-7.06 % of base)
-81 : 48551.dasm (-16.07 % of base)
-79 : 32428.dasm (-12.87 % of base)
-72 : 30405.dasm (-9.84 % of base)
-62 : 15552.dasm (-3.04 % of base)
-55 : 48552.dasm (-11.55 % of base)
-52 : 52120.dasm (-29.21 % of base)
-50 : 21898.dasm (-0.59 % of base)
-49 : 48882.dasm (-9.02 % of base)
-47 : 17745.dasm (-10.88 % of base)
-43 : 21660.dasm (-4.46 % of base)
-43 : 14960.dasm (-4.36 % of base)
-40 : 21662.dasm (-3.00 % of base)
-40 : 14968.dasm (-3.28 % of base)
-36 : 6408.dasm (-1.72 % of base)
-36 : 15531.dasm (-1.72 % of base)
-31 : 6706.dasm (-27.93 % of base)
-31 : 53384.dasm (-12.11 % of base)
59 total files with Code Size differences (38 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
52 (6.21 % of base) : 4291.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
25 (0.47 % of base) : 50434.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
18 (0.89 % of base) : 51035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (Tier1)
13 (0.56 % of base) : 50977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ToDeclarationModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.DiagnosticBag,ubyte):uint (Tier1)
7 (2.21 % of base) : 913.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
6 (0.10 % of base) : 51171.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
6 (3.33 % of base) : 20636.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)
4 (0.70 % of base) : 24649.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
4 (1.14 % of base) : 32383.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
3 (0.06 % of base) : 50377.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
3 (0.22 % of base) : 50804.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:RemoveReturns():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+PendingBranch[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalFunctionState]]:this (Tier1)
3 (0.32 % of base) : 52323.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
3 (0.65 % of base) : 53657.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
3 (0.54 % of base) : 32933.dasm - System.TimeZoneInfo:GetUtcOffsetFromUtc(System.DateTime,System.TimeZoneInfo,byref,byref):System.TimeSpan (Tier1)
2 (0.52 % of base) : 5478.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Open(System.String,int,int,ubyte,byref,System.Func`4[Interop+ErrorInfo,int,System.String,System.Exception]):Microsoft.Win32.SafeHandles.SafeFileHandle (Tier1)
1 (0.03 % of base) : 50421.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeclarationStatementParts(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
1 (0.03 % of base) : 51174.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindToNaturalType(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
1 (0.18 % of base) : 51138.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportDiagnosticsIfObsoleteInternal(Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.CSharp.Symbol,uint):int (Tier1)
1 (0.24 % of base) : 47926.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ReportDuplicateModifiers(Microsoft.CodeAnalysis.SyntaxToken,uint,uint,byref,Microsoft.CodeAnalysis.DiagnosticBag) (Tier1)
1 (0.29 % of base) : 3998.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
Top method improvements (bytes):
-138 (-15.86 % of base) : 53957.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0)
-87 (-14.01 % of base) : 47715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:LookupDeclaredTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-84 (-7.06 % of base) : 15557.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (Tier1)
-81 (-16.07 % of base) : 48551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:CacheTopLevelMetadataType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-79 (-12.87 % of base) : 32428.dasm - System.Formats.Asn1.AsnDecoder:TryReadOctetString(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (Tier1)
-72 (-9.84 % of base) : 30405.dasm - AssignRect:Run():double:this (Tier0)
-62 (-3.04 % of base) : 15552.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (Tier1)
-55 (-11.55 % of base) : 48552.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.MetadataTypeName+Key,System.__Canon]:GetOrAdd(Microsoft.CodeAnalysis.MetadataTypeName+Key,System.__Canon):System.__Canon:this (Tier1)
-52 (-29.21 % of base) : 52120.dasm - System.Numerics.Tests.Perf_Matrix4x4:TransformBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-50 (-0.59 % of base) : 21898.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier1)
-49 (-9.02 % of base) : 48882.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (Tier1)
-47 (-10.88 % of base) : 17745.dasm - System.Formats.Asn1.AsnDecoder:ReadEncodedValue(System.ReadOnlySpan`1[ubyte],int,byref,byref,byref):System.Formats.Asn1.Asn1Tag (Tier1)
-43 (-4.46 % of base) : 21660.dasm - System.Text.Encoding:GetBytesWithFallback(ulong,int,ulong,int,int,int,System.Text.EncoderNLS):int:this (Tier0)
-43 (-4.36 % of base) : 14960.dasm - System.Text.Encoding:GetCharsWithFallback(ulong,int,ulong,int,int,int,System.Text.DecoderNLS):int:this (Tier0)
-40 (-3.00 % of base) : 21662.dasm - System.Text.Encoding:GetBytesWithFallback(System.ReadOnlySpan`1[ushort],int,System.Span`1[ubyte],int,System.Text.EncoderNLS,ubyte):int:this (Tier0)
-40 (-3.28 % of base) : 14968.dasm - System.Text.Encoding:GetCharsWithFallback(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ushort],int,System.Text.DecoderNLS,ubyte):int:this (Tier0)
-36 (-1.72 % of base) : 6408.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Trim():ubyte:this (Tier0)
-36 (-1.72 % of base) : 15531.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Tier1)
-31 (-12.11 % of base) : 53384.dasm - Benchstone.MDBenchF.MDInProd:InitMatrix(double[,]) (Tier0)
-31 (-27.93 % of base) : 6706.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
Top method regressions (percentages):
52 (6.21 % of base) : 4291.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
6 (3.33 % of base) : 20636.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (Tier1)
7 (2.21 % of base) : 913.dasm - System.Runtime.InteropServices.Marshalling.Utf8StringMarshaller+ManagedToUnmanagedIn:FromManaged(System.String,System.Span`1[ubyte]):this (Tier0)
4 (1.14 % of base) : 32383.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
18 (0.89 % of base) : 51035.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (Tier1)
4 (0.70 % of base) : 24649.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
3 (0.65 % of base) : 53657.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
13 (0.56 % of base) : 50977.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ToDeclarationModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.DiagnosticBag,ubyte):uint (Tier1)
3 (0.54 % of base) : 32933.dasm - System.TimeZoneInfo:GetUtcOffsetFromUtc(System.DateTime,System.TimeZoneInfo,byref,byref):System.TimeSpan (Tier1)
2 (0.52 % of base) : 5478.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Open(System.String,int,int,ubyte,byref,System.Func`4[Interop+ErrorInfo,int,System.String,System.Exception]):Microsoft.Win32.SafeHandles.SafeFileHandle (Tier1)
25 (0.47 % of base) : 50434.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
3 (0.32 % of base) : 52323.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
1 (0.29 % of base) : 3998.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:GetOrAdd(System.__Canon,System.Func`2[System.__Canon,System.__Canon]):System.__Canon:this (Tier1)
1 (0.24 % of base) : 47926.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ReportDuplicateModifiers(Microsoft.CodeAnalysis.SyntaxToken,uint,uint,byref,Microsoft.CodeAnalysis.DiagnosticBag) (Tier1)
3 (0.22 % of base) : 50804.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:RemoveReturns():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+PendingBranch[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalFunctionState]]:this (Tier1)
1 (0.18 % of base) : 51138.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportDiagnosticsIfObsoleteInternal(Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.CSharp.Symbol,uint):int (Tier1)
1 (0.10 % of base) : 18856.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
6 (0.10 % of base) : 51171.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier1)
3 (0.06 % of base) : 50377.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
1 (0.03 % of base) : 50421.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeclarationStatementParts(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
Top method improvements (percentages):
-52 (-29.21 % of base) : 52120.dasm - System.Numerics.Tests.Perf_Matrix4x4:TransformBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-31 (-27.93 % of base) : 6706.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-25 (-19.38 % of base) : 32685.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (Tier1)
-14 (-17.95 % of base) : 37480.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateFromQuaternionBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.95 % of base) : 55121.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateScaleFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.95 % of base) : 27873.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateTranslationFromVectorBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-21 (-17.50 % of base) : 17787.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (Tier1)
-14 (-17.07 % of base) : 54319.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateRotationXWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.07 % of base) : 19708.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateRotationYWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-17.07 % of base) : 56050.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateScaleFromScalarWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-20 (-16.39 % of base) : 1396.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (Tier1)
-14 (-16.28 % of base) : 36202.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateFromAxisAngleBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-81 (-16.07 % of base) : 48551.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:CacheTopLevelMetadataType(byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-138 (-15.86 % of base) : 53957.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (Tier0)
-21 (-14.89 % of base) : 17847.dasm - System.Formats.Asn1.AsnDecoder:TryReadInt32(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (Tier1)
-14 (-14.43 % of base) : 55497.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateScaleFromVectorWithCenterBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-14 (-14.29 % of base) : 58276.dasm - System.Numerics.Tests.Perf_Matrix4x4:CreateScaleFromScalarXYZBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-87 (-14.01 % of base) : 47715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:LookupDeclaredTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
-14 (-13.08 % of base) : 19470.dasm - Benchstone.MDBenchI.MDAddArray2:.ctor():this (Tier0)
-14 (-13.08 % of base) : 24376.dasm - Benchstone.MDBenchI.MDXposMatrix:.ctor():this (Tier0)
coreclr_tests.run.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 459551078 (overridden on cmd)
Total bytes of diff: 459172482 (overridden on cmd)
Total bytes of delta: -378596 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
100 : 421274.dasm (8.03 % of base)
89 : 416995.dasm (5.83 % of base)
55 : 590177.dasm (3.46 % of base)
52 : 573289.dasm (2.98 % of base)
52 : 606726.dasm (3.46 % of base)
48 : 607904.dasm (4.74 % of base)
44 : 635116.dasm (1.08 % of base)
39 : 596124.dasm (0.35 % of base)
36 : 604389.dasm (5.49 % of base)
33 : 606793.dasm (5.64 % of base)
27 : 404439.dasm (0.42 % of base)
27 : 406706.dasm (0.42 % of base)
26 : 311785.dasm (1.44 % of base)
25 : 596112.dasm (0.46 % of base)
25 : 416758.dasm (0.42 % of base)
18 : 593491.dasm (0.89 % of base)
17 : 421120.dasm (0.26 % of base)
17 : 692925.dasm (0.22 % of base)
16 : 634599.dasm (5.80 % of base)
16 : 606971.dasm (4.44 % of base)
Top file improvements (bytes):
-733 : 295728.dasm (-1.98 % of base)
-513 : 446995.dasm (-19.69 % of base)
-385 : 232273.dasm (-6.97 % of base)
-375 : 604691.dasm (-16.33 % of base)
-364 : 592302.dasm (-10.04 % of base)
-333 : 605344.dasm (-20.40 % of base)
-325 : 412004.dasm (-5.75 % of base)
-325 : 414285.dasm (-5.75 % of base)
-319 : 604617.dasm (-17.60 % of base)
-317 : 604736.dasm (-12.14 % of base)
-308 : 690536.dasm (-6.54 % of base)
-301 : 237642.dasm (-4.51 % of base)
-300 : 606085.dasm (-15.35 % of base)
-294 : 605522.dasm (-10.00 % of base)
-293 : 604660.dasm (-11.05 % of base)
-288 : 231888.dasm (-2.83 % of base)
-282 : 605765.dasm (-11.50 % of base)
-282 : 605409.dasm (-19.83 % of base)
-276 : 604397.dasm (-23.90 % of base)
-272 : 606186.dasm (-13.70 % of base)
90 total files with Code Size differences (59 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
100 (8.03 % of base) : 421274.dasm - Internal.JitInterface.CorInfoImpl:GetHelperFtnUncached(int):ILCompiler.DependencyAnalysis.ISymbolNode:this (Tier1)
89 (5.83 % of base) : 416995.dasm - Internal.JitInterface.CorInfoImpl:GetHelperFtnUncached(int):ILCompiler.DependencyAnalysis.ISymbolNode:this (Tier1)
55 (3.46 % of base) : 590177.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
52 (3.46 % of base) : 606726.dasm - (dynamicClass):ABIStress_TailCaller280(short,ubyte,ubyte,ABIStress.S31U,ABIStress.S16U,ABIStress.S32U,ABIStress.S15U,ABIStress.S31U,ABIStress.S3U,ABIStress.S8U,ABIStress.S8U,short,ABIStress.S17U,ABIStress.S2U,ABIStress.S31U,ABIStress.S17U,ABIStress.S8P,double,ubyte,ABIStress.S31U,System.Int128,System.Int128):int (FullOpts)
52 (2.98 % of base) : 573289.dasm - ComWrappersTests.Program:ValidateComInterfaceCreation():this (FullOpts)
48 (4.74 % of base) : 607904.dasm - (dynamicClass):ABIStress_TailCaller951(ABIStress.S16U,short,ABIStress.S13U,ABIStress.I128_2,ABIStress.S31U,ABIStress.S16U,ABIStress.S6U,System.Numerics.Vector`1[int],ABIStress.S5U,ABIStress.S9U,ABIStress.S2U,float,ABIStress.S13U,int,ABIStress.S3U,ABIStress.S17U,ABIStress.S10U,ABIStress.S16U):int (FullOpts)
44 (1.08 % of base) : 635116.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
39 (0.35 % of base) : 596124.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
36 (5.49 % of base) : 604389.dasm - (dynamicClass):ABIStress_PInvoker30(ABIStress.S13U,ABIStress.S12U,ABIStress.S5U,ABIStress.S9U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S7U,ABIStress.S32U,double):int[] (FullOpts)
33 (5.64 % of base) : 606793.dasm - (dynamicClass):ABIStress_TailCaller319(ABIStress.S32U,ABIStress.S17U,ABIStress.S2P,short,float,ABIStress.S8P,ubyte,ABIStress.S12U,ABIStress.S8P,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S6U,int,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S2U,ABIStress.S9U,ABIStress.S12U,ABIStress.S15U,ABIStress.S1P,ubyte,short,ABIStress.S32U,ABIStress.I128_2):int (FullOpts)
27 (0.42 % of base) : 404439.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CreateValueFromKey(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayout:this (Tier1-OSR)
27 (0.42 % of base) : 406706.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CreateValueFromKey(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayout:this (Tier1-OSR)
26 (1.44 % of base) : 311785.dasm - test89834:ValidateExceptionStackFrame(System.Exception):int (Instrumented Tier0)
25 (0.46 % of base) : 596112.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
25 (0.42 % of base) : 416758.dasm - System.Collections.Generic.ArraySortHelper`1[System.__Canon]:PickPivotAndPartition(System.Span`1[System.__Canon],System.Comparison`1[System.__Canon]):int (Tier1)
18 (0.89 % of base) : 593491.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (FullOpts)
17 (0.26 % of base) : 421120.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
17 (0.22 % of base) : 692925.dasm - Test_13662_b:TestEntryPoint():int (FullOpts)
16 (4.44 % of base) : 606971.dasm - (dynamicClass):ABIStress_TailCaller418(ABIStress.S2P,ABIStress.S7U,ABIStress.S2U,int,ABIStress.S7U,ABIStress.S11U,ABIStress.S13U,ubyte):int (FullOpts)
16 (5.80 % of base) : 634599.dasm - System.Xml.Xsl.XmlQueryTypeFactory:AddItemToChoice(System.Collections.Generic.List`1[System.Xml.Xsl.XmlQueryType],System.Xml.Xsl.XmlQueryType) (FullOpts)
Top method improvements (bytes):
-733 (-1.98 % of base) : 295728.dasm - DefaultNamespace.cb6054ToByte_all:runTest():ubyte:this (Instrumented Tier0)
-513 (-19.69 % of base) : 446995.dasm - FPBehaviorApp.Program:TestEntryPoint():int (FullOpts)
-385 (-6.97 % of base) : 232273.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-375 (-16.33 % of base) : 604691.dasm - (dynamicClass):ABIStress_PInvoker188(short,ABIStress.S14U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S12U,ABIStress.S15U,ABIStress.S5U,double):int[] (FullOpts)
-364 (-10.04 % of base) : 592302.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-333 (-20.40 % of base) : 605344.dasm - (dynamicClass):ABIStress_PInvoker529(System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S2P,ABIStress.S31U,int,ABIStress.S12U,ABIStress.S4P,ABIStress.S2U,ABIStress.S1P,ABIStress.S2U,ABIStress.S1P,ABIStress.S7U,ABIStress.S12U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S13U,ABIStress.S12U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S10U):int[] (FullOpts)
-325 (-5.75 % of base) : 412004.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFromContainer(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (Instrumented Tier0)
-325 (-5.75 % of base) : 414285.dasm - System.Xml.Linq.XContainer+ContentReader:ReadContentFromContainer(System.Xml.Linq.XContainer,System.Xml.XmlReader):ubyte:this (Instrumented Tier0)
-319 (-17.60 % of base) : 604617.dasm - (dynamicClass):ABIStress_PInvoker150(ABIStress.S8U,float,ABIStress.S11U,ABIStress.S8P,ABIStress.S8U,ABIStress.S13U,ABIStress.S8P,ABIStress.S5U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S6U,ABIStress.S6U,int,ubyte,ABIStress.I128_1):int[] (FullOpts)
-317 (-12.14 % of base) : 604736.dasm - (dynamicClass):ABIStress_PInvoker211(ABIStress.S9U,ABIStress.S14U,System.Int128,ABIStress.S1P,ABIStress.Hfa1,ABIStress.S4P,ABIStress.S31U,float,System.Int128,short,int,ABIStress.S13U,ABIStress.S8U,ABIStress.S13U,ABIStress.S2U,ABIStress.I128_2,ubyte,ABIStress.S13U,float,ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],System.Int128,ABIStress.S11U,ABIStress.S1P,ABIStress.S2U):int[] (FullOpts)
-308 (-6.54 % of base) : 690536.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory:GenericLookupHelper(int,int,System.Object,Internal.JitInterface.GenericContext):ILCompiler.DependencyAnalysis.ISymbolNode:this (FullOpts)
-301 (-4.51 % of base) : 237642.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Instrumented Tier0)
-300 (-15.35 % of base) : 606085.dasm - (dynamicClass):ABIStress_PInvoker929(ABIStress.S17U,ABIStress.S10U,double,System.Numerics.Vector`1[int],System.Int128,int,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S7U,ABIStress.S8P,float,ABIStress.S8U,ABIStress.S15U,ABIStress.S16U,ABIStress.S6U,ABIStress.S31U,ABIStress.S2P,double,ABIStress.S7U,ABIStress.S3U,ABIStress.I128_2,ABIStress.Hfa1,short):int[] (FullOpts)
-294 (-10.00 % of base) : 605522.dasm - (dynamicClass):ABIStress_PInvoker623(ABIStress.S9U,ABIStress.Hfa2,ABIStress.S6U):int[] (FullOpts)
-293 (-11.05 % of base) : 604660.dasm - (dynamicClass):ABIStress_PInvoker172(ABIStress.S10U,ABIStress.Hfa1,ABIStress.S3U,ABIStress.S10U,ubyte):int[] (FullOpts)
-288 (-2.83 % of base) : 231888.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-282 (-19.83 % of base) : 605409.dasm - (dynamicClass):ABIStress_PInvoker563(ABIStress.S10U,ABIStress.S4U,ABIStress.S9U,ABIStress.S32U,ABIStress.S2P,float,ABIStress.S7U,ABIStress.S2U,ABIStress.S31U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S2U,long,System.Int128):int[] (FullOpts)
-282 (-11.50 % of base) : 605765.dasm - (dynamicClass):ABIStress_PInvoker756(ABIStress.S7U,ABIStress.S8U):int[] (FullOpts)
-276 (-23.90 % of base) : 604397.dasm - (dynamicClass):ABIStress_PInvoker34(ABIStress.S16U,ABIStress.S5U,float,ABIStress.S7U,ubyte,ABIStress.S15U,ABIStress.Hfa2,ABIStress.S17U,ABIStress.S14U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S9U,ABIStress.S12U,System.Numerics.Vector`1[int],ABIStress.S13U,ABIStress.S2P,short,ABIStress.S11U,ubyte,ABIStress.S4P,ABIStress.S10U,float):int[] (FullOpts)
-272 (-13.70 % of base) : 606186.dasm - (dynamicClass):ABIStress_PInvoker983(ABIStress.S11U,ABIStress.S32U,ABIStress.S14U,ABIStress.S8P,System.Numerics.Vector`1[int],ABIStress.S15U,short,System.Int128,ABIStress.S2U,ABIStress.S7U,ABIStress.S11U):int[] (FullOpts)
Top method regressions (percentages):
100 (8.03 % of base) : 421274.dasm - Internal.JitInterface.CorInfoImpl:GetHelperFtnUncached(int):ILCompiler.DependencyAnalysis.ISymbolNode:this (Tier1)
5 (6.94 % of base) : 687553.dasm - NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]](System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]):ubyte (FullOpts)
5 (6.94 % of base) : 687532.dasm - NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructQ]](System.Nullable`1[NotEmptyStructQ]):ubyte (FullOpts)
5 (6.25 % of base) : 687331.dasm - NullableTest:BoxUnboxToNQ(System.ValueType):ubyte (FullOpts)
5 (6.25 % of base) : 687362.dasm - NullableTest:BoxUnboxToNQ(System.ValueType):ubyte (FullOpts)
89 (5.83 % of base) : 416995.dasm - Internal.JitInterface.CorInfoImpl:GetHelperFtnUncached(int):ILCompiler.DependencyAnalysis.ISymbolNode:this (Tier1)
16 (5.80 % of base) : 634599.dasm - System.Xml.Xsl.XmlQueryTypeFactory:AddItemToChoice(System.Collections.Generic.List`1[System.Xml.Xsl.XmlQueryType],System.Xml.Xsl.XmlQueryType) (FullOpts)
33 (5.64 % of base) : 606793.dasm - (dynamicClass):ABIStress_TailCaller319(ABIStress.S32U,ABIStress.S17U,ABIStress.S2P,short,float,ABIStress.S8P,ubyte,ABIStress.S12U,ABIStress.S8P,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S6U,int,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S2U,ABIStress.S9U,ABIStress.S12U,ABIStress.S15U,ABIStress.S1P,ubyte,short,ABIStress.S32U,ABIStress.I128_2):int (FullOpts)
36 (5.49 % of base) : 604389.dasm - (dynamicClass):ABIStress_PInvoker30(ABIStress.S13U,ABIStress.S12U,ABIStress.S5U,ABIStress.S9U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S7U,ABIStress.S32U,double):int[] (FullOpts)
9 (5.23 % of base) : 607044.dasm - (dynamicClass):ABIStress_TailCaller456(ABIStress.S9U,ABIStress.S10U,ABIStress.S2P,ABIStress.S10U,ABIStress.S8U,ABIStress.S8U,System.Int128,ABIStress.I128_2,ABIStress.S15U,ABIStress.S8P,double,ABIStress.S4P,System.Int128,ABIStress.S7U,long,ABIStress.I128_1,ABIStress.S15U,ABIStress.S7U,ABIStress.S6U,System.Runtime.Intrinsics.Vector256`1[int],float,ABIStress.S6U):int (FullOpts)
48 (4.74 % of base) : 607904.dasm - (dynamicClass):ABIStress_TailCaller951(ABIStress.S16U,short,ABIStress.S13U,ABIStress.I128_2,ABIStress.S31U,ABIStress.S16U,ABIStress.S6U,System.Numerics.Vector`1[int],ABIStress.S5U,ABIStress.S9U,ABIStress.S2U,float,ABIStress.S13U,int,ABIStress.S3U,ABIStress.S17U,ABIStress.S10U,ABIStress.S16U):int (FullOpts)
16 (4.44 % of base) : 606971.dasm - (dynamicClass):ABIStress_TailCaller418(ABIStress.S2P,ABIStress.S7U,ABIStress.S2U,int,ABIStress.S7U,ABIStress.S11U,ABIStress.S13U,ubyte):int (FullOpts)
8 (4.28 % of base) : 209862.dasm - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (Instrumented Tier0)
8 (4.28 % of base) : 266710.dasm - System.Reflection.PortableExecutable.PEBinaryReader:.ctor(System.IO.Stream,int):this (Instrumented Tier0)
3 (3.80 % of base) : 687332.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
3 (3.80 % of base) : 687363.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
3 (3.80 % of base) : 429638.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (FullOpts)
3 (3.80 % of base) : 429680.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (FullOpts)
55 (3.46 % of base) : 590177.dasm - V8.Crypto.BigInteger:modPow(V8.Crypto.BigInteger,V8.Crypto.BigInteger):V8.Crypto.BigInteger:this (FullOpts)
52 (3.46 % of base) : 606726.dasm - (dynamicClass):ABIStress_TailCaller280(short,ubyte,ubyte,ABIStress.S31U,ABIStress.S16U,ABIStress.S32U,ABIStress.S15U,ABIStress.S31U,ABIStress.S3U,ABIStress.S8U,ABIStress.S8U,short,ABIStress.S17U,ABIStress.S2U,ABIStress.S31U,ABIStress.S17U,ABIStress.S8P,double,ubyte,ABIStress.S31U,System.Int128,System.Int128):int (FullOpts)
Top method improvements (percentages):
-15 (-28.30 % of base) : 607936.dasm - (dynamicClass):ABIStress_TailCaller968(long,ABIStress.S13U,ABIStress.S12U,ABIStress.S16U,ABIStress.S2P,double):int (FullOpts)
-147 (-26.82 % of base) : 607524.dasm - (dynamicClass):ABIStress_TailCaller728(ABIStress.S2U,ABIStress.S8P,ABIStress.S32U,ABIStress.S4P,ABIStress.S9U,System.Numerics.Vector`1[int],ABIStress.S15U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S2U,ABIStress.S5U,ABIStress.I128_1,ABIStress.S13U,ubyte,ABIStress.S14U,ABIStress.S16U,ABIStress.S17U,ABIStress.S32U,short,long,ABIStress.S31U,System.Int128,short,System.Int128):int (FullOpts)
-18 (-25.35 % of base) : 606989.dasm - (dynamicClass):ABIStress_TailCaller427(ABIStress.S4P,ABIStress.S11U,ABIStress.S2U,ABIStress.S17U,ABIStress.S4P,ABIStress.I128_2,ABIStress.S7U,System.Int128,ABIStress.S8U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.I128_1,float,System.Numerics.Vector`1[int]):int (FullOpts)
-198 (-25.16 % of base) : 606109.dasm - (dynamicClass):ABIStress_PInvoker942(ABIStress.S14U,float,float,System.Int128,ABIStress.S2U,ABIStress.Hfa1,ABIStress.S9U,double,ABIStress.S17U,ABIStress.S9U,short,ABIStress.S6U,ABIStress.S6U,ubyte,System.Int128,ABIStress.S32U,ABIStress.S14U,ABIStress.S2U,ABIStress.S15U,double,ABIStress.S7U,ABIStress.S16U,ABIStress.S1P):int[] (FullOpts)
-176 (-24.41 % of base) : 605959.dasm - (dynamicClass):ABIStress_PInvoker862(ABIStress.S17U,ABIStress.S8U,ABIStress.S14U,int,ABIStress.S4U,ABIStress.S15U,ABIStress.S5U,ABIStress.Hfa1,ABIStress.Hfa2,ABIStress.S10U,double,ABIStress.S10U,ABIStress.S4P,ABIStress.S13U,ABIStress.S8U,ubyte,ABIStress.S16U,ABIStress.S12U,ABIStress.S1P,int,System.Runtime.Intrinsics.Vector256`1[int],float,ABIStress.I128_2):int[] (FullOpts)
-230 (-24.39 % of base) : 606741.dasm - (dynamicClass):ABIStress_TailCaller289(ubyte,ABIStress.S12U,ABIStress.S7U,ABIStress.S4P,ABIStress.S16U,ubyte,ABIStress.S12U,ABIStress.S17U,System.Numerics.Vector`1[int],ABIStress.S6U,System.Numerics.Vector`1[int],ABIStress.S7U,long,ABIStress.S16U,ABIStress.S15U,ABIStress.S14U,ABIStress.I128_2,ABIStress.S15U,ABIStress.I128_1,System.Int128):int (FullOpts)
-276 (-23.90 % of base) : 604397.dasm - (dynamicClass):ABIStress_PInvoker34(ABIStress.S16U,ABIStress.S5U,float,ABIStress.S7U,ubyte,ABIStress.S15U,ABIStress.Hfa2,ABIStress.S17U,ABIStress.S14U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S9U,ABIStress.S12U,System.Numerics.Vector`1[int],ABIStress.S13U,ABIStress.S2P,short,ABIStress.S11U,ubyte,ABIStress.S4P,ABIStress.S10U,float):int[] (FullOpts)
-152 (-23.49 % of base) : 605065.dasm - (dynamicClass):ABIStress_PInvoker384(ABIStress.S15U,ABIStress.S15U,double,ubyte,ABIStress.S9U,double,ABIStress.S4U,ABIStress.S16U,ABIStress.S4U,ABIStress.S7U,ABIStress.S2P,ABIStress.S7U,ABIStress.S8U,ABIStress.S16U,ABIStress.S2U,ABIStress.S7U,ubyte,ABIStress.S4P):int[] (FullOpts)
-138 (-23.12 % of base) : 605857.dasm - (dynamicClass):ABIStress_PInvoker805(ABIStress.S15U,int,ABIStress.S3U,ABIStress.I128_2):int[] (FullOpts)
-55 (-23.11 % of base) : 606724.dasm - (dynamicClass):ABIStress_TailCaller279(ABIStress.I128_2,ABIStress.I128_2,ABIStress.S3U,float,ubyte,ubyte,ABIStress.I128_2,int,ABIStress.S12U,double,ABIStress.S8P,int,ABIStress.S10U,ABIStress.S3U,ABIStress.S31U,ABIStress.S4P,double,ABIStress.S3U,ABIStress.S14U,ABIStress.S12U,int,ABIStress.S6U,ABIStress.S31U,System.Runtime.Intrinsics.Vector256`1[int]):int (FullOpts)
-198 (-22.71 % of base) : 606357.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-196 (-22.37 % of base) : 604731.dasm - (dynamicClass):ABIStress_PInvoker208(int,ABIStress.S17U,ABIStress.S17U,short,ABIStress.S13U,ABIStress.S10U,float,ABIStress.S31U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S15U,ABIStress.S32U,ABIStress.S11U,ABIStress.S6U,ABIStress.S10U):int[] (FullOpts)
-178 (-21.19 % of base) : 604679.dasm - (dynamicClass):ABIStress_PInvoker182(ABIStress.S12U,ABIStress.S32U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,int,ABIStress.S3U,ABIStress.S5U,ABIStress.S13U,ABIStress.S8P,ABIStress.Hfa1,ABIStress.S15U,ABIStress.S8U,short,ABIStress.S6U):int[] (FullOpts)
-233 (-21.03 % of base) : 604721.dasm - (dynamicClass):ABIStress_PInvoker203(ABIStress.S8U,ABIStress.S14U,ABIStress.I128_2,short,ABIStress.S16U,ABIStress.S4U,ABIStress.S11U,ABIStress.S8U,ABIStress.S8U,ABIStress.S10U,System.Int128,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.Hfa1,ABIStress.S9U,ABIStress.S8P,ABIStress.S2U,ABIStress.S16U,ABIStress.S32U,ubyte,ABIStress.S13U,ABIStress.S1P,ABIStress.S4P,ABIStress.S17U):int[] (FullOpts)
-228 (-20.86 % of base) : 604554.dasm - (dynamicClass):ABIStress_PInvoker116(ABIStress.I128_1,ABIStress.S3U,ABIStress.S16U,ABIStress.S13U,long,long,float,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S17U,ABIStress.Hfa2,ABIStress.S16U,System.Numerics.Vector`1[int],ABIStress.S13U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.I128_1,ABIStress.S8U,ubyte,ABIStress.S3U,ABIStress.S11U,ABIStress.S4P,float,short,float,ABIStress.S15U):int[] (FullOpts)
-142 (-20.85 % of base) : 604364.dasm - (dynamicClass):ABIStress_PInvoker17(ABIStress.S14U,float,ABIStress.S4P,ABIStress.S17U,ABIStress.Hfa1,System.Numerics.Vector`1[int],ABIStress.S32U,ABIStress.Hfa1,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S12U,ABIStress.S6U,ABIStress.S1P,ubyte,ABIStress.S9U,ABIStress.I128_2,ABIStress.S8P,ABIStress.I128_2):int[] (FullOpts)
-124 (-20.84 % of base) : 605483.dasm - (dynamicClass):ABIStress_PInvoker603(short,ABIStress.S13U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S1P,ABIStress.S14U,ABIStress.S31U,ABIStress.S31U,ABIStress.S14U,ABIStress.S4P,ABIStress.S13U,ABIStress.S11U,System.Numerics.Vector`1[int],ABIStress.S2P,ABIStress.Hfa1,ABIStress.S14U,System.Runtime.Intrinsics.Vector128`1[int],short,ABIStress.I128_2,ABIStress.Hfa2,ABIStress.S11U,int,ABIStress.S8P,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S3U):int[] (FullOpts)
-96 (-20.82 % of base) : 606771.dasm - (dynamicClass):ABIStress_TailCaller306(ABIStress.S5U,ABIStress.S7U,ABIStress.S31U,ABIStress.S11U,ABIStress.S31U,ABIStress.S10U,ABIStress.S4U,ABIStress.S5U,ABIStress.S31U,int,System.Runtime.Intrinsics.Vector256`1[int],long,ABIStress.S15U,ABIStress.S6U,ABIStress.S11U,ABIStress.S2U,ABIStress.S12U,ABIStress.S4P,ABIStress.S10U,int):int (FullOpts)
-207 (-20.80 % of base) : 605669.dasm - (dynamicClass):ABIStress_PInvoker706(ABIStress.S10U,ABIStress.S6U,double,ABIStress.S8U,ABIStress.S17U,ABIStress.S8P,ABIStress.S2U,ABIStress.S14U,System.Int128,ABIStress.S31U):int[] (FullOpts)
-252 (-20.77 % of base) : 605697.dasm - (dynamicClass):ABIStress_PInvoker721(ABIStress.S32U,ABIStress.S12U,ABIStress.S8U,ABIStress.S4P,ABIStress.S10U,short,ABIStress.S17U,double,ABIStress.S32U,ABIStress.S5U,ABIStress.S6U,long,ABIStress.S4P):int[] (FullOpts)
libraries.crossgen2.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 38670232 (overridden on cmd)
Total bytes of diff: 38649334 (overridden on cmd)
Total bytes of delta: -20898 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 199730.dasm (1.22 % of base)
40 : 52011.dasm (3.35 % of base)
32 : 51924.dasm (1.66 % of base)
27 : 22236.dasm (15.79 % of base)
26 : 168234.dasm (0.26 % of base)
15 : 16292.dasm (4.78 % of base)
14 : 229142.dasm (1.30 % of base)
12 : 61898.dasm (0.18 % of base)
12 : 139474.dasm (1.08 % of base)
12 : 181830.dasm (1.08 % of base)
11 : 217601.dasm (2.07 % of base)
11 : 30618.dasm (2.55 % of base)
11 : 30619.dasm (1.77 % of base)
10 : 168062.dasm (0.22 % of base)
10 : 169384.dasm (0.78 % of base)
10 : 179048.dasm (3.25 % of base)
10 : 3219.dasm (2.14 % of base)
10 : 3221.dasm (2.13 % of base)
9 : 95925.dasm (2.07 % of base)
7 : 113444.dasm (0.39 % of base)
Top file improvements (bytes):
-2405 : 139779.dasm (-8.98 % of base)
-2405 : 182116.dasm (-8.98 % of base)
-254 : 50103.dasm (-8.11 % of base)
-206 : 219123.dasm (-23.93 % of base)
-178 : 219111.dasm (-12.25 % of base)
-173 : 140762.dasm (-3.22 % of base)
-171 : 50092.dasm (-7.11 % of base)
-168 : 209462.dasm (-5.09 % of base)
-165 : 183076.dasm (-2.76 % of base)
-150 : 30504.dasm (-0.49 % of base)
-148 : 187119.dasm (-4.77 % of base)
-142 : 57883.dasm (-2.87 % of base)
-140 : 81082.dasm (-21.84 % of base)
-130 : 140753.dasm (-18.34 % of base)
-130 : 183067.dasm (-18.34 % of base)
-130 : 58005.dasm (-23.90 % of base)
-128 : 140751.dasm (-20.88 % of base)
-128 : 183065.dasm (-20.88 % of base)
-126 : 144871.dasm (-4.29 % of base)
-126 : 201722.dasm (-6.16 % of base)
74 total files with Code Size differences (41 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
44 (1.22 % of base) : 199730.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
40 (3.35 % of base) : 52011.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFunctionPointerInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation:this (FullOpts)
32 (1.66 % of base) : 51924.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindIndexerOrIndexedPropertyAccess(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
27 (15.79 % of base) : 22236.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
26 (0.26 % of base) : 168234.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
15 (4.78 % of base) : 16292.dasm - System.Globalization.TimeSpanParse:TryParseExactMultipleTimeSpan(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):ubyte (FullOpts)
14 (1.30 % of base) : 229142.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions (FullOpts)
12 (1.08 % of base) : 139474.dasm - Microsoft.CodeAnalysis.CompilationOptions:GetHashCodeHelper():int:this (FullOpts)
12 (1.08 % of base) : 181830.dasm - Microsoft.CodeAnalysis.CompilationOptions:GetHashCodeHelper():int:this (FullOpts)
12 (0.18 % of base) : 61898.dasm - Microsoft.CodeAnalysis.CSharp.CSharpDeclarationComputer:ComputeDeclarations(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SyntaxNode,System.Func`3[Microsoft.CodeAnalysis.SyntaxNode,System.Nullable`1[int],ubyte],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Nullable`1[int],System.Threading.CancellationToken) (FullOpts)
11 (1.77 % of base) : 30619.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:Create(System.String,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree],System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.MetadataReference],Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,System.Type,System.Type,ubyte):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation (FullOpts)
11 (2.55 % of base) : 30618.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CreateScriptCompilation(System.String,Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.MetadataReference],Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,System.Type,System.Type):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation (FullOpts)
11 (2.07 % of base) : 217601.dasm - System.IO.Compression.ZipHelper:GetEncodedTruncatedBytesFromString(System.String,System.Text.Encoding,int,byref):ubyte[] (FullOpts)
10 (3.25 % of base) : 179048.dasm - System.ComponentModel.PropertyTabAttribute:Equals(System.ComponentModel.PropertyTabAttribute):ubyte:this (FullOpts)
10 (2.14 % of base) : 3219.dasm - System.MemoryExtensions:ToLowerInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
10 (2.13 % of base) : 3221.dasm - System.MemoryExtensions:ToUpperInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
10 (0.22 % of base) : 168062.dasm - System.Net.Http.Http3RequestStream+<SendAsync>d__29:MoveNext():this (FullOpts)
10 (0.78 % of base) : 169384.dasm - System.Net.Http.HttpConnection:ParseStatusLineCore(System.Span`1[ubyte],System.Net.Http.HttpResponseMessage) (FullOpts)
9 (2.07 % of base) : 95925.dasm - Microsoft.Diagnostics.Tracing.StackSources.ParallelLinuxPerfScriptStackSource:TryGetCompleteBuffer(Microsoft.Diagnostics.Tracing.Utilities.FastStream,uint,double,int,byref):ubyte:this (FullOpts)
7 (0.39 % of base) : 113444.dasm - Microsoft.Diagnostics.Tracing.StartStopActivityComputer+<>c__DisplayClass0_0:<.ctor>b__1(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)
Top method improvements (bytes):
-2405 (-8.98 % of base) : 139779.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-2405 (-8.98 % of base) : 182116.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-254 (-8.11 % of base) : 50103.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+DocumentationCommentWalker:DefaultVisit(Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-206 (-23.93 % of base) : 219123.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-178 (-12.25 % of base) : 219111.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset,ubyte):this (FullOpts)
-173 (-3.22 % of base) : 140762.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-171 (-7.11 % of base) : 50092.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+IncludeElementExpander:BindAndReplaceCref(System.Xml.Linq.XAttribute,System.String):this (FullOpts)
-168 (-5.09 % of base) : 209462.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-165 (-2.76 % of base) : 183076.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-150 (-0.49 % of base) : 30504.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-148 (-4.77 % of base) : 187119.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
-142 (-2.87 % of base) : 57883.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
-140 (-21.84 % of base) : 81082.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-130 (-23.90 % of base) : 58005.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-130 (-18.34 % of base) : 140753.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RemoveGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-130 (-18.34 % of base) : 183067.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RemoveGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-128 (-20.88 % of base) : 140751.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-128 (-20.88 % of base) : 183065.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-126 (-4.29 % of base) : 144871.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
-126 (-6.16 % of base) : 201722.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
Top method regressions (percentages):
27 (15.79 % of base) : 22236.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
3 (7.89 % of base) : 31041.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
15 (4.78 % of base) : 16292.dasm - System.Globalization.TimeSpanParse:TryParseExactMultipleTimeSpan(System.ReadOnlySpan`1[ushort],System.String[],System.IFormatProvider,int,byref):ubyte (FullOpts)
3 (3.90 % of base) : 226257.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryUpdate(System.__Canon,System.__Canon,System.__Canon):ubyte:this (FullOpts)
3 (3.80 % of base) : 91340.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Collect@2047-1[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
3 (3.80 % of base) : 91342.dasm - Microsoft.FSharp.Collections.ArrayModule+Parallel+Map@2060-2[System.__Canon,System.__Canon]:Invoke(int):this (FullOpts)
40 (3.35 % of base) : 52011.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFunctionPointerInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation:this (FullOpts)
10 (3.25 % of base) : 179048.dasm - System.ComponentModel.PropertyTabAttribute:Equals(System.ComponentModel.PropertyTabAttribute):ubyte:this (FullOpts)
3 (3.23 % of base) : 140030.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
3 (3.23 % of base) : 182362.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
3 (3.23 % of base) : 140031.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
3 (3.23 % of base) : 182363.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
6 (2.94 % of base) : 176111.dasm - Internal.TypeSystem.InstantiatedMethod:CompareToImpl(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.TypeSystemComparer):int:this (FullOpts)
6 (2.91 % of base) : 176154.dasm - Internal.TypeSystem.InstantiatedType:CompareToImpl(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeSystemComparer):int:this (FullOpts)
5 (2.91 % of base) : 18379.dasm - System.Runtime.Intrinsics.Vector512`1[int]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[int]):int (FullOpts)
5 (2.91 % of base) : 18738.dasm - System.Runtime.Intrinsics.Vector512`1[uint]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[uint]):uint (FullOpts)
11 (2.55 % of base) : 30618.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation:CreateScriptCompilation(System.String,Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.MetadataReference],Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,System.Type,System.Type):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation (FullOpts)
5 (2.16 % of base) : 18676.dasm - System.Runtime.Intrinsics.Vector512`1[ushort]:System.Runtime.Intrinsics.ISimdVector<System.Runtime.Intrinsics.Vector512<T>,T>.Sum(System.Runtime.Intrinsics.Vector512`1[ushort]):ushort (FullOpts)
10 (2.14 % of base) : 3219.dasm - System.MemoryExtensions:ToLowerInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
10 (2.13 % of base) : 3221.dasm - System.MemoryExtensions:ToUpperInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
Top method improvements (percentages):
-25 (-49.02 % of base) : 173914.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-23 (-46.94 % of base) : 173922.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-23 (-46.94 % of base) : 173908.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-23 (-46.94 % of base) : 173933.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-25 (-29.41 % of base) : 123157.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
-91 (-29.17 % of base) : 57606.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (FullOpts)
-70 (-28.11 % of base) : 175007.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Decimal):this (FullOpts)
-22 (-27.85 % of base) : 197309.dasm - System.Xml.XsdCachingReader:MoveToFirstAttribute():ubyte:this (FullOpts)
-20 (-27.78 % of base) : 173910.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
-20 (-27.78 % of base) : 173912.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
-67 (-27.02 % of base) : 51935.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetMethodGroupDelegateType(Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-117 (-25.83 % of base) : 140757.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-117 (-25.83 % of base) : 183071.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-18 (-25.71 % of base) : 173916.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
-70 (-25.55 % of base) : 175069.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberValueAsString(System.Decimal):this (FullOpts)
-206 (-23.93 % of base) : 219123.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-130 (-23.90 % of base) : 58005.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-140 (-21.84 % of base) : 81082.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass169_0:<VisitObjectElementInitializer>b__10(int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
-51 (-21.52 % of base) : 175024.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.Guid):this (FullOpts)
-128 (-20.88 % of base) : 140751.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
libraries.pmi.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 60144132 (overridden on cmd)
Total bytes of diff: 60118741 (overridden on cmd)
Total bytes of delta: -25391 (-0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
212 : 43603.dasm (2.95 % of base)
209 : 47846.dasm (0.70 % of base)
158 : 171517.dasm (0.55 % of base)
75 : 37000.dasm (1.58 % of base)
66 : 209983.dasm (1.78 % of base)
63 : 185708.dasm (0.53 % of base)
58 : 202090.dasm (0.81 % of base)
57 : 227536.dasm (1.60 % of base)
48 : 43996.dasm (2.60 % of base)
45 : 13669.dasm (0.79 % of base)
44 : 259722.dasm (1.06 % of base)
44 : 194271.dasm (3.04 % of base)
44 : 72532.dasm (0.61 % of base)
40 : 37249.dasm (0.67 % of base)
39 : 72379.dasm (0.35 % of base)
38 : 220288.dasm (0.20 % of base)
38 : 18144.dasm (1.00 % of base)
38 : 202680.dasm (0.20 % of base)
37 : 71370.dasm (0.81 % of base)
36 : 73376.dasm (1.37 % of base)
Top file improvements (bytes):
-364 : 177150.dasm (-9.81 % of base)
-308 : 83003.dasm (-6.54 % of base)
-193 : 43106.dasm (-4.75 % of base)
-193 : 253060.dasm (-9.91 % of base)
-192 : 221316.dasm (-2.84 % of base)
-172 : 43095.dasm (-6.29 % of base)
-166 : 227458.dasm (-4.69 % of base)
-163 : 21138.dasm (-0.47 % of base)
-160 : 203727.dasm (-2.64 % of base)
-155 : 221305.dasm (-21.44 % of base)
-155 : 203716.dasm (-21.44 % of base)
-152 : 265145.dasm (-3.98 % of base)
-150 : 81273.dasm (-4.33 % of base)
-149 : 203718.dasm (-18.65 % of base)
-149 : 221307.dasm (-18.65 % of base)
-146 : 77835.dasm (-8.52 % of base)
-145 : 83001.dasm (-25.13 % of base)
-144 : 50045.dasm (-2.32 % of base)
-142 : 20946.dasm (-3.15 % of base)
-140 : 214648.dasm (-9.67 % of base)
80 total files with Code Size differences (43 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
212 (2.95 % of base) : 43603.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
209 (0.70 % of base) : 47846.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
158 (0.55 % of base) : 171517.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
75 (1.58 % of base) : 37000.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
66 (1.78 % of base) : 209983.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],byref,byref):this (FullOpts)
63 (0.53 % of base) : 185708.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
58 (0.81 % of base) : 202090.dasm - Microsoft.CodeAnalysis.CommonCompiler:CompileAndEmit(Microsoft.CodeAnalysis.TouchedFileLogger,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText],Microsoft.CodeAnalysis.AnalyzerConfigSet,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken,byref,byref,byref):this (FullOpts)
57 (1.60 % of base) : 227536.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]):this (FullOpts)
48 (2.60 % of base) : 43996.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFunctionPointerInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation:this (FullOpts)
45 (0.79 % of base) : 13669.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
44 (0.61 % of base) : 72532.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceCustomEventSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.EventDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
44 (3.04 % of base) : 194271.dasm - System.Data.ConstraintCollection:FinishInitConstraints():this (FullOpts)
44 (1.06 % of base) : 259722.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
40 (0.67 % of base) : 37249.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
39 (0.35 % of base) : 72379.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
38 (0.20 % of base) : 220288.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
38 (0.20 % of base) : 202680.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
38 (1.00 % of base) : 18144.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CreateTypeParameterInfoInPart(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterOnTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
37 (0.81 % of base) : 71370.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol:CreateFromSource(Microsoft.CodeAnalysis.CSharp.Syntax.FunctionPointerTypeSyntax,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerMethodSymbol (FullOpts)
36 (1.37 % of base) : 73376.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol:GetAccessorDeclarations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref,byref,byref) (FullOpts)
Top method improvements (bytes):
-364 (-9.81 % of base) : 177150.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-308 (-6.54 % of base) : 83003.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory:GenericLookupHelper(int,int,System.Object,Internal.JitInterface.GenericContext):ILCompiler.DependencyAnalysis.ISymbolNode:this (FullOpts)
-193 (-4.75 % of base) : 43106.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+DocumentationCommentWalker:DefaultVisit(Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-193 (-9.91 % of base) : 253060.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-192 (-2.84 % of base) : 221316.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-172 (-6.29 % of base) : 43095.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+DocumentationCommentCompiler+IncludeElementExpander:BindAndReplaceCref(System.Xml.Linq.XAttribute,System.String):this (FullOpts)
-166 (-4.69 % of base) : 227458.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
-163 (-0.47 % of base) : 21138.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-160 (-2.64 % of base) : 203727.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-155 (-21.44 % of base) : 221305.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-155 (-21.44 % of base) : 203716.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-152 (-3.98 % of base) : 265145.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-150 (-4.33 % of base) : 81273.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (FullOpts)
-149 (-18.65 % of base) : 203718.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RemoveGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-149 (-18.65 % of base) : 221307.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RemoveGenerators(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ISourceGenerator]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-146 (-8.52 % of base) : 77835.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass449_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-145 (-25.13 % of base) : 83001.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory:CheckVirtualFunctionOverride(Internal.JitInterface.MethodWithToken,Internal.TypeSystem.TypeDesc,Internal.JitInterface.MethodWithToken):ILCompiler.DependencyAnalysis.ISymbolNode:this (FullOpts)
-144 (-2.32 % of base) : 50045.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
-142 (-3.15 % of base) : 20946.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
-140 (-9.67 % of base) : 214648.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeNodeActionsByKind|1(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],ubyte):this (FullOpts)
Top method regressions (percentages):
3 (7.89 % of base) : 21684.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
12 (6.82 % of base) : 130821.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
6 (6.19 % of base) : 129391.dasm - System.Net.NegotiateAuthenticationPal+UnixNegotiateAuthenticationPal:VerifyMIC(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
16 (5.80 % of base) : 256407.dasm - System.Xml.Xsl.XmlQueryTypeFactory:AddItemToChoice(System.Collections.Generic.List`1[System.Xml.Xsl.XmlQueryType],System.Xml.Xsl.XmlQueryType) (FullOpts)
27 (3.50 % of base) : 169644.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConvertArithmeticResult(int,System.Type):this (FullOpts)
6 (3.33 % of base) : 176421.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
7 (3.20 % of base) : 93374.dasm - Microsoft.FSharp.Collections.MapTreeModule:mkFromEnumerator[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[System.__Canon],Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]],System.Collections.Generic.IEnumerator`1[System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[System.__Canon,System.Nullable`1[int]] (FullOpts)
15 (3.12 % of base) : 149482.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:BindStandardBinop(int,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.Expr):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this (FullOpts)
44 (3.04 % of base) : 194271.dasm - System.Data.ConstraintCollection:FinishInitConstraints():this (FullOpts)
10 (2.96 % of base) : 292143.dasm - System.Collections.ObjectModel.KeyedCollection`2[double,System.Nullable`1[int]]:Remove(double):ubyte:this (FullOpts)
212 (2.95 % of base) : 43603.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
6 (2.84 % of base) : 106168.dasm - Microsoft.Build.Collections.ArrayDictionary`2[System.__Canon,System.Nullable`1[int]]:ContainsKey(System.__Canon):ubyte:this (FullOpts)
16 (2.82 % of base) : 73964.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPropertySymbol:CreateSetAccessorSymbol(ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:this (FullOpts)
22 (2.79 % of base) : 13972.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportXmlNamespacePrefixNotDefined(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.SyntaxToken,System.String,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundBadExpression:this (FullOpts)
12 (2.76 % of base) : 72627.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEventSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.ExplicitInterfaceSpecifierSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
6 (2.71 % of base) : 140422.dasm - Internal.TypeSystem.InstantiatedType:CompareToImpl(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeSystemComparer):int:this (FullOpts)
6 (2.69 % of base) : 140372.dasm - Internal.TypeSystem.InstantiatedMethod:CompareToImpl(Internal.TypeSystem.MethodDesc,Internal.TypeSystem.TypeSystemComparer):int:this (FullOpts)
12 (2.69 % of base) : 72496.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:CreateConstructorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol (FullOpts)
10 (2.61 % of base) : 292150.dasm - System.Collections.ObjectModel.KeyedCollection`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
48 (2.60 % of base) : 43996.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFunctionPointerInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation:this (FullOpts)
Top method improvements (percentages):
-23 (-46.94 % of base) : 134539.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-23 (-46.94 % of base) : 134552.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-23 (-46.94 % of base) : 134538.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-23 (-46.94 % of base) : 134563.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-25 (-46.30 % of base) : 134544.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-22 (-28.57 % of base) : 134540.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTimeOffset]):System.Text.Json.Nodes.JsonNode (FullOpts)
-22 (-28.57 % of base) : 134542.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Decimal]):System.Text.Json.Nodes.JsonNode (FullOpts)
-22 (-28.57 % of base) : 252641.dasm - System.Xml.XsdCachingReader:MoveToFirstAttribute():ubyte:this (FullOpts)
-119 (-27.05 % of base) : 203722.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-119 (-27.05 % of base) : 221311.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-20 (-26.67 % of base) : 134546.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.Guid]):System.Text.Json.Nodes.JsonNode (FullOpts)
-145 (-25.13 % of base) : 83001.dasm - ILCompiler.DependencyAnalysis.ReadyToRunSymbolNodeFactory:CheckVirtualFunctionOverride(Internal.JitInterface.MethodWithToken,Internal.TypeSystem.TypeDesc,Internal.JitInterface.MethodWithToken):ILCompiler.DependencyAnalysis.ISymbolNode:this (FullOpts)
-23 (-24.73 % of base) : 132930.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-46 (-24.60 % of base) : 293633.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Add(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (FullOpts)
-68 (-24.46 % of base) : 49766.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (FullOpts)
-121 (-24.44 % of base) : 82940.dasm - ILCompiler.DependencyAnalysis.NodeFactory:VirtualResolutionFixupSignature(int,Internal.JitInterface.MethodWithToken,Internal.TypeSystem.TypeDesc,Internal.JitInterface.MethodWithToken):ILCompiler.DependencyAnalysis.ReadyToRun.VirtualResolutionFixupSignature:this (FullOpts)
-114 (-23.80 % of base) : 203719.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-114 (-23.80 % of base) : 221308.dasm - Microsoft.CodeAnalysis.GeneratorDriver:AddAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-127 (-23.69 % of base) : 50168.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-27 (-23.28 % of base) : 107186.dasm - Microsoft.Build.Graph.GraphBuilder+GraphEdges:set_Item(System.ValueTuple`2[Microsoft.Build.Graph.ProjectGraphNode,Microsoft.Build.Graph.ProjectGraphNode],Microsoft.Build.Execution.ProjectItemInstance):this (FullOpts)
libraries_tests.run.linux.x64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 333551492 (overridden on cmd)
Total bytes of diff: 333062785 (overridden on cmd)
Total bytes of delta: -488707 (-0.15 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
118 : 336352.dasm (6.89 % of base)
88 : 95936.dasm (1.93 % of base)
80 : 630625.dasm (3.62 % of base)
66 : 659169.dasm (3.01 % of base)
64 : 471947.dasm (1.55 % of base)
63 : 548639.dasm (2.26 % of base)
60 : 475082.dasm (1.21 % of base)
60 : 705519.dasm (2.79 % of base)
58 : 93248.dasm (2.60 % of base)
56 : 551565.dasm (2.29 % of base)
56 : 547580.dasm (2.32 % of base)
46 : 460224.dasm (0.42 % of base)
46 : 460275.dasm (0.56 % of base)
45 : 58615.dasm (2.13 % of base)
42 : 459640.dasm (0.44 % of base)
42 : 95422.dasm (2.37 % of base)
32 : 280132.dasm (2.21 % of base)
31 : 74018.dasm (0.72 % of base)
31 : 93250.dasm (2.72 % of base)
30 : 480167.dasm (1.09 % of base)
Top file improvements (bytes):
-1911 : 278406.dasm (-8.41 % of base)
-1825 : 298675.dasm (-1.38 % of base)
-1825 : 302681.dasm (-1.36 % of base)
-1647 : 465911.dasm (-12.40 % of base)
-1069 : 73891.dasm (-5.74 % of base)
-761 : 517830.dasm (-14.87 % of base)
-761 : 517866.dasm (-14.87 % of base)
-751 : 517979.dasm (-14.44 % of base)
-751 : 517948.dasm (-14.44 % of base)
-713 : 456608.dasm (-7.20 % of base)
-684 : 499353.dasm (-4.99 % of base)
-552 : 594285.dasm (-2.42 % of base)
-540 : 517898.dasm (-15.68 % of base)
-540 : 517961.dasm (-15.68 % of base)
-514 : 473016.dasm (-5.92 % of base)
-514 : 473336.dasm (-5.92 % of base)
-513 : 379866.dasm (-9.60 % of base)
-513 : 379864.dasm (-9.60 % of base)
-509 : 259251.dasm (-5.96 % of base)
-504 : 470982.dasm (-7.71 % of base)
95 total files with Code Size differences (56 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
118 (6.89 % of base) : 336352.dasm - System.IO.Tests.File_ReadWriteAllText:OutputIsTheSameAsForStreamWriter(System.String,System.Text.Encoding):this (Tier1)
88 (1.93 % of base) : 95936.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (Tier1)
80 (3.62 % of base) : 630625.dasm - System.Text.Json.JsonTestHelper:AssertJsonEqual(System.String,System.String) (Tier1)
66 (3.01 % of base) : 659169.dasm - System.Text.Json.JsonTestHelper:AssertJsonEqual(System.String,System.String) (Tier1)
64 (1.55 % of base) : 471947.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (Tier1)
63 (2.26 % of base) : 548639.dasm - System.Tests.UInt128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (Tier1)
60 (1.21 % of base) : 475082.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
60 (2.79 % of base) : 705519.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:ReportUnusedImports(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Tier1)
58 (2.60 % of base) : 93248.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:ExecuteDeclaringReferenceActions(Microsoft.CodeAnalysis.SyntaxReference,Microsoft.CodeAnalysis.Diagnostics.SymbolDeclaredCompilationEvent,Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ushort],ubyte,ubyte,ubyte,ubyte,ubyte,System.Threading.CancellationToken):this (Tier1)
56 (2.32 % of base) : 547580.dasm - System.Tests.UInt32Tests+<Parse_Valid_TestData>d__11:MoveNext():ubyte:this (Tier1)
56 (2.29 % of base) : 551565.dasm - System.Tests.UInt64Tests+<Parse_Valid_TestData>d__11:MoveNext():ubyte:this (Tier1)
46 (0.56 % of base) : 460275.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteAttributes(System.Xml.Serialization.XmlSerializationReaderILGen+Member[],System.Xml.Serialization.XmlSerializationReaderILGen+Member,System.String,System.Reflection.Emit.LocalBuilder):this (Tier1)
46 (0.42 % of base) : 460224.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteStructMethod(System.Xml.Serialization.StructMapping):this (Tier1)
45 (2.13 % of base) : 58615.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:ReportUnusedImports(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Tier1)
42 (2.37 % of base) : 95422.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:ReportUnusedImports(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Tier1)
42 (0.44 % of base) : 459640.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteMemberElementsIf(System.Xml.Serialization.XmlSerializationReaderILGen+Member[],System.Xml.Serialization.XmlSerializationReaderILGen+Member,System.String):this (Tier1)
32 (2.21 % of base) : 280132.dasm - System.Data.ConstNode:SmallestDecimal(System.Object):System.Object (Instrumented Tier0)
31 (2.72 % of base) : 93250.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1[ushort]:ComputeDeclarationAnalysisData(Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SyntaxReference,Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.Diagnostics.AnalysisScope,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver+DeclarationAnalysisData (Tier1)
31 (0.72 % of base) : 74018.dasm - System.Globalization.Tests.InvariantModeTests:TestCasing():this (Tier1-OSR)
30 (1.09 % of base) : 480167.dasm - System.Xml.Schema.XmlSchemaSet:Add(System.Xml.Schema.XmlSchemaSet):this (Tier1)
Top method improvements (bytes):
-1911 (-8.41 % of base) : 278406.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1825 (-1.38 % of base) : 298675.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (Instrumented Tier0)
-1825 (-1.36 % of base) : 302681.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (Instrumented Tier0)
-1647 (-12.40 % of base) : 465911.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1069 (-5.74 % of base) : 73891.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (Instrumented Tier0)
-761 (-14.87 % of base) : 517830.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-761 (-14.87 % of base) : 517866.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-751 (-14.44 % of base) : 517979.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-751 (-14.44 % of base) : 517948.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-713 (-7.20 % of base) : 456608.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
-684 (-4.99 % of base) : 499353.dasm - System.Reflection.Tests.PropertyTests:TestProperties_GetterSetter() (Instrumented Tier0)
-552 (-2.42 % of base) : 594285.dasm - System.Security.Cryptography.Tests.CryptoConfigTests+<get_AllValidNames>d__27:MoveNext():ubyte:this (Instrumented Tier0)
-540 (-15.68 % of base) : 517898.dasm - System.Numerics.Tests.ToStringTest:RunSimpleProviderToStringTests(System.Random,System.String,System.Globalization.NumberFormatInfo,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-540 (-15.68 % of base) : 517961.dasm - System.Numerics.Tests.ToStringTest:RunSimpleProviderToStringTests(System.Random,System.String,System.Globalization.NumberFormatInfo,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-514 (-5.92 % of base) : 473016.dasm - System.Xml.Xsl.Xslt.QilGenerator:System.Xml.Xsl.XPath.IXPathEnvironment.ResolveFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode],System.Xml.Xsl.XPath.IFocus):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-514 (-5.92 % of base) : 473336.dasm - System.Xml.Xsl.Xslt.QilGenerator:System.Xml.Xsl.XPath.IXPathEnvironment.ResolveFunction(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode],System.Xml.Xsl.XPath.IFocus):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
-513 (-9.60 % of base) : 379864.dasm - System.SpanTests.IndexOfAnyInRangeTests`1[System.__Canon]:MatrixOfLengthsAndOffsets_Any_FindsValueAtExpectedIndex():this (Instrumented Tier0)
-513 (-9.60 % of base) : 379866.dasm - System.SpanTests.IndexOfAnyInRangeTests`1[System.__Canon]:MatrixOfLengthsAndOffsets_AnyExcept_FindsValueAtExpectedIndex():this (Instrumented Tier0)
-509 (-5.96 % of base) : 259251.dasm - System.ComponentModel.Tests.DateTimeConverterTests+<ConvertToTestData>d__3:MoveNext():ubyte:this (Instrumented Tier0)
-504 (-7.71 % of base) : 470982.dasm - System.Xml.Xsl.XPath.XPathBuilder:Function(System.String,System.String,System.Collections.Generic.IList`1[System.Xml.Xsl.Qil.QilNode]):System.Xml.Xsl.Qil.QilNode:this (Instrumented Tier0)
Top method regressions (percentages):
118 (6.89 % of base) : 336352.dasm - System.IO.Tests.File_ReadWriteAllText:OutputIsTheSameAsForStreamWriter(System.String,System.Text.Encoding):this (Tier1)
8 (5.97 % of base) : 339694.dasm - System.IO.Tests.RandomAccess_Base`1[long]:<ThrowsArgumentNullExceptionForNullHandle>b__6_0():System.Object:this (Instrumented Tier0)
8 (5.67 % of base) : 273796.dasm - System.Data.Tests.SqlTypes.SqlBinaryTest+<>c__DisplayClass8_0:<CompareTo>b__0():System.Object:this (Tier0)
8 (5.67 % of base) : 273282.dasm - System.Data.Tests.SqlTypes.SqlDateTimeTest+<>c__DisplayClass8_0:<CompareTo>b__0():System.Object:this (Tier0)
8 (5.67 % of base) : 276465.dasm - System.Data.Tests.SqlTypes.SqlDecimalTest+<>c__DisplayClass13_0:<CompareTo>b__0():System.Object:this (Tier0)
8 (5.67 % of base) : 277094.dasm - System.Data.Tests.SqlTypes.SqlStringTest+<>c__DisplayClass14_0:<CompareToArgumentException>b__0():System.Object:this (Tier0)
14 (5.65 % of base) : 359310.dasm - System.Linq.Parallel.ConcatQueryOperator`1+ConcatQueryOperatorResults[int]:.ctor(System.Linq.Parallel.QueryResults`1[int],System.Linq.Parallel.QueryResults`1[int],System.Linq.Parallel.ConcatQueryOperator`1[int],System.Linq.Parallel.QuerySettings,ubyte):this (Instrumented Tier0)
8 (5.56 % of base) : 648374.dasm - System.Text.Json.SourceGeneration.Tests.RealWorldContextTests:<BadCustomConverter_Struct>b__27_1():System.Object:this (Instrumented Tier0)
8 (5.23 % of base) : 603899.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass3_0:<GetCharCount_Invalid>b__2():System.Object:this (Instrumented Tier0)
8 (5.23 % of base) : 603900.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass3_0:<GetCharCount_Invalid>b__3():System.Object:this (Instrumented Tier0)
8 (5.23 % of base) : 603901.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass3_0:<GetCharCount_Invalid>b__4():System.Object:this (Instrumented Tier0)
8 (5.23 % of base) : 603906.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass3_0:<GetCharCount_Invalid>b__9():System.Object:this (Instrumented Tier0)
8 (5.23 % of base) : 604167.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass4_0:<GetChars_Invalid>b__2():System.Object:this (Instrumented Tier0)
8 (5.19 % of base) : 329419.dasm - System.IO.Compression.CompressionStreamUnitTestBase+<>c__DisplayClass18_0:<WrapStreamReturningBadReadValues>b__0():System.Object:this (Instrumented Tier0)
8 (5.19 % of base) : 431160.dasm - System.IO.Tests.ConnectedStreamConformanceTests+<>c__DisplayClass49_0:<ReadTimeout_Expires_Throws>b__0():System.Object:this (Instrumented Tier0)
8 (5.19 % of base) : 604241.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass1_0:<GetByteCount_Invalid>b__3():System.Object:this (Instrumented Tier0)
8 (5.19 % of base) : 604242.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass1_0:<GetByteCount_Invalid>b__4():System.Object:this (Instrumented Tier0)
8 (5.19 % of base) : 604243.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass1_0:<GetByteCount_Invalid>b__5():System.Object:this (Instrumented Tier0)
8 (5.19 % of base) : 604247.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass1_0:<GetByteCount_Invalid>b__9():System.Object:this (Instrumented Tier0)
8 (5.13 % of base) : 603904.dasm - System.Text.Tests.NegativeEncodingTests+<>c__DisplayClass3_0:<GetCharCount_Invalid>b__7():System.Object:this (Instrumented Tier0)
Top method improvements (percentages):
-189 (-42.57 % of base) : 188698.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:this (Instrumented Tier0)
-184 (-35.18 % of base) : 709213.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):this (Instrumented Tier0)
-148 (-31.56 % of base) : 45462.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (Tier1)
-424 (-28.71 % of base) : 154795.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
-424 (-28.71 % of base) : 24122.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
-424 (-28.71 % of base) : 167898.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions):this (Instrumented Tier0)
-37 (-27.61 % of base) : 57142.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte:this (Tier1)
-227 (-27.42 % of base) : 188686.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Synthesized(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.BoundCall (Instrumented Tier0)
-113 (-26.65 % of base) : 82137.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo:.ctor(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.IOperation):this (Instrumented Tier0)
-174 (-25.63 % of base) : 689417.dasm - Microsoft.CodeAnalysis.CSharp.SyntheticBoundNodeFactory:Call(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-69 (-25.09 % of base) : 116549.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedAccessorValueParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberMethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int):this (Instrumented Tier0)
-23 (-24.73 % of base) : 661708.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (Tier1)
-46 (-24.60 % of base) : 129035.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Add(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite):this (Tier1)
-68 (-24.46 % of base) : 190082.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:SetAnalyzedNullability(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState):this (Tier1)
-37 (-23.42 % of base) : 185612.dasm - Microsoft.CodeAnalysis.DocumentInfo:WithDesignTimeOnly(ubyte):Microsoft.CodeAnalysis.DocumentInfo:this (Tier1)
-131 (-23.27 % of base) : 527639.dasm - System.Runtime.Serialization.ReflectionReader:ReflectionReadMember(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.XmlObjectSerializerReadContext,System.Runtime.Serialization.DataContracts.ClassDataContract,byref,int,System.Runtime.Serialization.DataContracts.DataMember[]):this (Instrumented Tier0)
-202 (-22.39 % of base) : 41115.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:WithSemicolonToken(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax:this (Instrumented Tier0)
-73 (-22.32 % of base) : 426374.dasm - Kerberos.NET.Crypto.AESTransformer+<>c__DisplayClass17_0:<GetOrDeriveKey>b__0(System.ReadOnlyMemory`1[ubyte]):System.ReadOnlyMemory`1[ubyte]:this (Instrumented Tier0)
-74 (-21.89 % of base) : 479764.dasm - System.Xml.Schema.XmlSchemaValidator:SendValidationEvent(System.String,System.String[],System.Exception):this (Instrumented Tier0)
-48 (-21.52 % of base) : 448454.dasm - System.Numerics.Tests.QuaternionTests:QuaternionZeroTest():this (Tier0)
librariestestsnotieredcompilation.run.linux.x64.Release.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 130468363 (overridden on cmd)
Total bytes of diff: 130427097 (overridden on cmd)
Total bytes of delta: -41266 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
209 : 4279.dasm (0.72 % of base)
158 : 59259.dasm (0.55 % of base)
94 : 38119.dasm (1.40 % of base)
66 : 207396.dasm (5.95 % of base)
63 : 146899.dasm (0.53 % of base)
61 : 206248.dasm (2.21 % of base)
60 : 170493.dasm (1.52 % of base)
59 : 38092.dasm (1.34 % of base)
58 : 112484.dasm (2.83 % of base)
56 : 178307.dasm (4.58 % of base)
55 : 209081.dasm (2.28 % of base)
55 : 203685.dasm (2.25 % of base)
49 : 259867.dasm (6.86 % of base)
48 : 10549.dasm (2.64 % of base)
48 : 255158.dasm (1.59 % of base)
45 : 50429.dasm (3.21 % of base)
45 : 178057.dasm (3.83 % of base)
44 : 169454.dasm (1.08 % of base)
44 : 94543.dasm (3.04 % of base)
38 : 80260.dasm (2.84 % of base)
Top file improvements (bytes):
-850 : 14370.dasm (-12.12 % of base)
-365 : 111481.dasm (-3.38 % of base)
-364 : 41550.dasm (-10.02 % of base)
-305 : 14375.dasm (-12.22 % of base)
-271 : 265164.dasm (-7.08 % of base)
-232 : 260292.dasm (-5.55 % of base)
-197 : 19655.dasm (-1.05 % of base)
-195 : 7852.dasm (-3.06 % of base)
-193 : 33012.dasm (-9.91 % of base)
-188 : 259183.dasm (-11.35 % of base)
-180 : 259202.dasm (-10.60 % of base)
-178 : 14404.dasm (-14.38 % of base)
-169 : 156054.dasm (-5.93 % of base)
-167 : 105338.dasm (-1.37 % of base)
-167 : 114396.dasm (-1.37 % of base)
-161 : 29781.dasm (-13.27 % of base)
-160 : 14330.dasm (-12.62 % of base)
-158 : 156140.dasm (-6.14 % of base)
-152 : 115776.dasm (-3.98 % of base)
-150 : 115726.dasm (-7.55 % of base)
78 total files with Code Size differences (44 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
209 (0.72 % of base) : 4279.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
158 (0.55 % of base) : 59259.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
94 (1.40 % of base) : 38119.dasm - Microsoft.Extensions.DependencyModel.Tests.DependencyContextBuilderTests:FillsRuntimeLibraryProperties():this (FullOpts)
66 (5.95 % of base) : 207396.dasm - System.Tests.StringTests:IsWhiteSpaceTrueLatin1() (FullOpts)
63 (0.53 % of base) : 146899.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
61 (2.21 % of base) : 206248.dasm - System.Tests.UInt128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (FullOpts)
60 (1.52 % of base) : 170493.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
59 (1.34 % of base) : 38092.dasm - Microsoft.Extensions.DependencyModel.Tests.DependencyContextBuilderTests:FillsCompileLibraryProperties():this (FullOpts)
58 (2.83 % of base) : 112484.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test2():ubyte (FullOpts)
56 (4.58 % of base) : 178307.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
55 (2.28 % of base) : 209081.dasm - System.Tests.UInt32Tests+<Parse_Valid_TestData>d__11:MoveNext():ubyte:this (FullOpts)
55 (2.25 % of base) : 203685.dasm - System.Tests.UInt64Tests+<Parse_Valid_TestData>d__11:MoveNext():ubyte:this (FullOpts)
49 (6.86 % of base) : 259867.dasm - System.Text.Json.Serialization.Tests.JsonElementClass:Initialize():this (FullOpts)
48 (2.64 % of base) : 10549.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindFunctionPointerInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundFunctionPointerInvocation:this (FullOpts)
48 (1.59 % of base) : 255158.dasm - System.Text.Json.Nodes.Tests.ParseTests:Parse_TryGetValue() (FullOpts)
45 (3.21 % of base) : 50429.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:EnforceParameterNotNullOnExit(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState):this (FullOpts)
45 (3.83 % of base) : 178057.dasm - System.Reflection.Emit.Tests.ConstructorBuilderDefineParameter:DefineParameter_MultipleParameters_NullParameterNames():this (FullOpts)
44 (3.04 % of base) : 94543.dasm - System.Data.ConstraintCollection:FinishInitConstraints():this (FullOpts)
44 (1.08 % of base) : 169454.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
38 (2.84 % of base) : 80260.dasm - System.ComponentModel.DataAnnotations.Tests.CompareAttributeTests:InvalidValues():System.Collections.Generic.IEnumerable`1[System.ComponentModel.DataAnnotations.Tests.ValidationAttributeTestBase+TestCase]:this (FullOpts)
Top method improvements (bytes):
-850 (-12.12 % of base) : 14370.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddAlignmentBlockOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode) (FullOpts)
-365 (-3.38 % of base) : 111481.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.covariant.usage001.usage001.Test:MainMethod(System.String[]):int (FullOpts)
-364 (-10.02 % of base) : 41550.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-305 (-12.22 % of base) : 14375.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddBlockIndentationOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-271 (-7.08 % of base) : 265164.dasm - System.Text.Json.Nodes.Tests.JsonNodeTests:JsonTypes_Deserialize() (FullOpts)
-232 (-5.55 % of base) : 260292.dasm - System.Text.Json.Nodes.Tests.ParentPathRootTests:GetPathAndRoot() (FullOpts)
-197 (-1.05 % of base) : 19655.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
-195 (-3.06 % of base) : 7852.dasm - Microsoft.CodeAnalysis.GeneratorDriver:RunGeneratorsCore(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.GeneratorDriverState:this (FullOpts)
-193 (-9.91 % of base) : 33012.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-188 (-11.35 % of base) : 259183.dasm - System.Text.Json.Nodes.Tests.OperatorTests:ImplicitOperators_FromNullValues() (FullOpts)
-180 (-10.60 % of base) : 259202.dasm - System.Text.Json.Nodes.Tests.OperatorTests:ImplicitOperators_FromNullableValues() (FullOpts)
-178 (-14.38 % of base) : 14404.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentBlockFormattingRule:AddLabelIndentationOperation(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode):this (FullOpts)
-169 (-5.93 % of base) : 156054.dasm - Kerberos.NET.Entities.KrbError:Encode(System.Security.Cryptography.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Asn1Tag):this (FullOpts)
-167 (-1.37 % of base) : 114396.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.operate.compound.basic.context02b.context02b.Test:RunTest():System.Object:this (FullOpts)
-167 (-1.37 % of base) : 105338.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.operate.compound.basic.context02c.context02c.Test:RunTest():System.Object:this (FullOpts)
-161 (-13.27 % of base) : 29781.dasm - Microsoft.CodeAnalysis.Workspace:CreateProjectInfo(Microsoft.CodeAnalysis.Project):Microsoft.CodeAnalysis.ProjectInfo (FullOpts)
-160 (-12.62 % of base) : 14330.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.IndentUserSettingsFormattingRule:AddIndentBlockOperations(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Formatting.Rules.IndentBlockOperation],Microsoft.CodeAnalysis.SyntaxNode,byref):this (FullOpts)
-158 (-6.14 % of base) : 156140.dasm - Kerberos.NET.Entities.KrbEncKdcRepPart:Encode(System.Security.Cryptography.Asn1.AsnWriter,System.Security.Cryptography.Asn1.Asn1Tag):this (FullOpts)
-152 (-3.98 % of base) : 115776.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
-150 (-7.55 % of base) : 115726.dasm - System.Formats.Asn1.Tests.Reader.ReadBMPString:TryCopyBMPStringBytes(int,System.String,System.String) (FullOpts)
Top method regressions (percentages):
9 (19.15 % of base) : 263719.dasm - System.Text.Json.Serialization.Tests.DefaultJsonTypeInfoResolverTests+<>c__DisplayClass86_0`1[System.__Canon]:<TestTypeInfoImmutability>b__12():System.Object:this (FullOpts)
3 (7.50 % of base) : 122845.dasm - System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
49 (6.86 % of base) : 259867.dasm - System.Text.Json.Serialization.Tests.JsonElementClass:Initialize():this (FullOpts)
12 (6.82 % of base) : 226154.dasm - System.Security.Cryptography.Xml.Transform:AcceptsType(System.Type):ubyte:this (FullOpts)
66 (5.95 % of base) : 207396.dasm - System.Tests.StringTests:IsWhiteSpaceTrueLatin1() (FullOpts)
8 (5.93 % of base) : 115544.dasm - System.Formats.Asn1.AsnWriter:WriteGeneralizedTime(System.DateTimeOffset,ubyte,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
16 (5.80 % of base) : 169007.dasm - System.Xml.Xsl.XmlQueryTypeFactory:AddItemToChoice(System.Collections.Generic.List`1[System.Xml.Xsl.XmlQueryType],System.Xml.Xsl.XmlQueryType) (FullOpts)
56 (4.58 % of base) : 178307.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
13 (4.10 % of base) : 125415.dasm - System.IO.Tests.DirectoryInfo_CreateSubDirectory:PathAlreadyExistsAsDirectory(int):this (FullOpts)
45 (3.83 % of base) : 178057.dasm - System.Reflection.Emit.Tests.ConstructorBuilderDefineParameter:DefineParameter_MultipleParameters_NullParameterNames():this (FullOpts)
3 (3.80 % of base) : 259994.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
21 (3.66 % of base) : 123548.dasm - System.IO.Tests.FileStream_ctor_options:WhenDiskIsFullTheErrorMessageContainsAllDetails(int):this (FullOpts)
21 (3.66 % of base) : 125772.dasm - System.IO.Tests.FileStream_ctor_options:WhenDiskIsFullTheErrorMessageContainsAllDetails(int):this (FullOpts)
6 (3.33 % of base) : 20665.dasm - Newtonsoft.Json.JsonReader:Pop():int:this (FullOpts)
45 (3.21 % of base) : 50429.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:EnforceParameterNotNullOnExit(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState):this (FullOpts)
4 (3.17 % of base) : 124128.dasm - System.IO.Tests.AllGetSetAttributes+<>c__DisplayClass2_0:<SetAttributes_MissingFile>b__0():this (FullOpts)
15 (3.12 % of base) : 25390.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:BindStandardBinop(int,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.Expr):Microsoft.CSharp.RuntimeBinder.Semantics.Expr:this (FullOpts)
3 (3.12 % of base) : 259869.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
44 (3.04 % of base) : 94543.dasm - System.Data.ConstraintCollection:FinishInitConstraints():this (FullOpts)
2 (3.03 % of base) : 66679.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:TryAdd(int,int):ubyte:this (FullOpts)
Top method improvements (percentages):
-61 (-47.66 % of base) : 115738.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
-26 (-42.62 % of base) : 257231.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-26 (-42.62 % of base) : 265030.dasm - System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-26 (-42.62 % of base) : 255558.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-47 (-36.43 % of base) : 222109.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass1_0:<AddEntryArgumentValidation>b__6():this (FullOpts)
-47 (-32.64 % of base) : 222110.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass1_0:<AddEntryArgumentValidation>b__7():this (FullOpts)
-135 (-31.62 % of base) : 42641.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-135 (-31.62 % of base) : 48272.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithDefaultNamespace(System.String):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-148 (-31.56 % of base) : 3279.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-139 (-31.38 % of base) : 42522.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-139 (-31.38 % of base) : 48152.dasm - Microsoft.CodeAnalysis.ProjectInfo:WithVersion(Microsoft.CodeAnalysis.VersionStamp):Microsoft.CodeAnalysis.ProjectInfo:this (FullOpts)
-43 (-29.45 % of base) : 222065.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__2():this (FullOpts)
-43 (-29.45 % of base) : 222066.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__3():this (FullOpts)
-38 (-26.57 % of base) : 222103.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass1_0:<AddEntryArgumentValidation>b__0():this (FullOpts)
-41 (-26.28 % of base) : 222104.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass1_0:<AddEntryArgumentValidation>b__1():this (FullOpts)
-47 (-26.26 % of base) : 222108.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass1_0:<AddEntryArgumentValidation>b__5():this (FullOpts)
-43 (-25.00 % of base) : 222062.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__0():this (FullOpts)
-43 (-25.00 % of base) : 222064.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__1():this (FullOpts)
-43 (-24.71 % of base) : 222025.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass23_0:<UnsupportedRevocationReasons>b__0():this (FullOpts)
-43 (-24.71 % of base) : 222029.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass23_0:<UnsupportedRevocationReasons>b__3():this (FullOpts)
realworld.run.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13194158 (overridden on cmd)
Total bytes of diff: 13188157 (overridden on cmd)
Total bytes of delta: -6001 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
303 : 6532.dasm (0.34 % of base)
294 : 2503.dasm (3.05 % of base)
209 : 16032.dasm (0.72 % of base)
63 : 14098.dasm (0.53 % of base)
53 : 15325.dasm (0.69 % of base)
52 : 972.dasm (6.21 % of base)
44 : 22678.dasm (0.62 % of base)
39 : 20615.dasm (0.35 % of base)
36 : 20489.dasm (1.40 % of base)
35 : 23800.dasm (2.46 % of base)
31 : 25872.dasm (2.04 % of base)
25 : 23578.dasm (0.47 % of base)
25 : 30408.dasm (1.33 % of base)
24 : 22073.dasm (0.78 % of base)
24 : 22261.dasm (1.11 % of base)
24 : 24094.dasm (1.02 % of base)
24 : 19736.dasm (1.20 % of base)
24 : 21379.dasm (0.67 % of base)
19 : 27563.dasm (1.30 % of base)
18 : 22608.dasm (0.51 % of base)
Top file improvements (bytes):
-197 : 13236.dasm (-25.22 % of base)
-193 : 1787.dasm (-9.91 % of base)
-146 : 25684.dasm (-8.63 % of base)
-135 : 25156.dasm (-2.20 % of base)
-131 : 24520.dasm (-6.11 % of base)
-130 : 4540.dasm (-0.70 % of base)
-127 : 23613.dasm (-23.69 % of base)
-124 : 19705.dasm (-2.58 % of base)
-118 : 15460.dasm (-3.60 % of base)
-103 : 24187.dasm (-1.78 % of base)
-95 : 13911.dasm (-3.78 % of base)
-91 : 15678.dasm (-13.34 % of base)
-87 : 19063.dasm (-14.01 % of base)
-83 : 25446.dasm (-11.13 % of base)
-81 : 26079.dasm (-4.99 % of base)
-80 : 28404.dasm (-2.06 % of base)
-79 : 23885.dasm (-1.41 % of base)
-79 : 12974.dasm (-13.41 % of base)
-72 : 24528.dasm (-14.66 % of base)
-72 : 26148.dasm (-20.75 % of base)
71 total files with Code Size differences (41 improved, 30 regressed), 20 unchanged.
Top method regressions (bytes):
303 (0.34 % of base) : 6532.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
294 (3.05 % of base) : 2503.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
209 (0.72 % of base) : 16032.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
63 (0.53 % of base) : 14098.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
53 (0.69 % of base) : 15325.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
52 (6.21 % of base) : 972.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
44 (0.62 % of base) : 22678.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceCustomEventSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.EventDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
39 (0.35 % of base) : 20615.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
36 (1.40 % of base) : 20489.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol:GetAccessorDeclarations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref,byref,byref) (FullOpts)
35 (2.46 % of base) : 23800.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
31 (2.04 % of base) : 25872.dasm - Microsoft.CodeAnalysis.CSharp.Binder+QueryTranslationState:AddRangeVariable(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol:this (FullOpts)
25 (0.47 % of base) : 23578.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
25 (1.33 % of base) : 30408.dasm - System.Management.Automation.ArgumentTypeConverterAttribute:Transform(System.Management.Automation.EngineIntrinsics,System.Object,ubyte,ubyte):System.Object:this (FullOpts)
24 (1.02 % of base) : 24094.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalAccessReceiver(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
24 (1.20 % of base) : 19736.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:EnforceParameterNotNullOnExit(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState):this (FullOpts)
24 (0.78 % of base) : 22073.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceDestructorSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.DestructorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
24 (0.67 % of base) : 21379.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolComplex:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
24 (1.11 % of base) : 22261.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
19 (1.30 % of base) : 27563.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:GenerateDisposeCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
18 (0.89 % of base) : 18997.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (FullOpts)
Top method improvements (bytes):
-197 (-25.22 % of base) : 13236.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-193 (-9.91 % of base) : 1787.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-146 (-8.63 % of base) : 25684.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass449_0:<VisitSwitchExpressionCore>g__convertArms|0(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-135 (-2.20 % of base) : 25156.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitForEachExpression(Microsoft.CodeAnalysis.CSharp.BoundForEachStatement):this (FullOpts)
-131 (-6.11 % of base) : 24520.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
-130 (-0.70 % of base) : 4540.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-127 (-23.69 % of base) : 23613.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-124 (-2.58 % of base) : 19705.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-118 (-3.60 % of base) : 15460.dasm - Microsoft.ML.Benchmarks.StochasticDualCoordinateAscentClassifierBench:Train(System.String):Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.Data.MulticlassPredictionTransformer`1[Microsoft.ML.Trainers.MaximumEntropyModelParameters]]:this (FullOpts)
-103 (-1.78 % of base) : 24187.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalAccess(Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess,byref):this (FullOpts)
-95 (-3.78 % of base) : 13911.dasm - Microsoft.ML.Benchmarks.StochasticDualCoordinateAscentClassifierBench:TrainSentiment():this (FullOpts)
-91 (-13.34 % of base) : 15678.dasm - Microsoft.ML.StandardTrainersCatalog:SdcaMaximumEntropy(Microsoft.ML.MulticlassClassificationCatalog+MulticlassClassificationTrainers,Microsoft.ML.Trainers.SdcaMaximumEntropyMulticlassTrainer+Options):Microsoft.ML.Trainers.SdcaMaximumEntropyMulticlassTrainer (FullOpts)
-87 (-14.01 % of base) : 19063.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:LookupDeclaredTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-83 (-11.13 % of base) : 25446.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-81 (-4.99 % of base) : 26079.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDelegateCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-80 (-2.06 % of base) : 28404.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AnonymousTypeManager:AssignTemplatesNamesAndCompile(Microsoft.CodeAnalysis.CSharp.MethodCompiler,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
-79 (-1.41 % of base) : 23885.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalOperatorCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
-79 (-13.41 % of base) : 12974.dasm - Microsoft.ML.Trainers.SdcaBinaryTrainerBase`1[System.__Canon]:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Trainers.SdcaBinaryTrainerBase`1+BinaryOptionsBase[System.__Canon],Microsoft.ML.Trainers.ISupportSdcaClassificationLoss,ubyte):this (FullOpts)
-72 (-20.75 % of base) : 26148.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-72 (-14.66 % of base) : 24528.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
Top method regressions (percentages):
52 (6.21 % of base) : 972.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
294 (3.05 % of base) : 2503.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
12 (2.89 % of base) : 20457.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol:CreateConstructorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.ConstructorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceConstructorSymbol (FullOpts)
16 (2.54 % of base) : 25771.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<Scan>g__enforceMemberNotNullOnMember|61_2(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.String):this (FullOpts)
35 (2.46 % of base) : 23800.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalOperator(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
31 (2.04 % of base) : 25872.dasm - Microsoft.CodeAnalysis.CSharp.Binder+QueryTranslationState:AddRangeVariable(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol:this (FullOpts)
15 (1.96 % of base) : 24259.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindThis(Microsoft.CodeAnalysis.CSharp.Syntax.ThisExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundThisReference:this (FullOpts)
4 (1.96 % of base) : 26475.dasm - Microsoft.CodeAnalysis.Emit.EmitOptions:.ctor(Microsoft.CodeAnalysis.Emit.EmitOptions):this (FullOpts)
12 (1.91 % of base) : 12721.dasm - Microsoft.ML.Data.RowToRowTransformerBase+MapperBase:Microsoft.ML.Data.IRowMapper.CreateGetters(Microsoft.ML.DataViewRow,System.Func`2[int,ubyte],byref):System.Delegate[]:this (FullOpts)
12 (1.41 % of base) : 5450.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
36 (1.40 % of base) : 20489.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol:GetAccessorDeclarations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref,byref,byref) (FullOpts)
25 (1.33 % of base) : 30408.dasm - System.Management.Automation.ArgumentTypeConverterAttribute:Transform(System.Management.Automation.EngineIntrinsics,System.Object,ubyte,ubyte):System.Object:this (FullOpts)
19 (1.30 % of base) : 27563.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:GenerateDisposeCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
24 (1.20 % of base) : 19736.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:EnforceParameterNotNullOnExit(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState):this (FullOpts)
24 (1.11 % of base) : 22261.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol:CreateUserDefinedOperatorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.OperatorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourceUserDefinedOperatorSymbol (FullOpts)
24 (1.02 % of base) : 24094.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalAccessReceiver(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (1.00 % of base) : 24849.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckParenthesizedLambdaParameters(Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
8 (0.98 % of base) : 25653.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ReportPatternMemberLookupDiagnostics(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.LookupResult,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
18 (0.89 % of base) : 18997.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (FullOpts)
10 (0.88 % of base) : 5884.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader+typeDefReader@1688:Invoke(int):FSharp.Compiler.AbstractIL.IL+ILTypeDef:this (FullOpts)
Top method improvements (percentages):
-197 (-25.22 % of base) : 13236.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-127 (-23.69 % of base) : 23613.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitObjectElementInitializer>g__setAnalyzedNullability|169_1(Microsoft.CodeAnalysis.CSharp.BoundAssignmentOperator,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbol],ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-72 (-20.75 % of base) : 26148.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitDelegateCreationExpression>g__visitMethodGroupArgument|278_2(Microsoft.CodeAnalysis.CSharp.BoundDelegateCreationExpression,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup):System.Action`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
-25 (-19.38 % of base) : 14766.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-9 (-19.15 % of base) : 13636.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
-20 (-16.39 % of base) : 3236.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-37 (-15.95 % of base) : 19820.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:RecordImportDependencies(Microsoft.CodeAnalysis.CSharp.Syntax.UsingDirectiveSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
-72 (-14.66 % of base) : 24528.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass167_0:<VisitObjectCreationExpressionBase>b__5(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState:this (FullOpts)
-40 (-14.49 % of base) : 19212.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:RecordImportInternal(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):this (FullOpts)
-87 (-14.01 % of base) : 19063.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingAssemblySymbol:LookupDeclaredTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-79 (-13.41 % of base) : 12974.dasm - Microsoft.ML.Trainers.SdcaBinaryTrainerBase`1[System.__Canon]:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Trainers.SdcaBinaryTrainerBase`1+BinaryOptionsBase[System.__Canon],Microsoft.ML.Trainers.ISupportSdcaClassificationLoss,ubyte):this (FullOpts)
-91 (-13.34 % of base) : 15678.dasm - Microsoft.ML.StandardTrainersCatalog:SdcaMaximumEntropy(Microsoft.ML.MulticlassClassificationCatalog+MulticlassClassificationTrainers,Microsoft.ML.Trainers.SdcaMaximumEntropyMulticlassTrainer+Options):Microsoft.ML.Trainers.SdcaMaximumEntropyMulticlassTrainer (FullOpts)
-58 (-13.30 % of base) : 24235.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:ExactTypeArgumentInference(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):this (FullOpts)
-21 (-12.14 % of base) : 14702.dasm - System.Formats.Asn1.AsnDecoder:ReadObjectIdentifier(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.String (FullOpts)
-28 (-11.91 % of base) : 27107.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-14 (-11.86 % of base) : 13452.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
-10 (-11.63 % of base) : 2378.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-47 (-11.44 % of base) : 14846.dasm - System.Formats.Asn1.AsnDecoder:ReadEncodedValue(System.ReadOnlySpan`1[ubyte],int,byref,byref,byref):System.Formats.Asn1.Asn1Tag (FullOpts)
-83 (-11.13 % of base) : 25446.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitCollectionElementInitializer>g__setUpdatedSymbol|171_0(Microsoft.CodeAnalysis.CSharp.BoundCollectionElementInitializer,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate,ubyte):System.Action`2[int,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]:this (FullOpts)
-38 (-10.41 % of base) : 25350.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitDiscardExpression(Microsoft.CodeAnalysis.CSharp.BoundDiscardExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
smoke_tests.nativeaot.linux.x64.checked.mch
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 4198166 (overridden on cmd)
Total bytes of diff: 4197825 (overridden on cmd)
Total bytes of delta: -341 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
26 : 9130.dasm (15.76 % of base)
10 : 9097.dasm (2.00 % of base)
10 : 6386.dasm (0.54 % of base)
9 : 17725.dasm (3.12 % of base)
9 : 24194.dasm (3.12 % of base)
9 : 22894.dasm (3.10 % of base)
9 : 1278.dasm (3.12 % of base)
9 : 20708.dasm (3.12 % of base)
8 : 20007.dasm (2.22 % of base)
4 : 9018.dasm (0.53 % of base)
3 : 6903.dasm (0.96 % of base)
2 : 18210.dasm (0.57 % of base)
2 : 18222.dasm (1.45 % of base)
2 : 21198.dasm (0.57 % of base)
2 : 2185.dasm (1.45 % of base)
2 : 2175.dasm (0.57 % of base)
2 : 24688.dasm (0.57 % of base)
2 : 3743.dasm (0.53 % of base)
2 : 6394.dasm (0.26 % of base)
2 : 21204.dasm (1.45 % of base)
Top file improvements (bytes):
-32 : 8285.dasm (-12.31 % of base)
-28 : 2784.dasm (-12.23 % of base)
-22 : 20050.dasm (-13.17 % of base)
-18 : 21508.dasm (-2.41 % of base)
-18 : 24978.dasm (-2.56 % of base)
-18 : 18536.dasm (-2.56 % of base)
-18 : 18524.dasm (-2.41 % of base)
-18 : 21521.dasm (-2.56 % of base)
-18 : 24964.dasm (-2.41 % of base)
-18 : 3285.dasm (-2.41 % of base)
-18 : 3294.dasm (-2.56 % of base)
-10 : 9155.dasm (-12.82 % of base)
-9 : 19662.dasm (-8.18 % of base)
-9 : 2755.dasm (-8.18 % of base)
-9 : 4682.dasm (-8.18 % of base)
-9 : 22659.dasm (-8.18 % of base)
-9 : 26140.dasm (-8.18 % of base)
-9 : 6330.dasm (-2.69 % of base)
-9 : 6383.dasm (-3.10 % of base)
-8 : 4918.dasm (-7.27 % of base)
48 total files with Code Size differences (27 improved, 21 regressed), 20 unchanged.
Top method regressions (bytes):
26 (15.76 % of base) : 9130.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
10 (0.54 % of base) : 6386.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
10 (2.00 % of base) : 9097.dasm - System.MemoryExtensions:ToLowerInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
9 (3.12 % of base) : 17725.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.12 % of base) : 24194.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.10 % of base) : 22894.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.12 % of base) : 1278.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.12 % of base) : 20708.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
8 (2.22 % of base) : 20007.dasm - PInvokeTests.Program:InlineArrayTest(byref,byref):ubyte (FullOpts)
4 (0.53 % of base) : 9018.dasm - System.Uri:GetHostViaCustomSyntax():this (FullOpts)
3 (0.96 % of base) : 6903.dasm - System.Linq.Expressions.Interpreter.EnterTryFaultInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
2 (0.26 % of base) : 6394.dasm - Internal.Runtime.TypeLoader.TypeBuilder:PrepareType(Internal.TypeSystem.TypeDesc):this (FullOpts)
2 (0.53 % of base) : 3743.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Open(System.String,int,int,ubyte,byref,System.Func`4[Interop+ErrorInfo,int,System.String,System.Exception]):Microsoft.Win32.SafeHandles.SafeFileHandle (FullOpts)
2 (1.45 % of base) : 18222.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (1.45 % of base) : 2185.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (1.45 % of base) : 21204.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (1.45 % of base) : 24697.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (0.57 % of base) : 18210.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
2 (0.57 % of base) : 21198.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
2 (0.57 % of base) : 2175.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
Top method improvements (bytes):
-32 (-12.31 % of base) : 8285.dasm - System.Globalization.TimeSpanParse:TryParseExactTimeSpan(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.IFormatProvider,int,byref):ubyte (FullOpts)
-28 (-12.23 % of base) : 2784.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-22 (-13.17 % of base) : 20050.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-18 (-2.56 % of base) : 24978.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.56 % of base) : 18536.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.56 % of base) : 21521.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.56 % of base) : 3294.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.41 % of base) : 21508.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.41 % of base) : 18524.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.41 % of base) : 24964.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-18 (-2.41 % of base) : 3285.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-10 (-12.82 % of base) : 9155.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-9 (-3.10 % of base) : 6383.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-9 (-8.18 % of base) : 19662.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 2755.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 22659.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 26140.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 4682.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-2.69 % of base) : 6330.dasm - System.Linq.Expressions.Interpreter.ByRefNewInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-8 (-7.27 % of base) : 4918.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.Reflection.CustomAttributeNamedArgument]:MoveNext():ubyte:this (FullOpts)
Top method regressions (percentages):
26 (15.76 % of base) : 9130.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:CreateDirectoryHandle(System.String,ubyte):long:this (FullOpts)
9 (3.12 % of base) : 17725.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.12 % of base) : 24194.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.12 % of base) : 1278.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.12 % of base) : 20708.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
9 (3.10 % of base) : 22894.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
8 (2.22 % of base) : 20007.dasm - PInvokeTests.Program:InlineArrayTest(byref,byref):ubyte (FullOpts)
10 (2.00 % of base) : 9097.dasm - System.MemoryExtensions:ToLowerInvariant(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):int (FullOpts)
2 (1.45 % of base) : 18222.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (1.45 % of base) : 2185.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (1.45 % of base) : 21204.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
2 (1.45 % of base) : 24697.dasm - System.Text.EncoderReplacementFallbackBuffer:Fallback(ushort,int):ubyte:this (FullOpts)
3 (0.96 % of base) : 6903.dasm - System.Linq.Expressions.Interpreter.EnterTryFaultInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
2 (0.57 % of base) : 18210.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
2 (0.57 % of base) : 21198.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
2 (0.57 % of base) : 2175.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
2 (0.57 % of base) : 24688.dasm - System.Text.Encoding:GetByteCountWithFallback(ulong,int,int,System.Text.EncoderNLS):int:this (FullOpts)
10 (0.54 % of base) : 6386.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
4 (0.53 % of base) : 9018.dasm - System.Uri:GetHostViaCustomSyntax():this (FullOpts)
2 (0.53 % of base) : 3743.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Open(System.String,int,int,ubyte,byref,System.Func`4[Interop+ErrorInfo,int,System.String,System.Exception]):Microsoft.Win32.SafeHandles.SafeFileHandle (FullOpts)
Top method improvements (percentages):
-4 (-13.79 % of base) : 10866.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
-22 (-13.17 % of base) : 20050.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-10 (-12.82 % of base) : 9155.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-32 (-12.31 % of base) : 8285.dasm - System.Globalization.TimeSpanParse:TryParseExactTimeSpan(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],System.IFormatProvider,int,byref):ubyte (FullOpts)
-28 (-12.23 % of base) : 2784.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-9.20 % of base) : 19745.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
-8 (-9.20 % of base) : 26220.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
-8 (-9.20 % of base) : 22747.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
-8 (-9.20 % of base) : 7814.dasm - System.ConsolePal:CheckTerminalSettingsInvalidated() (FullOpts)
-9 (-8.18 % of base) : 19662.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 2755.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 22659.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 26140.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-9 (-8.18 % of base) : 4682.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-5 (-7.46 % of base) : 6259.dasm - System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-8 (-7.27 % of base) : 4918.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.Reflection.CustomAttributeNamedArgument]:MoveNext():ubyte:this (FullOpts)
-3 (-4.29 % of base) : 6652.dasm - System.Linq.Expressions.Interpreter.InterpretedFrame:Dup():this (FullOpts)
-9 (-3.10 % of base) : 6383.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-9 (-2.69 % of base) : 6330.dasm - System.Linq.Expressions.Interpreter.ByRefNewInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-18 (-2.56 % of base) : 24978.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
Diffs are based on 2,262,707 contexts (930,876 MinOpts, 1,331,831 FullOpts).
MISSED contexts: base: 3,256 (0.14%), diff: 3,258 (0.14%)
Overall (-803,772 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch
11,178,360
-2,736
benchmarks.run_pgo.osx.arm64.checked.mch
34,671,272
-41,660
benchmarks.run_tiered.osx.arm64.checked.mch
15,557,888
-13,832
coreclr_tests.run.osx.arm64.checked.mch
485,381,240
-229,068
libraries.crossgen2.osx.arm64.checked.mch
55,622,104
-12,124
libraries.pmi.osx.arm64.checked.mch
79,954,540
-11,800
libraries_tests.run.osx.arm64.Release.mch
312,899,776
-453,244
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
160,911,076
-30,976
realworld.run.osx.arm64.checked.mch
15,072,368
-8,332
MinOpts (-652,688 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch
16,473,280
-37,300
benchmarks.run_tiered.osx.arm64.checked.mch
11,515,076
-13,296
coreclr_tests.run.osx.arm64.checked.mch
332,306,456
-173,632
libraries_tests.run.osx.arm64.Release.mch
203,940,504
-423,000
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
13,137,528
-1,008
realworld.run.osx.arm64.checked.mch
568,404
-4,452
FullOpts (-151,084 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch
11,177,824
-2,736
benchmarks.run_pgo.osx.arm64.checked.mch
18,197,992
-4,360
benchmarks.run_tiered.osx.arm64.checked.mch
4,042,812
-536
coreclr_tests.run.osx.arm64.checked.mch
153,074,784
-55,436
libraries.crossgen2.osx.arm64.checked.mch
55,620,476
-12,124
libraries.pmi.osx.arm64.checked.mch
79,833,412
-11,800
libraries_tests.run.osx.arm64.Release.mch
108,959,272
-30,244
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
147,773,548
-29,968
realworld.run.osx.arm64.checked.mch
14,503,964
-3,880
Example diffs
benchmarks.run.osx.arm64.checked.mch
-16 (-14.29%) : 11697.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
@@ -8,79 +8,73 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
-; V02 loc0 [V02 ] ( 1, 1 ) int -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 1, 1 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.StandardFormat>
;# 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 "impAppendStmt" <System.Span`1[ubyte]>
-; V06 tmp2 [V06,T02] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V08 tmp4 [V08,T05] ( 2, 2 ) short -> x1 single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T06] ( 2, 2 ) long -> x2 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
-;* V11 tmp7 [V11,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
+; V06 tmp2 [V06,T00] ( 4, 6 ) ref -> x5 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T03] ( 2, 2 ) short -> x1 single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T04] ( 2, 2 ) long -> x4 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
+;* V11 tmp7 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T07] ( 3, 2 ) byref -> x3 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T08] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T03] ( 3, 6 ) struct ( 8) [fp+0x30] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V17 tmp13 [V17,T00] ( 4, 8 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
-; V18 tmp14 [V18,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
+; V14 tmp10 [V14,T05] ( 3, 2 ) byref -> x2 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp11 [V15,T06] ( 3, 2 ) int -> x3 "field V07._length (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T01] ( 3, 6 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M7377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x38] // [V02 loc0]
- stp xzr, xzr, [fp, #0x10] // [V18 tmp14], [V18 tmp14+0x08]
- ;; size=16 bbWeight=1 PerfScore 3.50
+ str xzr, [fp, #0x18] // [V02 loc0]
+ mov x4, x2
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M7377_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
- cbnz x0, G_M7377_IG04
+ ldr x5, [x0, #0x08]
+ ; gcrRegs +[x5]
+ cbnz x5, G_M7377_IG04
;; size=8 bbWeight=1 PerfScore 4.00
G_M7377_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x3, xzr
- ; byrRegs +[x3]
- mov w5, wzr
+ ; gcrRegs -[x0 x5]
+ mov x2, xzr
+ ; byrRegs +[x2]
+ mov w3, wzr
b G_M7377_IG05
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x3]
- add x3, x0, #16
- ; byrRegs +[x3]
- ldr w5, [x0, #0x08]
+G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0020 {x5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x5]
+ ; byrRegs -[x2]
+ add x2, x5, #16
+ ; byrRegs +[x2]
+ ldr w3, [x5, #0x08]
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- ; gcrRegs -[x0]
- strh w1, [fp, #0x20] // [V17 tmp13]
- str x2, [fp, #0x28] // [V17 tmp13+0x08]
- str x3, [fp, #0x10] // [V18 tmp14]
- str w5, [fp, #0x18] // [V18 tmp14+0x08]
- strb wzr, [fp, #0x30] // [V16 tmp12]
- strb wzr, [fp, #0x31] // [V16 tmp12+0x01]
- ldp x0, x1, [fp, #0x20] // [V17 tmp13], [V17 tmp13+0x08]
- ldp x2, x3, [fp, #0x10] // [V18 tmp14], [V18 tmp14+0x08]
- ; byrRegs -[x3] +[x2]
- ldrh w5, [fp, #0x30] // [V16 tmp12]
- add x4, fp, #56 // [V02 loc0]
+G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
+ ; gcrRegs -[x5]
+ strb wzr, [fp, #0x10] // [V16 tmp12]
+ strb wzr, [fp, #0x11] // [V16 tmp12+0x01]
+ ldrh w5, [fp, #0x10] // [V16 tmp12]
+ mov w0, w1
+ mov x1, x4
+ add x4, fp, #24 // [V02 loc0]
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #1 LSL #32
ldr x6, [x6]
blr x6
; byrRegs -[x2]
- ;; size=60 bbWeight=1 PerfScore 20.00
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M7377_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 16, PerfScore 32.25, instruction count 28, allocated bytes for code 112 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 12, PerfScore 22.75, instruction count 24, allocated bytes for code 96 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -99,7 +93,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-20 (-14.29%) : 19404.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 13, 13 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T03] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,12 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp18 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T00] ( 11, 22 ) ref -> x4 single-def "argument with side effect"
-; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V25 tmp21 [V25,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V26 tmp22 [V26,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V27 tmp23 [V27,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V28 tmp24 [V28,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V29 tmp25 [V29,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V30 tmp26 [V30,T12] ( 2, 4 ) int -> x8 "argument with side effect"
-; V31 tmp27 [V31,T13] ( 2, 4 ) int -> x9 "argument with side effect"
-; V32 tmp28 [V32,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V23 tmp19 [V23,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V25 tmp21 [V25,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V26 tmp22 [V26,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V27 tmp23 [V27,T09] ( 2, 4 ) int -> x8 "argument with side effect"
+; V28 tmp24 [V28,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -51,37 +47,30 @@ G_M55914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M55914_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs +[x0-x3]
- mov x4, x0
- ; gcrRegs +[x4]
- ldp x5, x6, [x4, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x4, #0x30]
- ldrb w8, [x4, #0x31]
- ldrb w9, [x4, #0x32]
- ldr x10, [x4, #0x50]
- ; gcrRegs +[x10]
- ;; size=24 bbWeight=1 PerfScore 16.50
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=20 bbWeight=1 PerfScore 16.00
G_M55914_IG03: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x4, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x4, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M55914_IG04: ; bbWeight=1, extend
- ldrb w11, [x4, #0x33]
- strb w11, [sp, #0x18] // [V04 OutArgs+0x18]
- ldr x11, [x4, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V04 OutArgs+0x20]
- ldr x4, [x4, #0x18]
- str x4, [sp, #0x28] // [V04 OutArgs+0x28]
- mov x4, x5
- mov x5, x6
- mov w6, w7
- ; gcrRegs -[x6]
- mov w7, w8
- strb w9, [sp] // [V04 OutArgs]
- str x10, [sp, #0x08] // [V04 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ strb w10, [sp, #0x18] // [V04 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V04 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V04 OutArgs+0x28]
+ strb w8, [sp] // [V04 OutArgs]
+ str x9, [sp, #0x08] // [V04 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp18]
str x8, [sp, #0x10] // [V04 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -89,15 +78,15 @@ G_M55914_IG04: ; bbWeight=1, extend
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x10-x11]
- ;; size=76 bbWeight=1 PerfScore 23.00
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M55914_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 140, prolog size 12, PerfScore 53.00, instruction count 35, allocated bytes for code 140 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 50.50, instruction count 30, allocated bytes for code 120 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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)
-16 (-13.33%) : 24121.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
@@ -8,63 +8,57 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Span.IndexerBench>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <Span.IndexerBench>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V03 tmp2 [V03,T01] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V07 tmp6 [V07,T06] ( 3, 2 ) byref -> x1 "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> x2 "field V04._length (fldOffset=0x8)" P-INDEP
-; V09 tmp8 [V09,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V10 tmp9 [V10,T00] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V11 tmp10 [V11,T05] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
-; V12 cse0 [V12,T04] ( 4, 4 ) ref -> x4 "CSE - aggressive"
+; V07 tmp6 [V07,T05] ( 3, 2 ) byref -> x0 "field V04._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp7 [V08,T06] ( 3, 2 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP
+; V09 tmp8 [V09,T01] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V10 tmp9 [V10,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
+; V11 cse0 [V11,T03] ( 4, 4 ) ref -> x4 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M29415_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- str xzr, [fp, #0x10] // [V10 tmp9]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M29415_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x4, [x0, #0x08]
; gcrRegs +[x4]
- mov x0, x4
- cbnz x0, G_M29415_IG04
+ mov x2, x4
+ ; gcrRegs +[x2]
+ cbnz x2, G_M29415_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M29415_IG03: ; bbWeight=0.50, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x1, xzr
- ; byrRegs +[x1]
- mov w2, wzr
+ ; gcrRegs -[x0 x2]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
b G_M29415_IG05
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0011 {x0 x4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x1]
- add x1, x0, #16
- ; byrRegs +[x1]
- ldr w2, [x0, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, byref, isz
- ; gcrRegs -[x0]
- str x1, [fp, #0x10] // [V10 tmp9]
- str w2, [fp, #0x18] // [V10 tmp9+0x08]
- mov x0, x4
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- ; byrRegs -[x1]
- cmp w1, #0
- bls G_M29415_IG07
- add x2, x0, #16
- ; byrRegs +[x2]
- ldp x0, x1, [fp, #0x10] // [V10 tmp9], [V10 tmp9+0x08]
- ; gcrRegs -[x0]
+G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0014 {x2 x4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2]
+ ; byrRegs -[x0]
+ add x0, x2, #16
; byrRegs +[x0]
+ ldr w1, [x2, #0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs -[x2]
+ mov x2, x4
+ ; gcrRegs +[x2]
+ ldr w3, [x2, #0x08]
+ cmp w3, #0
+ bls G_M29415_IG07
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
ldr w4, [x4, #0x08]
; gcrRegs -[x4]
mov w3, wzr
@@ -74,9 +68,9 @@ G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, by
ldr x5, [x5]
blr x5
; byrRegs -[x0 x2]
- ;; size=60 bbWeight=1 PerfScore 19.50
+ ;; size=48 bbWeight=1 PerfScore 14.50
G_M29415_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -84,7 +78,7 @@ G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 12, PerfScore 31.25, instruction count 30, allocated bytes for code 120 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 25.25, instruction count 26, allocated bytes for code 104 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -95,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +97,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+8 (+1.56%) : 13874.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
+; V00 this [V00,T04] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T22] ( 5, 4 ) byref -> [fp+0x10] EH-live single-def
+; V02 arg2 [V02,T22] ( 5, 4 ) byref -> [fp+0x18] EH-live single-def
; V03 arg3 [V03,T19] ( 3, 10 ) int -> x21 single-def
-; V04 arg4 [V04,T09] ( 6, 32 ) byref -> x20 single-def
+; V04 arg4 [V04,T08] ( 6, 32 ) byref -> x20 single-def
; V05 arg5 [V05,T23] ( 3, 4 ) byref -> x23 single-def
-; V06 loc0 [V06,T10] ( 8, 28 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
-; V07 loc1 [V07,T15] ( 3, 20 ) ubyte -> x25
+; V06 loc0 [V06,T10] ( 7, 24 ) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V07 loc1 [V07,T14] ( 3, 20 ) ubyte -> x25
;* V08 loc2 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc3 [V09,T28] ( 3, 2 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 4, 24 ) int -> x2 "Inline return value spill temp"
-; V12 tmp2 [V12,T08] ( 3, 36 ) int -> x0 "Inlining Arg"
+; V11 tmp1 [V11,T11] ( 4, 24 ) int -> x2 "Inline return value spill temp"
+; V12 tmp2 [V12,T07] ( 3, 36 ) int -> x0 "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V14 tmp4 [V14,T25] ( 3, 6 ) int -> x2 "Inline return value spill temp"
; V15 tmp5 [V15,T18] ( 3, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V16 tmp6 [V16,T24] ( 3, 6 ) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V16 tmp6 [V16,T24] ( 3, 6 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T16] ( 4, 16 ) int -> x2 "Inlining Arg"
; V18 tmp8 [V18,T17] ( 3, 14 ) ubyte -> x25 "Inline return value spill temp"
-; V19 tmp9 [V19,T11] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
-; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x1 "Inline stloc first use temp"
-; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V19 tmp9 [V19,T09] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
+; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x5 "Inline stloc first use temp"
+; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V24 tmp14 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -39,30 +39,31 @@
; V28 tmp18 [V28,T20] ( 2, 9 ) int -> x22 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V31 tmp21 [V31,T06] ( 3, 48 ) ref -> x0 "arr expr"
-; V32 tmp22 [V32,T07] ( 3, 48 ) int -> x1 "index expr"
-; V33 tmp23 [V33,T13] ( 3, 24 ) ref -> x1 "arr expr"
-; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x1 "arr expr"
-; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x0 "index expr"
+; V31 tmp21 [V31,T05] ( 3, 48 ) ref -> x0 "arr expr"
+; V32 tmp22 [V32,T06] ( 3, 48 ) int -> x1 "index expr"
+; V33 tmp23 [V33,T12] ( 3, 24 ) ref -> x5 "arr expr"
+; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x5 "arr expr"
+; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x1 "index expr"
; V36 tmp26 [V36,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V37 tmp27 [V37,T04] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V38 PSPSym [V38,T29] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 24 ) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
+; V37 PSPSym [V37,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V38 cse0 [V38,T13] ( 3, 24 ) int -> x1 "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 20 ) int -> x26 "CSE - aggressive"
+; V40 cse2 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M55933_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x30]
- stp x21, x22, [sp, #0x40]
- stp x23, x24, [sp, #0x50]
- stp x25, x26, [sp, #0x60]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x38]
+ stp x21, x22, [sp, #0x48]
+ stp x23, x24, [sp, #0x58]
+ stp x25, x26, [sp, #0x68]
+ str x27, [sp, #0x78]
mov fp, sp
- str xzr, [fp, #0x18] // [V21 tmp11]
- add x7, sp, #112
- str x7, [fp, #0x28] // [V38 PSPSym]
- str x3, [fp, #0x10] // [V02 arg2]
+ str xzr, [fp, #0x20] // [V21 tmp11]
+ add x7, sp, #128
+ str x7, [fp, #0x30] // [V37 PSPSym]
+ str x3, [fp, #0x18] // [V02 arg2]
; GC ptr vars +{V02}
mov x19, x0
; gcrRegs +[x19]
@@ -74,11 +75,11 @@ G_M55933_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; byrRegs +[x20]
mov x23, x6
; byrRegs +[x23]
- ;; size=64 bbWeight=1 PerfScore 12.00
+ ;; size=68 bbWeight=1 PerfScore 13.00
G_M55933_IG02: ; bbWeight=1, gcVars=0000000000400000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=1900008 {x3 x20 x23 x24}, gcvars, byref
; byrRegs +[x3]
ldr w0, [x3]
- str w0, [fp, #0x24] // [V06 loc0]
+ str w0, [fp, #0x2C] // [V06 loc0]
;; size=8 bbWeight=1 PerfScore 4.00
G_M55933_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
; byrRegs -[x3]
@@ -92,19 +93,20 @@ G_M55933_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
; gcrRegs -[x0]
; byrRegs +[x0]
ldrb w25, [x0, w1, UXTW #2]
- ldr w0, [fp, #0x24] // [V06 loc0]
+ ldr w0, [fp, #0x2C] // [V06 loc0]
; byrRegs -[x0]
- sub w0, w0, #1
+ sub w26, w0, #1
+ sxtw w0, w26
cmp w0, w22
bhs G_M55933_IG14
- ;; size=44 bbWeight=8 PerfScore 144.00
+ ;; size=48 bbWeight=8 PerfScore 148.00
G_M55933_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
ldrh w2, [x24, w0, UXTW #2]
- ldr x26, [x1, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x08]
+ ldr x27, [x1, #0x08]
+ ; gcrRegs +[x27]
+ ldr w0, [x27, #0x08]
cmp w0, w2
bhi G_M55933_IG13
ldr x0, [x1, #0x10]
@@ -117,7 +119,7 @@ G_M55933_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
ldr x2, [x2]
ldr wzr, [x0]
blr x2
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
sxtw w2, w0
;; size=60 bbWeight=2 PerfScore 52.00
@@ -125,83 +127,80 @@ G_M55933_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
tbz w25, #2, G_M55933_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M55933_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ldr w0, [fp, #0x24] // [V06 loc0]
- str w0, [x23]
+ ldr w1, [fp, #0x2C] // [V06 loc0]
+ str w1, [x23]
;; size=8 bbWeight=2 PerfScore 6.00
G_M55933_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- ldr w0, [fp, #0x24] // [V06 loc0]
- cmp w0, w21
+ ldr w1, [fp, #0x2C] // [V06 loc0]
+ cmp w1, w21
ble G_M55933_IG17
;; size=12 bbWeight=8 PerfScore 28.00
G_M55933_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
tbnz w25, #1, G_M55933_IG17
- ldr w0, [x20, #0x08]
- ldr w1, [x19, #0xA4]
- lsl w1, w0, w1
- orr w4, w1, w2
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- ldr w5, [x1, #0x08]
- cmp w4, w5
+ ldr w1, [x20, #0x08]
+ ldr w5, [x19, #0xA4]
+ lsl w5, w1, w5
+ orr w4, w5, w2
+ ldr x5, [x19, #0x20]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w4, w0
bhs G_M55933_IG12
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr w1, [x1, w4, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #0
+ add x5, x5, #16
+ ; gcrRegs -[x5]
+ ; byrRegs +[x5]
+ ldr w5, [x5, w4, UXTW #2]
+ ; byrRegs -[x5]
+ cmp w5, #0
ble G_M55933_IG15
;; size=52 bbWeight=4 PerfScore 82.00
G_M55933_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- str w1, [x20, #0x08]
+ str w5, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
G_M55933_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
mov w25, #1
;; size=4 bbWeight=8 PerfScore 4.00
G_M55933_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- str xzr, [fp, #0x18] // [V21 tmp11]
+ str xzr, [fp, #0x20] // [V21 tmp11]
cbz w25, G_M55933_IG18
- ldr w0, [fp, #0x24] // [V06 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x24] // [V06 loc0]
+ str w26, [fp, #0x2C] // [V06 loc0]
b G_M55933_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=16 bbWeight=4 PerfScore 16.00
G_M55933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x23-x24]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55933_IG13: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs +[x19 x26]
+G_M55933_IG13: ; bbWeight=2, gcrefRegs=8080000 {x19 x27}, byrefRegs=1900000 {x20 x23 x24}, byref
+ ; gcrRegs +[x19 x27]
; byrRegs +[x20 x23-x24]
- add x0, x26, #16
- ; byrRegs +[x0]
- ldr w2, [x0, w2, UXTW #2]
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w2, [x1, w2, UXTW #2]
b G_M55933_IG05
;; size=12 bbWeight=2 PerfScore 9.00
G_M55933_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs -[x26]
- ; byrRegs -[x0]
+ ; gcrRegs -[x27]
+ ; byrRegs -[x1]
movn w2, #0
b G_M55933_IG05
;; size=8 bbWeight=2 PerfScore 3.00
G_M55933_IG15: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
- ldr w5, [x1, #0x08]
- cmp w0, w5
+ ldr x5, [x19, #0x10]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w1, w0
bhs G_M55933_IG12
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x1, [x1, w0, UXTW #3]
...
+4 (+1.82%) : 6105.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
@@ -10,7 +10,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01 ] ( 3, 3 ) struct ( 8) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Text.Json.JsonDocumentOptions>
-; V02 loc0 [V02,T02] ( 4, 4 ) ref -> x21 class-hnd exact single-def <ubyte[]>
+; V02 loc0 [V02,T01] ( 5, 5 ) ref -> x21 class-hnd exact single-def <ubyte[]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
@@ -20,11 +20,11 @@
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp9 [V12,T04] ( 2, 4 ) long -> x2 "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+; V12 tmp9 [V12,T06] ( 2, 4 ) long -> x2 "Inlining Arg"
+; V13 tmp10 [V13 ] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-; V15 tmp12 [V15,T03] ( 2, 2 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp13 [V16,T01] ( 4, 4 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T05] ( 2, 2 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T00] ( 4, 4 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
@@ -33,21 +33,20 @@
;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0xc)" P-INDEP
-; V25 tmp22 [V25,T05] ( 2, 4 ) int -> [fp+0x28] do-not-enreg[] "field V07._maxDepth (fldOffset=0x0)" P-DEP
-; V26 tmp23 [V26,T06] ( 2, 4 ) ubyte -> [fp+0x2C] do-not-enreg[] "field V07._commentHandling (fldOffset=0x4)" P-DEP
-; V27 tmp24 [V27,T07] ( 2, 4 ) ubyte -> [fp+0x2D] do-not-enreg[] "field V07.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
-; V28 tmp25 [V28,T10] ( 2, 2 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T11] ( 2, 2 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V25 tmp22 [V25,T07] ( 2, 4 ) int -> [fp+0x28] do-not-enreg[] "field V07._maxDepth (fldOffset=0x0)" P-DEP
+; V26 tmp23 [V26,T08] ( 2, 4 ) ubyte -> [fp+0x2C] do-not-enreg[] "field V07._commentHandling (fldOffset=0x4)" P-DEP
+; V27 tmp24 [V27,T09] ( 2, 4 ) ubyte -> [fp+0x2D] do-not-enreg[] "field V07.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
+; V28 tmp25 [V28,T11] ( 2, 2 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T12] ( 2, 2 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> x21 "field V13._object (fldOffset=0x0)" P-INDEP
-;* V33 tmp30 [V33,T13] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V34 tmp31 [V34,T12] ( 2, 2 ) int -> x19 "field V13._length (fldOffset=0xc)" P-INDEP
+; V32 tmp29 [V32,T02] ( 3, 5 ) ref -> [fp+0x18] do-not-enreg[] "field V13._object (fldOffset=0x0)" P-DEP
+; V33 tmp30 [V33,T03] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[] "field V13._index (fldOffset=0x8)" P-DEP
+; V34 tmp31 [V34,T04] ( 3, 5 ) int -> [fp+0x24] do-not-enreg[] "field V13._length (fldOffset=0xc)" P-DEP
;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref "field V14._object (fldOffset=0x0)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x8)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0xc)" P-INDEP
-; V38 tmp35 [V38,T08] ( 2, 4 ) struct ( 8) [fp+0x20] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
-; V39 tmp36 [V39,T00] ( 5, 10 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Memory`1[ubyte]>
+; V38 tmp35 [V38,T10] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
;
; Lcl frame size = 40
@@ -56,7 +55,7 @@ G_M33801_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x38]
str x21, [sp, #0x48]
mov fp, sp
- str xzr, [fp, #0x10] // [V39 tmp36]
+ str xzr, [fp, #0x18] // [V13 tmp10]
str x2, [fp, #0x30] // [V01 arg1]
mov x20, x0
; byrRegs +[x20]
@@ -86,29 +85,30 @@ G_M33801_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
ldr x3, [x3]
blr x3
; byrRegs -[x0-x1 x20]
- ldr w19, [x21, #0x08]
+ str x21, [fp, #0x18] // [V32 tmp29]
+ str wzr, [fp, #0x20] // [V33 tmp30]
+ ldr w0, [x21, #0x08]
+ str w0, [fp, #0x24] // [V34 tmp31]
add x0, fp, #48 // [V01 arg1]
movz x1, #0xD1FFAB1E // code for System.Text.Json.JsonDocumentOptions:GetReaderOptions():System.Text.Json.JsonReaderOptions:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
+ ; gcrRegs -[x21]
str x0, [fp, #0x28] // [V07 tmp4]
- str x21, [fp, #0x10] // [V39 tmp36]
- stp wzr, w19, [fp, #0x18] // [V39 tmp36+0x08], [V39 tmp36+0x0c]
- ldr x0, [fp, #0x28] // [V07 tmp4]
- str x0, [fp, #0x20] // [V38 tmp35]
- ldp x0, x1, [fp, #0x10] // [V39 tmp36], [V39 tmp36+0x08]
+ ldr x2, [fp, #0x28] // [V07 tmp4]
+ str x2, [fp, #0x10] // [V38 tmp35]
+ ldp x2, x0, [fp, #0x10] // [V38 tmp35], [V13 tmp10]
; gcrRegs +[x0]
- ldr x2, [fp, #0x20] // [V38 tmp35]
+ ldr x1, [fp, #0x20] // [V13 tmp10+0x08]
mov w3, wzr
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x21]
- ;; size=148 bbWeight=1 PerfScore 41.00
+ ;; size=152 bbWeight=1 PerfScore 42.00
G_M33801_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
@@ -125,7 +125,7 @@ G_M33801_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 20, PerfScore 52.50, instruction count 55, allocated bytes for code 220 (MethodHash=26bd7bf6) for method System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 53.50, instruction count 56, allocated bytes for code 224 (MethodHash=26bd7bf6) for method System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+12.50%) : 1356.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 6.50) ref -> [fp+0x18] this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
+; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
; V01 loc0 [V01,T02] ( 3, 2.50) ref -> x1 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T03] ( 3, 2.50) int -> x3
+; V02 loc1 [V02,T03] ( 3, 2.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
-; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x2 single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
+; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x3 single-def "argument with side effect"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 2, 2 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M7274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
+ str x19, [sp, #0x38]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7274_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x18]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M7274_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
- ldr w2, [x0, #0x14]
- sub w3, w2, #1
- ldr w4, [x1, #0x08]
- cmp w4, w3
+ ldr w0, [x19, #0x14]
+ sub w2, w0, #1
+ ldr w3, [x1, #0x08]
+ cmp w3, w2
bls G_M7274_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- add w2, w2, #1
- str w2, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x20]
- ; gcrRegs +[x2]
- ubfiz x3, x3, #5, #32
- add x3, x3, #16
- add x1, x1, x3
+G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ add w0, w0, #1
+ str w0, [x19, #0x14]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ubfiz x0, x2, #5, #32
+ add x0, x0, #16
+ add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ldp q16, q17, [x1]
- stp q16, q17, [fp, #0x20]
- add x1, fp, #32 // [V04 tmp1]
+ ldp x0, x2, [x1]
+ stp x0, x2, [fp, #0x18]
+ ldp x0, x2, [x1, #0x10]
+ stp x0, x2, [fp, #0x28]
+ add x1, fp, #24 // [V04 tmp1]
; byrRegs -[x1]
- ldr x0, [x2, #0x08]
- ldr x2, [x2, #0x18]
- ; gcrRegs -[x2]
- blr x2
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- str d0, [x0, #0x08]
+ ldr x2, [x3, #0x18]
+ blr x2
+ ; gcrRegs -[x0 x3]
+ str d0, [x19, #0x08]
mov w0, #1
- ; gcrRegs -[x0]
- ;; size=64 bbWeight=0.50 PerfScore 11.25
+ ;; size=64 bbWeight=0.50 PerfScore 12.75
G_M7274_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars -{V00}
- str xzr, [x0, #0x08]
- movn w1, #0
- str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ str xzr, [x19, #0x08]
+ movn w0, #0
+ str w0, [x19, #0x14]
mov w0, wzr
- ; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M7274_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 27.25, instruction count 32, allocated bytes for code 128 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 32.25, instruction count 36, allocated bytes for code 144 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +98,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
+ E4 end
benchmarks.run_pgo.osx.arm64.checked.mch
-44 (-26.83%) : 62622.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-16 (-25.00%) : 70082.dasm - System.Text.Json.Utf8JsonWriter:TryFormatDouble(double,System.Span`1[ubyte],byref):ubyte (Tier1)
@@ -8,51 +8,44 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T08] ( 3, 3 ) double -> d0 single-def
+; V00 arg0 [V00,T06] ( 3, 3 ) double -> d0 single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T02] ( 3, 3 ) byref -> x2 single-def
+; V02 arg2 [V02,T01] ( 3, 3 ) byref -> x2 single-def
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.StandardFormat>
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Buffers.StandardFormat>
-; V06 tmp2 [V06,T03] ( 2, 2 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V07 tmp3 [V07,T05] ( 2, 2 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-;* V08 tmp4 [V08,T06] ( 0, 0 ) ubyte -> zero-ref "field V03._format (fldOffset=0x0)" P-INDEP
-;* V09 tmp5 [V09,T07] ( 0, 0 ) ubyte -> zero-ref "field V03._precision (fldOffset=0x1)" P-INDEP
+; V06 tmp2 [V06,T02] ( 2, 2 ) byref -> x0 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V07 tmp3 [V07,T03] ( 2, 2 ) int -> x1 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+;* V08 tmp4 [V08,T04] ( 0, 0 ) ubyte -> zero-ref "field V03._format (fldOffset=0x0)" P-INDEP
+;* V09 tmp5 [V09,T05] ( 0, 0 ) ubyte -> zero-ref "field V03._precision (fldOffset=0x1)" P-INDEP
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "field V05._format (fldOffset=0x0)" P-INDEP
;* V11 tmp7 [V11 ] ( 0, 0 ) ubyte -> zero-ref "field V05._precision (fldOffset=0x1)" P-INDEP
-; V12 tmp8 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V13 tmp9 [V13,T09] ( 2, 4 ) double -> d0 "argument with side effect"
-; V14 tmp10 [V14,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V15 tmp11 [V15,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
+; V12 tmp8 [V12,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M16219_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x18] // [V14 tmp10]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M16219_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0005 {x0 x2}, byref
; byrRegs +[x0 x2]
- str x0, [fp, #0x18] // [V14 tmp10]
- str w1, [fp, #0x20] // [V14 tmp10+0x08]
- strb wzr, [fp, #0x28] // [V12 tmp8]
- strb wzr, [fp, #0x29] // [V12 tmp8+0x01]
- ldp x0, x1, [fp, #0x18] // [V14 tmp10], [V14 tmp10+0x08]
- ldrh w3, [fp, #0x28] // [V12 tmp8]
+ strb wzr, [fp, #0x18] // [V12 tmp8]
+ strb wzr, [fp, #0x19] // [V12 tmp8+0x01]
+ ldrh w3, [fp, #0x18] // [V12 tmp8]
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
ldr x4, [x4]
blr x4
; byrRegs -[x0 x2]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M16219_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 64, prolog size 12, PerfScore 19.00, instruction count 16, allocated bytes for code 64 (MethodHash=0f30c0a4) for method System.Text.Json.Utf8JsonWriter:TryFormatDouble(double,System.Span`1[ubyte],byref):ubyte (Tier1)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=0f30c0a4) for method System.Text.Json.Utf8JsonWriter:TryFormatDouble(double,System.Span`1[ubyte],byref):ubyte (Tier1)
; ============================================================
Unwind Info:
@@ -63,7 +56,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 16 (0x00010) Actual length = 64 (0x000040)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -71,7 +64,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-48 (-22.22%) : 62571.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
+12 (+5.26%) : 31555.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
@@ -14,17 +14,17 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) byref -> x22 single-def "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V09 tmp7 [V09 ] ( 2, 2 ) byref -> [fp+0x18] must-init pinned "Inline stloc first use temp"
+; V09 tmp7 [V09 ] ( 2, 2 ) byref -> [fp+0x10] must-init pinned "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V11 tmp9 [V11,T04] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Apple.SafeHmacHandle>
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V14 tmp12 [V14,T05] ( 2, 4 ) byref -> x0 single-def "Inlining Arg"
-; V15 tmp13 [V15,T13] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp13 [V15,T12] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V16 tmp14 [V16,T06] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Apple.SafeHmacHandle>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
@@ -32,8 +32,8 @@
; V20 tmp18 [V20,T02] ( 3, 3 ) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V23 tmp21 [V23,T11] ( 4, 3 ) byref -> x1 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp22 [V24,T12] ( 3, 2 ) int -> x2 "field V06._length (fldOffset=0x8)" P-INDEP
+; V23 tmp21 [V23,T10] ( 4, 3 ) byref -> x23 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T11] ( 3, 2 ) int -> x2 "field V06._length (fldOffset=0x8)" P-INDEP
;* V25 tmp23 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -44,50 +44,51 @@
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V33 tmp31 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
-; V35 tmp33 [V35,T09] ( 2, 4 ) long -> x1 "Cast away GC"
-; V36 tmp34 [V36,T08] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V37 tmp35 [V37,T10] ( 2, 4 ) long -> x1 "argument with side effect"
+; V35 tmp33 [V35,T08] ( 2, 4 ) long -> x1 "Cast away GC"
+; V36 tmp34 [V36,T09] ( 2, 4 ) long -> x1 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M41892_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 x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- str xzr, [fp, #0x18] // [V09 tmp7]
+ str xzr, [fp, #0x10] // [V09 tmp7]
mov x19, x0
; gcrRegs +[x19]
mov x21, x1
; byrRegs +[x21]
mov w20, w2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M41892_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldrb w0, [x19, #0x10]
- cbnz w0, G_M41892_IG04
+ ldrb w1, [x19, #0x10]
+ cbnz w1, G_M41892_IG04
add x22, x19, #24
; byrRegs +[x22]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- cbz x0, G_M41892_IG07
- add x1, x0, #16
- ; byrRegs +[x1]
- ldr w2, [x0, #0x08]
+ ldr x1, [x19, #0x08]
+ ; gcrRegs +[x1]
+ cbz x1, G_M41892_IG07
+ add x23, x1, #16
+ ; byrRegs +[x23]
+ ldr w2, [x1, #0x08]
;; size=28 bbWeight=1 PerfScore 12.00
-G_M41892_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600002 {x1 x21 x22}, byref
- ; gcrRegs -[x0]
+G_M41892_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=E00000 {x21 x22 x23}, byref
+ ; gcrRegs -[x1]
ldr x0, [x22]
; gcrRegs +[x0]
- str x1, [fp, #0x18] // [V09 tmp7]
+ str x23, [fp, #0x10] // [V09 tmp7]
+ mov x1, x23
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- str xzr, [fp, #0x18] // [V09 tmp7]
- ;; size=32 bbWeight=1 PerfScore 10.50
+ ; byrRegs -[x22-x23]
+ str xzr, [fp, #0x10] // [V09 tmp7]
+ ;; size=36 bbWeight=1 PerfScore 11.00
G_M41892_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add x0, x19, #24
; byrRegs +[x0]
@@ -113,21 +114,22 @@ G_M41892_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
strb w0, [x19, #0x10]
;; size=8 bbWeight=1 PerfScore 1.50
G_M41892_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M41892_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref
; byrRegs +[x21-x22]
- mov x1, xzr
- ; byrRegs +[x1]
+ mov x23, xzr
+ ; byrRegs +[x23]
mov w2, wzr
b G_M41892_IG03
;; size=12 bbWeight=0 PerfScore 0.00
G_M41892_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x1 x21-x22]
+ ; byrRegs -[x21-x23]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -148,7 +150,7 @@ G_M41892_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 20, PerfScore 46.50, instruction count 57, allocated bytes for code 228 (MethodHash=ee725c5b) for method System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
+; Total bytes of code 240, prolog size 24, PerfScore 50.00, instruction count 60, allocated bytes for code 240 (MethodHash=ee725c5b) for method System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +161,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -167,10 +169,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ 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
- E4 end
- E4 end
+12 (+5.26%) : 33867.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
@@ -14,17 +14,17 @@
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T03] ( 2, 4 ) byref -> x22 single-def "impAppendStmt"
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
-; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> x1 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V08 tmp6 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-; V09 tmp7 [V09 ] ( 2, 2 ) byref -> [fp+0x18] must-init pinned "Inline stloc first use temp"
+; V09 tmp7 [V09 ] ( 2, 2 ) byref -> [fp+0x10] must-init pinned "Inline stloc first use temp"
;* V10 tmp8 [V10 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V11 tmp9 [V11,T04] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Apple.SafeHmacHandle>
;* V12 tmp10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V13 tmp11 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
; V14 tmp12 [V14,T05] ( 2, 4 ) byref -> x0 single-def "Inlining Arg"
-; V15 tmp13 [V15,T13] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V15 tmp13 [V15,T12] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V16 tmp14 [V16,T06] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Security.Cryptography.Apple.SafeHmacHandle>
;* V17 tmp15 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
;* V18 tmp16 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
@@ -32,8 +32,8 @@
; V20 tmp18 [V20,T02] ( 3, 3 ) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) byref -> zero-ref single-def "field V04._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V23 tmp21 [V23,T11] ( 4, 3 ) byref -> x1 "field V06._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp22 [V24,T12] ( 3, 2 ) int -> x2 "field V06._length (fldOffset=0x8)" P-INDEP
+; V23 tmp21 [V23,T10] ( 4, 3 ) byref -> x23 "field V06._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp22 [V24,T11] ( 3, 2 ) int -> x2 "field V06._length (fldOffset=0x8)" P-INDEP
;* V25 tmp23 [V25 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp24 [V26 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP
;* V27 tmp25 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP
@@ -44,50 +44,51 @@
;* V32 tmp30 [V32 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
;* V33 tmp31 [V33 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V34 tmp32 [V34 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-INDEP
-; V35 tmp33 [V35,T09] ( 2, 4 ) long -> x1 "Cast away GC"
-; V36 tmp34 [V36,T08] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; V37 tmp35 [V37,T10] ( 2, 4 ) long -> x1 "argument with side effect"
+; V35 tmp33 [V35,T08] ( 2, 4 ) long -> x1 "Cast away GC"
+; V36 tmp34 [V36,T09] ( 2, 4 ) long -> x1 "argument with side effect"
;
-; Lcl frame size = 16
+; Lcl frame size = 8
G_M41892_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 x19, x20, [sp, #0x18]
+ stp x21, x22, [sp, #0x28]
+ str x23, [sp, #0x38]
mov fp, sp
- str xzr, [fp, #0x18] // [V09 tmp7]
+ str xzr, [fp, #0x10] // [V09 tmp7]
mov x19, x0
; gcrRegs +[x19]
mov x21, x1
; byrRegs +[x21]
mov w20, w2
- ;; size=32 bbWeight=1 PerfScore 6.00
+ ;; size=36 bbWeight=1 PerfScore 7.00
G_M41892_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ldrb w0, [x19, #0x10]
- cbnz w0, G_M41892_IG04
+ ldrb w1, [x19, #0x10]
+ cbnz w1, G_M41892_IG04
add x22, x19, #24
; byrRegs +[x22]
- ldr x0, [x19, #0x08]
- ; gcrRegs +[x0]
- cbz x0, G_M41892_IG07
- add x1, x0, #16
- ; byrRegs +[x1]
- ldr w2, [x0, #0x08]
+ ldr x1, [x19, #0x08]
+ ; gcrRegs +[x1]
+ cbz x1, G_M41892_IG07
+ add x23, x1, #16
+ ; byrRegs +[x23]
+ ldr w2, [x1, #0x08]
;; size=28 bbWeight=1 PerfScore 12.00
-G_M41892_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600002 {x1 x21 x22}, byref
- ; gcrRegs -[x0]
+G_M41892_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=E00000 {x21 x22 x23}, byref
+ ; gcrRegs -[x1]
ldr x0, [x22]
; gcrRegs +[x0]
- str x1, [fp, #0x18] // [V09 tmp7]
+ str x23, [fp, #0x10] // [V09 tmp7]
+ mov x1, x23
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
; gcrRegs -[x0]
- ; byrRegs -[x1 x22]
- str xzr, [fp, #0x18] // [V09 tmp7]
- ;; size=32 bbWeight=1 PerfScore 10.50
+ ; byrRegs -[x22-x23]
+ str xzr, [fp, #0x10] // [V09 tmp7]
+ ;; size=36 bbWeight=1 PerfScore 11.00
G_M41892_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add x0, x19, #24
; byrRegs +[x0]
@@ -113,21 +114,22 @@ G_M41892_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
strb w0, [x19, #0x10]
;; size=8 bbWeight=1 PerfScore 1.50
G_M41892_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x30]
- ldp x19, x20, [sp, #0x20]
+ ldr x23, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
+ ;; size=20 bbWeight=1 PerfScore 6.00
G_M41892_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref
; byrRegs +[x21-x22]
- mov x1, xzr
- ; byrRegs +[x1]
+ mov x23, xzr
+ ; byrRegs +[x23]
mov w2, wzr
b G_M41892_IG03
;; size=12 bbWeight=0 PerfScore 0.00
G_M41892_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x1 x21-x22]
+ ; byrRegs -[x21-x23]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -148,7 +150,7 @@ G_M41892_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 20, PerfScore 46.50, instruction count 57, allocated bytes for code 228 (MethodHash=ee725c5b) for method System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
+; Total bytes of code 240, prolog size 24, PerfScore 50.00, instruction count 60, allocated bytes for code 240 (MethodHash=ee725c5b) for method System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
; ============================================================
Unwind Info:
@@ -159,7 +161,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -167,10 +169,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D1 07 save_reg X#4 Z#7 (0x07); str x23, [sp, #56]
E6 save_next
- C8 04 save_regp X#0 Z#4 (0x04); stp x19, x20, [sp, #32]
+ 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
- E4 end
- E4 end
+4 (+5.88%) : 63609.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M44302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44302_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44302_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M44302_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
benchmarks.run_tiered.osx.arm64.checked.mch
-44 (-26.83%) : 40882.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-48 (-22.22%) : 40831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
-28 (-21.88%) : 10365.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
@@ -5,49 +5,37 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <System.String>
-; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [fp+0x44] do-not-enreg[]
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [fp+0x40] do-not-enreg[]
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <System.String>
+; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [fp+0x34] do-not-enreg[]
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [fp+0x30] do-not-enreg[]
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [fp+0x28] do-not-enreg[]
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[] "Cast away GC"
-; V06 tmp2 [V06 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [fp+0x18] do-not-enreg[] "argument with side effect"
+; V05 tmp1 [V05 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[] "Cast away GC"
+; V06 tmp2 [V06 ] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x40]!
mov fp, sp
- str xzr, [fp, #0x20] // [V07 tmp3]
- str x0, [fp, #0x48] // [V00 arg0]
- str w1, [fp, #0x44] // [V01 arg1]
- str w2, [fp, #0x40] // [V02 arg2]
- str x3, [fp, #0x38] // [V03 arg3]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ str x0, [fp, #0x38] // [V00 arg0]
+ str w1, [fp, #0x34] // [V01 arg1]
+ str w2, [fp, #0x30] // [V02 arg2]
+ str x3, [fp, #0x28] // [V03 arg3]
+ ;; size=24 bbWeight=1 PerfScore 5.50
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x4, [fp, #0x48] // [V00 arg0]
- ; gcrRegs +[x4]
- str x4, [fp, #0x20] // [V07 tmp3]
- ldr w4, [fp, #0x44] // [V01 arg1]
- ; gcrRegs -[x4]
- uxth w4, w4
- str w4, [fp, #0x1C] // [V08 tmp4]
- ldr w4, [fp, #0x40] // [V02 arg2]
- str w4, [fp, #0x18] // [V09 tmp5]
- ldr x4, [fp, #0x38] // [V03 arg3]
+ ldr x4, [fp, #0x28] // [V03 arg3]
; byrRegs +[x4]
- str x4, [fp, #0x30] // [V05 tmp1]
- ldr x4, [fp, #0x30] // [V05 tmp1]
+ str x4, [fp, #0x20] // [V05 tmp1]
+ ldr x4, [fp, #0x20] // [V05 tmp1]
; byrRegs -[x4]
- str x4, [fp, #0x28] // [V06 tmp2]
- ldr x4, [fp, #0x28] // [V06 tmp2]
- ldr x1, [fp, #0x20] // [V07 tmp3]
+ str x4, [fp, #0x18] // [V06 tmp2]
+ ldr x4, [fp, #0x18] // [V06 tmp2]
+ ldr w2, [fp, #0x34] // [V01 arg1]
+ uxth w2, w2
+ ldr x1, [fp, #0x38] // [V00 arg0]
; gcrRegs +[x1]
- ldr w2, [fp, #0x1C] // [V08 tmp4]
- ldr w3, [fp, #0x18] // [V09 tmp5]
+ ldr w3, [fp, #0x30] // [V02 arg2]
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -57,13 +45,13 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x5, [x5]
blr x5
; gcrRegs -[x1]
- ;; size=92 bbWeight=1 PerfScore 30.50
+ ;; size=68 bbWeight=1 PerfScore 21.50
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 12, PerfScore 39.00, instruction count 32, allocated bytes for code 128 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 100, prolog size 8, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -74,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ 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)
@@ -82,7 +70,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+8 (+1.57%) : 42617.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)@@ -9,28 +9,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
+; V00 this [V00,T04] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T25] ( 4, 3 ) byref -> [fp+0xA8] EH-live single-def tier0-frame
+; V02 arg2 [V02,T25] ( 4, 3 ) byref -> [fp+0xB8] EH-live single-def tier0-frame
; V03 arg3 [V03,T19] ( 3, 10 ) int -> x21 single-def
-; V04 arg4 [V04,T09] ( 6, 32 ) byref -> x20 single-def
+; V04 arg4 [V04,T08] ( 6, 32 ) byref -> x20 single-def
; V05 arg5 [V05,T22] ( 3, 4 ) byref -> x23 single-def
-; V06 loc0 [V06,T11] ( 7, 27 ) int -> [fp+0x8C] do-not-enreg[Z] EH-live tier0-frame
-; V07 loc1 [V07,T15] ( 3, 20 ) ubyte -> x25
+; V06 loc0 [V06,T13] ( 6, 23 ) int -> [fp+0x9C] do-not-enreg[Z] EH-live tier0-frame
+; V07 loc1 [V07,T14] ( 3, 20 ) ubyte -> x25
;* V08 loc2 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc3 [V09,T28] ( 3, 2 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 4, 24 ) int -> x2 "Inline return value spill temp"
-; V12 tmp2 [V12,T08] ( 3, 36 ) int -> x0 "Inlining Arg"
+; V11 tmp1 [V11,T10] ( 4, 24 ) int -> x2 "Inline return value spill temp"
+; V12 tmp2 [V12,T07] ( 3, 36 ) int -> x0 "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V14 tmp4 [V14,T24] ( 3, 6 ) int -> x2 "Inline return value spill temp"
; V15 tmp5 [V15,T18] ( 3, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V16 tmp6 [V16,T23] ( 3, 6 ) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V16 tmp6 [V16,T23] ( 3, 6 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T16] ( 4, 16 ) int -> x2 "Inlining Arg"
; V18 tmp8 [V18,T17] ( 3, 14 ) ubyte -> x25 "Inline return value spill temp"
-; V19 tmp9 [V19,T10] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
-; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x1 "Inline stloc first use temp"
-; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V19 tmp9 [V19,T09] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
+; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x5 "Inline stloc first use temp"
+; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V24 tmp14 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -40,38 +40,39 @@
; V28 tmp18 [V28,T20] ( 2, 9 ) int -> x22 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V31 tmp21 [V31,T06] ( 3, 48 ) ref -> x0 "arr expr"
-; V32 tmp22 [V32,T07] ( 3, 48 ) int -> x1 "index expr"
-; V33 tmp23 [V33,T13] ( 3, 24 ) ref -> x1 "arr expr"
-; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x1 "arr expr"
-; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x0 "index expr"
+; V31 tmp21 [V31,T05] ( 3, 48 ) ref -> x0 "arr expr"
+; V32 tmp22 [V32,T06] ( 3, 48 ) int -> x1 "index expr"
+; V33 tmp23 [V33,T11] ( 3, 24 ) ref -> x5 "arr expr"
+; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x5 "arr expr"
+; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x1 "index expr"
; V36 tmp26 [V36,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V37 tmp27 [V37,T04] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V38 PSPSym [V38,T29] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 24 ) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
+; V37 PSPSym [V37,T29] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V38 cse0 [V38,T12] ( 3, 24 ) int -> x1 "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 20 ) int -> x26 "CSE - aggressive"
+; V40 cse2 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M55933_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ stp x25, x26, [sp, #0x58]
+ str x27, [sp, #0x68]
mov fp, sp
- str xzr, [fp, #0x10] // [V21 tmp11]
- add xip1, sp, #208
- str xip1, [fp, #0x18] // [V38 PSPSym]
- ldr x19, [fp, #0xC0]
+ str xzr, [fp, #0x18] // [V21 tmp11]
+ add xip1, sp, #224
+ str xip1, [fp, #0x20] // [V37 PSPSym]
+ ldr x19, [fp, #0xD0]
; gcrRegs +[x19]
- ldr w21, [fp, #0xA4]
- ldp x23, x20, [fp, #0x90]
+ ldr w21, [fp, #0xB4]
+ ldp x23, x20, [fp, #0xA0]
; byrRegs +[x20 x23]
- ldr x24, [fp, #0xB0]
+ ldr x24, [fp, #0xC0]
; byrRegs +[x24]
- ldr w22, [fp, #0xB8]
- ;; size=56 bbWeight=8 PerfScore 152.00
+ ldr w22, [fp, #0xC8]
+ ;; size=60 bbWeight=8 PerfScore 160.00
G_M55933_IG02: ; bbWeight=8, gcVars=0000000002000000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, gcvars, byref, isz
; GC ptr vars +{V02}
ldr x0, [x19, #0x18]
@@ -84,19 +85,20 @@ G_M55933_IG02: ; bbWeight=8, gcVars=0000000002000000 {V02}, gcrefRegs=800
; gcrRegs -[x0]
; byrRegs +[x0]
ldrb w25, [x0, w1, UXTW #2]
- ldr w0, [fp, #0x8C] // [V06 loc0]
+ ldr w0, [fp, #0x9C] // [V06 loc0]
; byrRegs -[x0]
- sub w0, w0, #1
+ sub w26, w0, #1
+ sxtw w0, w26
cmp w0, w22
bhs G_M55933_IG13
- ;; size=44 bbWeight=8 PerfScore 144.00
+ ;; size=48 bbWeight=8 PerfScore 148.00
G_M55933_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
ldrh w2, [x24, w0, UXTW #2]
- ldr x26, [x1, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x08]
+ ldr x27, [x1, #0x08]
+ ; gcrRegs +[x27]
+ ldr w0, [x27, #0x08]
cmp w0, w2
bhi G_M55933_IG12
ldr x0, [x1, #0x10]
@@ -109,7 +111,7 @@ G_M55933_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
ldr x2, [x2]
ldr wzr, [x0]
blr x2
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
sxtw w2, w0
;; size=60 bbWeight=2 PerfScore 52.00
@@ -117,83 +119,80 @@ G_M55933_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
tbz w25, #2, G_M55933_IG06
;; size=4 bbWeight=8 PerfScore 8.00
G_M55933_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ldr w0, [fp, #0x8C] // [V06 loc0]
- str w0, [x23]
+ ldr w1, [fp, #0x9C] // [V06 loc0]
+ str w1, [x23]
;; size=8 bbWeight=2 PerfScore 6.00
G_M55933_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- ldr w0, [fp, #0x8C] // [V06 loc0]
- cmp w0, w21
+ ldr w1, [fp, #0x9C] // [V06 loc0]
+ cmp w1, w21
ble G_M55933_IG16
;; size=12 bbWeight=8 PerfScore 28.00
G_M55933_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
tbnz w25, #1, G_M55933_IG16
- ldr w0, [x20, #0x08]
- ldr w1, [x19, #0xA4]
- lsl w1, w0, w1
- orr w4, w1, w2
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- ldr w5, [x1, #0x08]
- cmp w4, w5
+ ldr w1, [x20, #0x08]
+ ldr w5, [x19, #0xA4]
+ lsl w5, w1, w5
+ orr w4, w5, w2
+ ldr x5, [x19, #0x20]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w4, w0
bhs G_M55933_IG11
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr w1, [x1, w4, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #0
+ add x5, x5, #16
+ ; gcrRegs -[x5]
+ ; byrRegs +[x5]
+ ldr w5, [x5, w4, UXTW #2]
+ ; byrRegs -[x5]
+ cmp w5, #0
ble G_M55933_IG14
;; size=52 bbWeight=4 PerfScore 82.00
G_M55933_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- str w1, [x20, #0x08]
+ str w5, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
G_M55933_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
mov w25, #1
;; size=4 bbWeight=8 PerfScore 4.00
G_M55933_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- str xzr, [fp, #0x10] // [V21 tmp11]
+ str xzr, [fp, #0x18] // [V21 tmp11]
cbz w25, G_M55933_IG17
- ldr w0, [fp, #0x8C] // [V06 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x8C] // [V06 loc0]
+ str w26, [fp, #0x9C] // [V06 loc0]
b G_M55933_IG02
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=16 bbWeight=4 PerfScore 16.00
G_M55933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x23-x24]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55933_IG12: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs +[x19 x26]
+G_M55933_IG12: ; bbWeight=2, gcrefRegs=8080000 {x19 x27}, byrefRegs=1900000 {x20 x23 x24}, byref
+ ; gcrRegs +[x19 x27]
; byrRegs +[x20 x23-x24]
- add x0, x26, #16
- ; byrRegs +[x0]
- ldr w2, [x0, w2, UXTW #2]
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w2, [x1, w2, UXTW #2]
b G_M55933_IG04
;; size=12 bbWeight=2 PerfScore 9.00
G_M55933_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs -[x26]
- ; byrRegs -[x0]
+ ; gcrRegs -[x27]
+ ; byrRegs -[x1]
movn w2, #0
b G_M55933_IG04
;; size=8 bbWeight=2 PerfScore 3.00
G_M55933_IG14: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
- ldr w5, [x1, #0x08]
- cmp w0, w5
+ ldr x5, [x19, #0x10]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w1, w0
bhs G_M55933_IG11
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x1, [x1, w0, UXTW #3]
+ add x5, x5, #16
...
+12 (+2.86%) : 45524.dasm - System.Globalization.TextInfo:ChangeCaseCommonSystem.Globalization.TextInfo+ToUpperConversion:this (Tier1)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 26 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> x19 this class-hnd single-def <System.Globalization.TextInfo>
+; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <System.Globalization.TextInfo>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-;* V03 loc0 [V03,T22] ( 0, 0 ) ubyte -> zero-ref
+;* V03 loc0 [V03,T21] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04 ] ( 5, 2.50) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
@@ -60,7 +60,7 @@
;* V49 tmp39 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp40 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp41 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V52 tmp42 [V52,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V52 tmp42 [V52,T22] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V53 tmp43 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp44 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp45 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
@@ -69,7 +69,7 @@
;* V58 tmp48 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V59 tmp49 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V60 tmp50 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V61 tmp51 [V61,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V61 tmp51 [V61,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp52 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V63 tmp53 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V64 tmp54 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -79,7 +79,7 @@
;* V68 tmp58 [V68 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V69 tmp59 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V70 tmp60 [V70,T02] ( 4, 2.50) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V71 tmp61 [V71,T01] ( 5, 3.50) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V71 tmp61 [V71,T00] ( 5, 3.50) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V72 tmp62 [V72,T03] ( 4, 2.50) byref -> x22 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V73 tmp63 [V73,T04] ( 4, 2.50) int -> x23 single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V74 tmp64 [V74 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -102,35 +102,34 @@
;* V91 tmp81 [V91 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V92 tmp82 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp83 [V93 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-;* V94 tmp84 [V94,T16] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
-;* V95 tmp85 [V95,T25] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
-;* V96 tmp86 [V96,T17] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
-;* V97 tmp87 [V97,T26] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V94 tmp84 [V94,T15] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
+;* V95 tmp85 [V95,T24] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
+;* V96 tmp86 [V96,T16] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V97 tmp87 [V97,T25] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
;* V98 tmp88 [V98 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp89 [V99 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V100 tmp90 [V100,T18] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V100 tmp90 [V100,T17] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp91 [V101 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-;* V102 tmp92 [V102,T19] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
-;* V103 tmp93 [V103,T27] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
+;* V102 tmp92 [V102,T18] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V103 tmp93 [V103,T26] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V104 tmp94 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp95 [V105 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
-;* V106 tmp96 [V106,T20] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+;* V106 tmp96 [V106,T19] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp97 [V107 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-;* V108 tmp98 [V108,T21] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
-;* V109 tmp99 [V109,T28] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+;* V108 tmp98 [V108,T20] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V109 tmp99 [V109,T27] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
;* V110 tmp100 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp101 [V111 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
;* V112 tmp102 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V113 tmp103 [V113 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
; V114 tmp104 [V114,T05] ( 2, 2 ) long -> x21 "Cast away GC"
; V115 tmp105 [V115,T06] ( 2, 2 ) long -> x22 "Cast away GC"
-;* V116 tmp106 [V116,T15] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V117 tmp107 [V117,T07] ( 2, 2 ) long -> x1 "argument with side effect"
-; V118 tmp108 [V118,T08] ( 2, 2 ) int -> x2 "argument with side effect"
-; V119 tmp109 [V119,T09] ( 2, 2 ) long -> x3 "argument with side effect"
-; V120 cse0 [V120,T13] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V121 cse1 [V121,T14] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V122 cse2 [V122,T10] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V116 tmp106 [V116,T07] ( 2, 2 ) long -> x2 "argument with side effect"
+; V117 tmp107 [V117,T08] ( 2, 2 ) int -> x3 "argument with side effect"
+; V118 tmp108 [V118,T09] ( 2, 2 ) long -> x4 "argument with side effect"
+; V119 cse0 [V119,T13] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V120 cse1 [V120,T14] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V121 cse2 [V121,T10] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 24
@@ -141,20 +140,20 @@ G_M14148_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
str x23, [sp, #0x48]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V09 loc6], [V07 loc4]
- mov x19, x0
- ; gcrRegs +[x19]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov x21, x1
; byrRegs +[x21]
- mov w20, w2
+ mov w19, w2
mov x22, x3
; byrRegs +[x22]
mov w23, w4
;; size=44 bbWeight=1 PerfScore 8.00
-G_M14148_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- cbnz w20, G_M14148_IG04
+G_M14148_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ cbnz w19, G_M14148_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M14148_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -162,13 +161,13 @@ G_M14148_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
str wzr, [fp, #0x20] // [V04 loc1]
- ldrb w0, [x19, #0x29]
+ ldrb w0, [x20, #0x29]
cbnz w0, G_M14148_IG05
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -177,8 +176,8 @@ G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
blr x1
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x29]
+G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x29]
cmp w0, #2
beq G_M14148_IG06
cmp w0, #1
@@ -197,11 +196,11 @@ G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
blr x2
; gcrRegs -[x0]
;; size=64 bbWeight=0.50 PerfScore 7.25
-G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x29]
+G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x29]
cmp w0, #2
bne G_M14148_IG08
- cmp w20, #0
+ cmp w19, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
movk x1, #0xD1FFAB1E LSL #16
@@ -217,7 +216,7 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
blr x1
mov x0, x21
; byrRegs +[x0]
- mov w1, w20
+ mov w1, w19
mov x2, x22
; byrRegs +[x2]
mov w3, w23
@@ -237,7 +236,7 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
;; size=144 bbWeight=0.50 PerfScore 16.75
G_M14148_IG07: ; bbWeight=0.50, epilog, nogc, extend
@@ -247,30 +246,33 @@ G_M14148_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M14148_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref
- ; gcrRegs +[x19]
+G_M14148_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
stp x22, x21, [fp, #0x10] // [V09 loc6], [V07 loc4]
- ldr w0, [fp, #0x20] // [V04 loc1]
- sbfiz x0, x0, #1, #32
- add x1, x21, x0
- ldr w2, [fp, #0x20] // [V04 loc1]
- sub w2, w20, w2
- add x3, x22, x0
- mov x0, x19
- ; gcrRegs +[x0]
+ ldr w1, [fp, #0x20] // [V04 loc1]
+ sbfiz x1, x1, #1, #32
+ add x2, x21, x1
+ ldr w3, [fp, #0x20] // [V04 loc1]
+ sub w3, w19, w3
+ add x4, x22, x1
+ mov x1, x2
+ mov w2, w3
+ mov x3, x4
ldr w4, [fp, #0x20] // [V04 loc1]
sub w4, w23, w4
+ mov x0, x20
+ ; gcrRegs +[x0]
mov w5, #1
movz x6, #0xD1FFAB1E // code for System.Globalization.TextInfo:IcuChangeCase(ulong,int,ulong,int,ubyte):this
movk x6, #0xD1FFAB1E LSL #16
movk x6, #1 LSL #32
ldr x6, [x6]
blr x6
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0 x20]
; byrRegs -[x21-x22]
stp xzr, xzr, [fp, #0x10] // [V09 loc6], [V07 loc4]
- ;; size=68 bbWeight=0.50 PerfScore 8.75
+ ;; size=80 bbWeight=0.50 PerfScore 9.50
G_M14148_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -279,7 +281,7 @@ G_M14148_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 420, prolog size 24, PerfScore 56.25, instruction count 105, allocated bytes for code 420 (MethodHash=53d9c8bb) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 432, prolog size 24, PerfScore 57.00, instruction count 108, allocated bytes for code 432 (MethodHash=53d9c8bb) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -290,7 +292,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.88%) : 41343.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M44302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44302_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44302_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M44302_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
coreclr_tests.run.osx.arm64.checked.mch
-48 (-30.00%) : 502373.dasm - (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
@@ -11,7 +11,7 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) multireg-arg single-def <System.Runtime.Intrinsics.Vector256`1[int]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.S11U>
;* V02 arg2 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
-; V03 arg3 [V03,T04] ( 3, 3 ) struct (16) [fp+0x60] do-not-enreg[SA] multireg-arg single-def <ABIStress.S9U>
+; V03 arg3 [V03,T01] ( 4, 4 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <ABIStress.S9U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4P>
;* V05 arg5 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Int128>
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S3U>
@@ -25,89 +25,72 @@
;* V14 arg14 [V14 ] ( 0, 0 ) float -> zero-ref single-def
;* V15 arg15 [V15 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
;* V16 arg16 [V16 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] single-def <ABIStress.S3U>
-; V17 arg17 [V17,T11] ( 1, 1 ) struct (16) [fp+0xC8] do-not-enreg[S] single-def <ABIStress.S15U>
-; V18 arg18 [V18,T12] ( 1, 1 ) struct (16) [fp+0xD8] do-not-enreg[SF] single-def <ABIStress.S12U>
+; V17 arg17 [V17,T06] ( 2, 2 ) struct (16) [fp+0x88] do-not-enreg[SA] multireg-arg single-def <ABIStress.S15U>
+; V18 arg18 [V18,T07] ( 1, 1 ) struct (16) [fp+0x98] do-not-enreg[SF] single-def <ABIStress.S12U>
;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2P>
;* V21 tmp2 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S4U>
;* V22 tmp3 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S2P>
-;* V23 tmp4 [V23,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V24 tmp5 [V24,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V25 tmp6 [V25,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V26 tmp7 [V26,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V27 tmp8 [V27,T22] ( 2, 2 ) simd16 -> d0 HFA(simd16) single-def "field V00._lower (fldOffset=0x0)" P-INDEP
-; V28 tmp9 [V28,T23] ( 2, 2 ) simd16 -> d1 HFA(simd16) single-def "field V00._upper (fldOffset=0x10)" P-INDEP
-; V29 tmp10 [V29,T06] ( 1, 1 ) ubyte -> x2 single-def "field V02.F0 (fldOffset=0x0)" P-INDEP
-; V30 tmp11 [V30,T07] ( 1, 1 ) int -> x5 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
-; V31 tmp12 [V31,T08] ( 1, 1 ) long -> x6 single-def "field V05._lower (fldOffset=0x0)" P-INDEP
-; V32 tmp13 [V32,T09] ( 1, 1 ) long -> x7 single-def "field V05._upper (fldOffset=0x8)" P-INDEP
+;* V23 tmp4 [V23,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V24 tmp5 [V24,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V25 tmp6 [V25,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V26 tmp7 [V26,T11] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V27 tmp8 [V27,T17] ( 2, 2 ) simd16 -> d0 HFA(simd16) single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+; V28 tmp9 [V28,T18] ( 2, 2 ) simd16 -> d1 HFA(simd16) single-def "field V00._upper (fldOffset=0x10)" P-INDEP
+; V29 tmp10 [V29,T02] ( 1, 1 ) ubyte -> x2 single-def "field V02.F0 (fldOffset=0x0)" P-INDEP
+; V30 tmp11 [V30,T03] ( 1, 1 ) int -> x5 single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
+; V31 tmp12 [V31,T04] ( 1, 1 ) long -> x6 single-def "field V05._lower (fldOffset=0x0)" P-INDEP
+; V32 tmp13 [V32,T05] ( 1, 1 ) long -> x7 single-def "field V05._upper (fldOffset=0x8)" P-INDEP
;* V33 tmp14 [V33 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V15.F0 (fldOffset=0x0)" P-INDEP
-;* V34 tmp15 [V34,T17] ( 0, 0 ) short -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
-;* V35 tmp16 [V35,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
-;* V36 tmp17 [V36,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
-;* V37 tmp18 [V37,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
-;* V38 tmp19 [V38,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
+;* V34 tmp15 [V34,T12] ( 0, 0 ) short -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
+;* V35 tmp16 [V35,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
+;* V36 tmp17 [V36,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
+;* V37 tmp18 [V37,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
+;* V38 tmp19 [V38,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
;* V39 tmp20 [V39 ] ( 0, 0 ) short -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
-; V40 tmp21 [V40,T00] ( 5, 10 ) struct ( 8) [fp+0x58] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
-; V41 tmp22 [V41,T02] ( 3, 6 ) struct (16) [fp+0x48] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S9U>
-; V42 tmp23 [V42,T05] ( 2, 4 ) int -> x2 "argument with side effect"
-; V43 tmp24 [V43,T03] ( 3, 6 ) struct (16) [fp+0x38] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S15U>
-; V44 tmp25 [V44,T01] ( 4, 8 ) struct (32) [fp+0x18] HFA(simd16) do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Runtime.Intrinsics.Vector256`1[int]>
-;* V45 tmp26 [V45,T10] ( 0, 0 ) int -> zero-ref "argument with side effect"
+; V40 tmp21 [V40,T00] ( 5, 10 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
;
-; Lcl frame size = 96
+; Lcl frame size = 32
G_M63451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp x3, x4, [fp, #0x60] // [V03 arg3], [V03 arg3+0x08]
+ stp x3, x4, [fp, #0x20] // [V03 arg3], [V03 arg3+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M63451_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x60]
- str x0, [fp, #0x48]
- ldrb w0, [fp, #0x68]
- strb w0, [fp, #0x50]
- ldrb w2, [fp, #0xE0] // [V18 arg18+0x08]
- ldr x0, [fp, #0xC8]
- str x0, [fp, #0x38]
- ldr x0, [fp, #0xCF]
- str x0, [fp, #0x3F]
- str q0, [fp, #0x18] // [V44 tmp25]
- str q1, [fp, #0x28] // [V44 tmp25+0x10]
- mov w0, #6
- strb w0, [fp, #0x58] // [V40 tmp21]
- mov w0, #36
- strb w0, [fp, #0x59] // [V40 tmp21+0x01]
- mov w0, #53
- strb w0, [fp, #0x5A] // [V40 tmp21+0x02]
- mov w0, #255
- strb w0, [fp, #0x5B] // [V40 tmp21+0x03]
+ mov w7, #6
+ strb w7, [fp, #0x18] // [V40 tmp21]
+ mov w7, #36
+ strb w7, [fp, #0x19] // [V40 tmp21+0x01]
+ mov w7, #53
+ strb w7, [fp, #0x1A] // [V40 tmp21+0x02]
+ mov w7, #255
+ strb w7, [fp, #0x1B] // [V40 tmp21+0x03]
nop
- ;; size=80 bbWeight=1 PerfScore 22.50
+ ;; size=36 bbWeight=1 PerfScore 6.50
G_M63451_IG03: ; bbWeight=1, nogc, extend
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- movk x0, #0xD1FFAB1E LSL #48
- str x0, [fp, #0x70] // [V06 arg6]
- ldp x0, x1, [fp, #0x48] // [V41 tmp22], [V41 tmp22+0x08]
- ldp x3, x4, [fp, #0x38] // [V43 tmp24], [V43 tmp24+0x08]
- ldr q0, [fp, #0x18] // [V44 tmp25]
- ldr q1, [fp, #0x28] // [V44 tmp25+0x10]
- ldr w7, [fp, #0x58] // [V40 tmp21]
+ movz x7, #0xD1FFAB1E
+ movk x7, #0xD1FFAB1E LSL #16
+ movk x7, #0xD1FFAB1E LSL #32
+ movk x7, #0xD1FFAB1E LSL #48
+ str x7, [fp, #0x30] // [V06 arg6]
+ ldr w7, [fp, #0x18] // [V40 tmp21]
+ ldp x0, x1, [fp, #0x20] // [V03 arg3], [V03 arg3+0x08]
+ ldp x3, x4, [fp, #0x88] // [V17 arg17], [V17 arg17+0x08]
+ ldrb w2, [fp, #0xA0] // [V18 arg18+0x08]
movn w6, #0xD1FFAB1E
movz x5, #0xD1FFAB1E
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
movk x5, #0xD1FFAB1E LSL #48
- ;; size=60 bbWeight=1 PerfScore 17.50
+ ;; size=56 bbWeight=1 PerfScore 15.50
G_M63451_IG04: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x70
+ ldp fp, lr, [sp], #0x30
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 160, prolog size 12, PerfScore 44.50, instruction count 40, allocated bytes for code 160 (MethodHash=47390824) for method (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
+; Total bytes of code 112, prolog size 12, PerfScore 26.50, instruction count 28, allocated bytes for code 112 (MethodHash=47390824) for method (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
; ============================================================
Unwind Info:
@@ -118,7 +101,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,7 +109,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
-44 (-26.83%) : 242957.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-16 (-26.67%) : 502864.dasm - (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
@@ -8,44 +8,39 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 3, 3 ) struct (16) [fp+0x30] do-not-enreg[SA] multireg-arg single-def <ABIStress.S10U>
+; V00 arg0 [V00,T00] ( 4, 4 ) struct (16) [fp+0x20] do-not-enreg[SA] multireg-arg single-def <ABIStress.S10U>
;* V01 arg1 [V01 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) single-def <System.Runtime.Intrinsics.Vector128`1[int]>
;* V02 arg2 [V02 ] ( 0, 0 ) short -> zero-ref single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V05 tmp2 [V05,T03] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V06 tmp3 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V07 tmp4 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
-;* V08 tmp5 [V08,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F1 (fldOffset=0x1)" P-INDEP
-; V09 tmp6 [V09,T00] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V10 tmp7 [V10,T01] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <ABIStress.S10U>
+;* V05 tmp2 [V05,T02] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V06 tmp3 [V06,T03] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V07 tmp4 [V07,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
+;* V08 tmp5 [V08,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.F1 (fldOffset=0x1)" P-INDEP
+; V09 tmp6 [V09,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M42108_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp x0, x1, [fp, #0x30] // [V00 arg0], [V00 arg0+0x08]
+ stp x0, x1, [fp, #0x20] // [V00 arg0], [V00 arg0+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M42108_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x30]
- str x0, [fp, #0x18]
- ldrh w0, [fp, #0x38]
- strh w0, [fp, #0x20]
- mov w0, #191
- strb w0, [fp, #0x28] // [V09 tmp6]
- mov w0, #168
- strb w0, [fp, #0x29] // [V09 tmp6+0x01]
- ldp x0, x1, [fp, #0x18] // [V10 tmp7], [V10 tmp7+0x08]
- ldrh w2, [fp, #0x28] // [V09 tmp6]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ mov w2, #191
+ strb w2, [fp, #0x18] // [V09 tmp6]
+ mov w2, #168
+ strb w2, [fp, #0x19] // [V09 tmp6+0x01]
+ ldrh w2, [fp, #0x18] // [V09 tmp6]
+ ldp x0, x1, [fp, #0x20] // [V00 arg0], [V00 arg0+0x08]
+ ;; size=24 bbWeight=1 PerfScore 8.00
G_M42108_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 12, PerfScore 18.50, instruction count 15, allocated bytes for code 60 (MethodHash=cee55b83) for method (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
+; Total bytes of code 44, prolog size 12, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=cee55b83) for method (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
; ============================================================
Unwind Info:
@@ -56,7 +51,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -64,7 +59,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+4 (+3.85%) : 580260.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
@@ -12,21 +12,20 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <NotEmptyStructConstrainedGenQ`1[int]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (16) [fp+0x20] do-not-enreg[XSA] multireg-arg addr-exposed "UNBOXing a register returnable nullable" <System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]>
-;* V04 tmp2 [V04,T07] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]>
+;* V04 tmp2 [V04,T06] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] "impAppendStmt" <System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "spilled call-like call argument" <NotEmptyStructConstrainedGenQ`1[int]>
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <NotEmptyStructConstrainedGenQ`1[int]>
;* V07 tmp5 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
; V08 tmp6 [V08,T04] ( 3, 2 ) ubyte -> x0 "Inline return value spill temp"
-;* V09 tmp7 [V09,T08] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]>
+;* V09 tmp7 [V09,T07] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]>
;* V10 tmp8 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <NotEmptyStructConstrainedGenQ`1[int]>
-;* V11 tmp9 [V11,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V12 tmp10 [V12,T10] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+;* V11 tmp9 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V12 tmp10 [V12,T09] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "V09.[000..001)"
-; V14 tmp12 [V14,T05] ( 2, 2 ) ubyte -> x1 single-def "V04.[000..001)"
-; V15 tmp13 [V15,T00] ( 3, 6 ) byref -> x0 single-def "Spilling address for field-by-field copy"
+; V14 tmp12 [V14,T05] ( 2, 2 ) ubyte -> x0 single-def "V04.[000..001)"
+; V15 tmp13 [V15,T00] ( 3, 6 ) byref -> x1 single-def "Spilling address for field-by-field copy"
; V16 tmp14 [V16,T03] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <NotEmptyStructConstrainedGenQ`1[int]>
-; V17 tmp15 [V17,T06] ( 2, 2 ) long -> x0 "argument with side effect"
-; V18 cse0 [V18,T02] ( 2, 1.50) long -> x0 "CSE - aggressive"
+; V17 cse0 [V17,T02] ( 2, 1.50) long -> x2 "CSE - aggressive"
;
; Lcl frame size = 32
@@ -43,26 +42,27 @@ G_M2442_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
movk x1, #1 LSL #32
bl CORINFO_HELP_UNBOX_NULLABLE
; gcrRegs -[x2]
- add x0, fp, #32 // [V03 tmp1]
- ; byrRegs +[x0]
- ldrb w1, [x0]
- ldr x0, [x0, #0x04]
- ; byrRegs -[x0]
- cbz w1, G_M2442_IG04
+ add x1, fp, #32 // [V03 tmp1]
+ ; byrRegs +[x1]
+ ldrb w0, [x1]
+ ldr x2, [x1, #0x04]
+ cbz w0, G_M2442_IG04
;; size=36 bbWeight=1 PerfScore 10.50
G_M2442_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x1]
mov w1, #1
strb w1, [fp, #0x18] // [V16 tmp14]
mov w1, #12
str w1, [fp, #0x1C] // [V16 tmp14+0x04]
ldr x1, [fp, #0x18] // [V16 tmp14]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for Helper:Compare(NotEmptyStructConstrainedGenQ`1[int],NotEmptyStructConstrainedGenQ`1[int]):ubyte
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
b G_M2442_IG05
- ;; size=44 bbWeight=0.50 PerfScore 5.75
+ ;; size=48 bbWeight=0.50 PerfScore 6.00
G_M2442_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
@@ -71,7 +71,7 @@ G_M2442_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 20.50, instruction count 26, allocated bytes for code 104 (MethodHash=b6abf675) for method NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
+; Total bytes of code 108, prolog size 8, PerfScore 20.75, instruction count 27, allocated bytes for code 108 (MethodHash=b6abf675) for method NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -82,7 +82,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.88%) : 402680.dasm - SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
@@ -8,50 +8,46 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 3, 3 ) int -> x0 single-def
-; V01 arg1 [V01,T02] ( 3, 3 ) int -> x1 single-def
+; V01 arg1 [V01,T02] ( 3, 3 ) int -> x7 single-def
; V02 arg2 [V02,T03] ( 3, 3 ) int -> x2 single-def
; V03 arg3 [V03,T04] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T05] ( 3, 3 ) int -> x4 single-def
-; V05 arg5 [V05,T06] ( 3, 3 ) int -> x5 single-def
+; V05 arg5 [V05,T06] ( 3, 3 ) int -> x8 single-def
; V06 arg6 [V06,T07] ( 3, 3 ) int -> x6 single-def
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <SP1d+S>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T13] ( 2, 2 ) int -> x3 single-def "field V07.i0 (fldOffset=0x0)" P-INDEP
-; V10 tmp2 [V10,T14] ( 2, 2 ) int -> x2 single-def "field V07.i1 (fldOffset=0x4)" P-INDEP
+; V09 tmp1 [V09,T08] ( 2, 2 ) int -> x3 single-def "field V07.i0 (fldOffset=0x0)" P-INDEP
+; V10 tmp2 [V10,T09] ( 2, 2 ) int -> x2 single-def "field V07.i1 (fldOffset=0x4)" P-INDEP
; V11 tmp3 [V11,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <SP1d+S>
-; V12 tmp4 [V12,T08] ( 2, 4 ) int -> x1 "argument with side effect"
-; V13 tmp5 [V13,T09] ( 2, 4 ) int -> x7 "argument with side effect"
-; V14 tmp6 [V14,T10] ( 2, 4 ) int -> x4 "argument with side effect"
-; V15 tmp7 [V15,T11] ( 2, 4 ) int -> x5 "argument with side effect"
-; V16 tmp8 [V16,T12] ( 2, 4 ) int -> x6 "argument with side effect"
;
; Lcl frame size = 16
G_M13440_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w7, w1
+ mov w8, w5
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M13440_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- sxtw w7, w0
stp w3, w2, [fp, #0x18] // [V11 tmp3], [V11 tmp3+0x04]
- mov w0, w1
- mov w1, w7
- mov w2, w4
- mov w3, w5
- mov w4, w6
ldr x5, [fp, #0x18] // [V11 tmp3]
+ mov w1, w0
+ mov w2, w4
+ mov w3, w8
+ mov w4, w6
+ mov w0, w7
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #1 LSL #32
ldr x6, [x6]
blr x6
- ;; size=52 bbWeight=1 PerfScore 11.50
+ ;; size=48 bbWeight=1 PerfScore 11.00
G_M13440_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 15.00, instruction count 17, allocated bytes for code 68 (MethodHash=0379cb7f) for method SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 15.50, instruction count 18, allocated bytes for code 72 (MethodHash=0379cb7f) for method SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -62,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
+36 (+13.85%) : 503578.dasm - (dynamicClass):ABIStress_TailCaller965(ABIStress.S12U,System.Int128,System.Numerics.Vector
1[int],ABIStress.S9U,ABIStress.I128_1,ABIStress.S4U,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S5U,double,ABIStress.S6U,ABIStress.Hfa2,System.Runtime.Intrinsics.Vector1281[int],ubyte,long):int (FullOpts)@@ -8,17 +8,17 @@
; 0 inlinees with PGO data; 6 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 4, 4 ) struct (16) [fp+0x40] do-not-enreg[SFA] multireg-arg single-def <ABIStress.S12U>
+; V00 arg0 [V00,T02] ( 4, 4 ) struct (16) [fp+0x50] do-not-enreg[SFA] multireg-arg single-def <ABIStress.S12U>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Int128>
;* V02 arg2 [V02 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) single-def <System.Numerics.Vector`1[int]>
;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.S9U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg single-def <ABIStress.I128_1>
-; V05 arg5 [V05,T12] ( 1, 1 ) struct ( 8) [fp+0x50] do-not-enreg[S] single-def <ABIStress.S4U>
+; V05 arg5 [V05,T09] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] single-def <ABIStress.S4U>
;* V06 arg6 [V06 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] single-def <ABIStress.S13U>
;* V07 arg7 [V07 ] ( 0, 0 ) struct (32) zero-ref HFA(double) multireg-arg single-def <ABIStress.Hfa2>
-; V08 arg8 [V08,T11] ( 2, 2 ) struct ( 8) [fp+0x68] do-not-enreg[S] single-def <ABIStress.S5U>
+; V08 arg8 [V08,T10] ( 1, 1 ) struct ( 8) [fp+0x78] do-not-enreg[S] single-def <ABIStress.S5U>
;* V09 arg9 [V09 ] ( 0, 0 ) double -> zero-ref single-def
-; V10 arg10 [V10,T13] ( 1, 1 ) struct ( 8) [fp+0x70] do-not-enreg[S] single-def <ABIStress.S6U>
+; V10 arg10 [V10,T11] ( 1, 1 ) struct ( 8) [fp+0x80] do-not-enreg[S] single-def <ABIStress.S6U>
;* V11 arg11 [V11 ] ( 0, 0 ) struct (32) zero-ref HFA(double) do-not-enreg[S] single-def <ABIStress.Hfa2>
;* V12 arg12 [V12 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) single-def <System.Runtime.Intrinsics.Vector128`1[int]>
;* V13 arg13 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def
@@ -33,134 +33,139 @@
;* V22 tmp7 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S4P>
;* V23 tmp8 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S1P>
;* V24 tmp9 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S8P>
-; V25 tmp10 [V25,T00] ( 13, 26 ) struct (16) [fp+0x30] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <ABIStress.S11U>
+; V25 tmp10 [V25,T00] ( 13, 26 ) struct (16) [fp+0x40] do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <ABIStress.S11U>
;* V26 tmp11 [V26 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S1P>
-;* V27 tmp12 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V28 tmp13 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V29 tmp14 [V29,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V30 tmp15 [V30,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V31 tmp16 [V31,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V32 tmp17 [V32,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V33 tmp18 [V33,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V34 tmp19 [V34,T21] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V35 tmp20 [V35,T22] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V36 tmp21 [V36,T23] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V37 tmp22 [V37,T24] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V38 tmp23 [V38,T25] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V39 tmp24 [V39,T26] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V40 tmp25 [V40,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V41 tmp26 [V41,T28] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V42 tmp27 [V42,T29] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V43 tmp28 [V43,T09] ( 1, 1 ) long -> x2 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
-; V44 tmp29 [V44,T10] ( 1, 1 ) long -> x3 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
-; V45 tmp30 [V45,T41] ( 1, 1 ) double -> d1 single-def "field V07.F0 (fldOffset=0x0)" P-INDEP
-; V46 tmp31 [V46,T42] ( 1, 1 ) double -> d2 single-def "field V07.F1 (fldOffset=0x8)" P-INDEP
-; V47 tmp32 [V47,T43] ( 1, 1 ) double -> d3 single-def "field V07.F2 (fldOffset=0x10)" P-INDEP
-; V48 tmp33 [V48,T39] ( 2, 2 ) double -> d4 single-def "field V07.F3 (fldOffset=0x18)" P-INDEP
-;* V49 tmp34 [V49,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F0 (fldOffset=0x0)" P-INDEP
-;* V50 tmp35 [V50,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F1 (fldOffset=0x1)" P-INDEP
-;* V51 tmp36 [V51,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F0 (fldOffset=0x0)" P-INDEP
-;* V52 tmp37 [V52,T33] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F1 (fldOffset=0x1)" P-INDEP
-;* V53 tmp38 [V53,T34] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F2 (fldOffset=0x2)" P-INDEP
+;* V27 tmp12 [V27,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V28 tmp13 [V28,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V29 tmp14 [V29,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V30 tmp15 [V30,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V31 tmp16 [V31,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V32 tmp17 [V32,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V33 tmp18 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V34 tmp19 [V34,T19] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V35 tmp20 [V35,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V36 tmp21 [V36,T21] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V37 tmp22 [V37,T22] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V38 tmp23 [V38,T23] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V39 tmp24 [V39,T24] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V40 tmp25 [V40,T25] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V41 tmp26 [V41,T26] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V42 tmp27 [V42,T27] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V43 tmp28 [V43,T07] ( 1, 1 ) long -> x2 single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+; V44 tmp29 [V44,T08] ( 1, 1 ) long -> x3 single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+; V45 tmp30 [V45,T37] ( 1, 1 ) double -> d1 single-def "field V07.F0 (fldOffset=0x0)" P-INDEP
+; V46 tmp31 [V46,T38] ( 1, 1 ) double -> d2 single-def "field V07.F1 (fldOffset=0x8)" P-INDEP
+; V47 tmp32 [V47,T39] ( 1, 1 ) double -> d3 single-def "field V07.F2 (fldOffset=0x10)" P-INDEP
+; V48 tmp33 [V48,T36] ( 3, 3 ) double -> d4 single-def "field V07.F3 (fldOffset=0x18)" P-INDEP
+;* V49 tmp34 [V49,T28] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F0 (fldOffset=0x0)" P-INDEP
+;* V50 tmp35 [V50,T29] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.F1 (fldOffset=0x1)" P-INDEP
+;* V51 tmp36 [V51,T30] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F0 (fldOffset=0x0)" P-INDEP
+;* V52 tmp37 [V52,T31] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F1 (fldOffset=0x1)" P-INDEP
+;* V53 tmp38 [V53,T32] ( 0, 0 ) ubyte -> zero-ref single-def "field V17.F2 (fldOffset=0x2)" P-INDEP
;* V54 tmp39 [V54 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
;* V55 tmp40 [V55 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F1 (fldOffset=0x1)" P-INDEP
-;* V56 tmp41 [V56,T35] ( 0, 0 ) int -> zero-ref single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
+;* V56 tmp41 [V56,T33] ( 0, 0 ) int -> zero-ref single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
;* V57 tmp42 [V57 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
;* V58 tmp43 [V58 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.F1 (fldOffset=0x1)" P-INDEP
;* V59 tmp44 [V59 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V20.F2 (fldOffset=0x2)" P-INDEP
-;* V60 tmp45 [V60,T36] ( 0, 0 ) long -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
+;* V60 tmp45 [V60,T34] ( 0, 0 ) long -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
;* V61 tmp46 [V61 ] ( 0, 0 ) int -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
-;* V62 tmp47 [V62,T37] ( 0, 0 ) ubyte -> zero-ref single-def "field V23.F0 (fldOffset=0x0)" P-INDEP
+;* V62 tmp47 [V62,T35] ( 0, 0 ) ubyte -> zero-ref single-def "field V23.F0 (fldOffset=0x0)" P-INDEP
;* V63 tmp48 [V63 ] ( 0, 0 ) long -> zero-ref single-def "field V24.F0 (fldOffset=0x0)" P-INDEP
;* V64 tmp49 [V64 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V26.F0 (fldOffset=0x0)" P-INDEP
-; V65 tmp50 [V65,T03] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V66 tmp51 [V66,T01] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
-; V67 tmp52 [V67,T40] ( 2, 4 ) double -> d0 "argument with side effect"
-; V68 tmp53 [V68,T04] ( 2, 4 ) long -> x0 "argument with side effect"
-; V69 tmp54 [V69,T05] ( 2, 4 ) long -> x1 "argument with side effect"
-; V70 tmp55 [V70,T06] ( 2, 4 ) long -> x2 "argument with side effect"
-; V71 tmp56 [V71,T38] ( 3, 6 ) double -> d0 "argument with side effect"
-; V72 tmp57 [V72,T07] ( 2, 4 ) int -> x5 "argument with side effect"
-; V73 rat0 [V73,T08] ( 2, 4 ) struct ( 8) [fp+0x18] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S4U>
+; V65 tmp50 [V65,T03] ( 3, 6 ) struct ( 8) [fp+0x38] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
+; V66 tmp51 [V66,T01] ( 4, 8 ) struct ( 8) [fp+0x30] do-not-enreg[SF] "by-value struct argument" <ABIStress.S3U>
+; V67 rat0 [V67,T05] ( 2, 4 ) struct ( 8) [fp+0x28] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S4U>
+; V68 rat1 [V68,T04] ( 3, 6 ) struct ( 8) [fp+0x20] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S5U>
+; V69 rat2 [V69,T06] ( 2, 4 ) struct ( 8) [fp+0x18] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S6U>
;
-; Lcl frame size = 64
+; Lcl frame size = 80
G_M63761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- stp x0, x1, [fp, #0x40] // [V00 arg0], [V00 arg0+0x08]
+ stp x0, x1, [fp, #0x50] // [V00 arg0], [V00 arg0+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M63761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- str xzr, [fp, #0x30]
- str wzr, [fp, #0x37]
- mov w0, #62
- strb w0, [fp, #0x30] // [V25 tmp10]
- mov w0, #133
- strb w0, [fp, #0x31] // [V25 tmp10+0x01]
- mov w0, #188
- strb w0, [fp, #0x32] // [V25 tmp10+0x02]
- mov w0, #17
- strb w0, [fp, #0x33] // [V25 tmp10+0x03]
- mov w0, #44
- strb w0, [fp, #0x34] // [V25 tmp10+0x04]
- mov w0, #182
- strb w0, [fp, #0x35] // [V25 tmp10+0x05]
- mov w0, #76
- strb w0, [fp, #0x36] // [V25 tmp10+0x06]
- mov w0, #121
- strb w0, [fp, #0x37] // [V25 tmp10+0x07]
- mov w0, #144
- strb w0, [fp, #0x38] // [V25 tmp10+0x08]
- mov w0, #100
- strb w0, [fp, #0x39] // [V25 tmp10+0x09]
- mov w0, #75
- strb w0, [fp, #0x3A] // [V25 tmp10+0x0a]
- fmov d0, d4
- ldp x1, x0, [fp, #0x68] // [V08 arg8], [V10 arg10]
- ldr x2, [fp, #0x68] // [V08 arg8]
+ str xzr, [fp, #0x40]
+ str wzr, [fp, #0x47]
+ mov w4, #62
+ strb w4, [fp, #0x40] // [V25 tmp10]
+ mov w4, #133
+ strb w4, [fp, #0x41] // [V25 tmp10+0x01]
+ mov w4, #188
+ strb w4, [fp, #0x42] // [V25 tmp10+0x02]
+ mov w4, #17
+ strb w4, [fp, #0x43] // [V25 tmp10+0x03]
+ mov w4, #44
+ strb w4, [fp, #0x44] // [V25 tmp10+0x04]
+ mov w4, #182
+ strb w4, [fp, #0x45] // [V25 tmp10+0x05]
+ mov w4, #76
+ strb w4, [fp, #0x46] // [V25 tmp10+0x06]
+ mov w4, #121
+ strb w4, [fp, #0x47] // [V25 tmp10+0x07]
+ mov w4, #144
+ strb w4, [fp, #0x48] // [V25 tmp10+0x08]
+ mov w4, #100
+ strb w4, [fp, #0x49] // [V25 tmp10+0x09]
+ mov w4, #75
+ strb w4, [fp, #0x4A] // [V25 tmp10+0x0a]
mov w4, #176
- strb w4, [fp, #0x28] // [V65 tmp50]
+ strb w4, [fp, #0x38] // [V65 tmp50]
mov w4, #110
- strb w4, [fp, #0x29] // [V65 tmp50+0x01]
- ldrb w5, [fp, #0x42] // [V00 arg0+0x02]
+ strb w4, [fp, #0x39] // [V65 tmp50+0x01]
mov w4, #238
- strb w4, [fp, #0x20] // [V66 tmp51]
+ strb w4, [fp, #0x30] // [V66 tmp51]
mov w4, #21
- strb w4, [fp, #0x21] // [V66 tmp51+0x01]
+ strb w4, [fp, #0x31] // [V66 tmp51+0x01]
mov w4, #79
- strb w4, [fp, #0x22] // [V66 tmp51+0x02]
+ strb w4, [fp, #0x32] // [V66 tmp51+0x02]
nop
- ;; size=156 bbWeight=1 PerfScore 34.00
+ ;; size=140 bbWeight=1 PerfScore 26.50
G_M63761_IG03: ; bbWeight=1, nogc, extend
- ldr w4, [fp, #0x50] // [V05 arg5]
- str w4, [fp, #0x18] // [V73 rat0]
+ ldr w4, [fp, #0x60] // [V05 arg5]
+ str w4, [fp, #0x28] // [V67 rat0]
+ ldr w4, [fp, #0x78]
+ str w4, [fp, #0x20]
+ ldrb w4, [fp, #0x7C]
+ strb w4, [fp, #0x24]
+ ldr w4, [fp, #0x80]
+ str w4, [fp, #0x18]
+ ldrh w4, [fp, #0x84]
+ strh w4, [fp, #0x1C]
movz w4, #0xD1FFAB1E
movk w4, #0xD1FFAB1E LSL #16
- str w4, [fp, #0x50] // [V05 arg5]
+ str w4, [fp, #0x60] // [V05 arg5]
movz x4, #0xD1FFAB1E
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
movk x4, #0xD1FFAB1E LSL #48
- str x4, [fp, #0x58] // [V05 arg5+0x08]
+ str x4, [fp, #0x68] // [V05 arg5+0x08]
mov w4, #229
- str w4, [fp, #0x60] // [V05 arg5+0x10]
- ldp x4, x6, [fp, #0x30] // [V25 tmp10]
- stp x4, x6, [fp, #0x68] // [V05 arg5+0x18]
- ldrb w4, [fp, #0x45] // [V00 arg0+0x05]
- strb w4, [fp, #0x78] // [V05 arg5+0x28]
- fmov d1, d0
- ldrh w4, [fp, #0x28] // [V65 tmp50]
- ldr w6, [fp, #0x20] // [V66 tmp51]
- ldr w7, [fp, #0x18] // [V73 rat0]
+ str w4, [fp, #0x70] // [V05 arg5+0x10]
+ ldp x4, x6, [fp, #0x40] // [V25 tmp10]
+ stp x4, x6, [fp, #0x78] // [V05 arg5+0x18]
+ ldrb w4, [fp, #0x55] // [V00 arg0+0x05]
+ strb w4, [fp, #0x88] // [V05 arg5+0x28]
+ ldrh w4, [fp, #0x38] // [V65 tmp50]
+ ldr w6, [fp, #0x30] // [V66 tmp51]
+ ldr x1, [fp, #0x20] // [V68 rat1]
+ mov x2, x1
+ fmov d1, d4
+ fmov d0, d4
+ ldrb w5, [fp, #0x52] // [V00 arg0+0x02]
+ ldr x0, [fp, #0x18] // [V69 rat2]
+ ldr w7, [fp, #0x28] // [V67 rat0]
mov w3, #0xD1FFAB1E
- ;; size=84 bbWeight=1 PerfScore 23.50
+ ;; size=136 bbWeight=1 PerfScore 42.50
G_M63761_IG04: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
...
libraries.crossgen2.osx.arm64.checked.mch
-12 (-21.43%) : 150538.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[System.DateTime]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[System.DateTime]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M46195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M46195_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M46195_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-21.43%) : 150563.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[ulong]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M16550_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-21.43%) : 150552.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[long]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M61747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M61747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M61747_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+24 (+5.83%) : 129287.dasm - System.Reflection.Metadata.Ecma335.CustomAttributeDecoder
1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)@@ -8,61 +8,59 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 4, 10 ) byref -> x19 this single-def
-; V01 TypeCtx [V01,T15] ( 6, 4.50) long -> x24 single-def
-; V02 arg1 [V02,T05] ( 3, 6 ) byref -> x21 single-def
-; V03 arg2 [V03,T06] ( 3, 6 ) byref -> x22 single-def
-; V04 arg3 [V04,T07] ( 6, 8 ) int -> x23 single-def
-; V05 arg4 [V05,T03] ( 3, 12 ) byref -> x20 single-def
-; V06 loc0 [V06,T16] ( 3, 5 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V07 loc1 [V07,T04] ( 4, 12.50) int -> x26
-; V08 loc2 [V08 ] ( 2, 8 ) struct (24) [fp+0x50] do-not-enreg[XS] must-init addr-exposed <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
+; V00 this [V00,T04] ( 4, 10 ) byref -> x20 this single-def
+; V01 TypeCtx [V01,T11] ( 6, 4.50) long -> x24 single-def
+; V02 arg1 [V02,T07] ( 3, 6 ) byref -> x22 single-def
+; V03 arg2 [V03,T08] ( 3, 6 ) byref -> x23 single-def
+; V04 arg3 [V04,T05] ( 6, 8 ) int -> x21 single-def
+; V05 arg4 [V05,T02] ( 3, 12 ) byref -> x19 single-def
+; V06 loc0 [V06,T12] ( 3, 5 ) ref -> x25 class-hnd single-def <<unknown class>>
+; V07 loc1 [V07,T03] ( 4, 12.50) int -> x26
+; V08 loc2 [V08 ] ( 2, 8 ) struct (24) [fp+0x48] do-not-enreg[XS] must-init addr-exposed <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]>
; V11 tmp2 [V11,T09] ( 2, 8 ) ref -> x0 "field V10.<Type>k__BackingField (fldOffset=0x0)" P-INDEP
; V12 tmp3 [V12,T10] ( 2, 8 ) ref -> x2 "field V10.<Value>k__BackingField (fldOffset=0x8)" P-INDEP
-; V13 tmp4 [V13,T17] ( 2, 2 ) long -> x0 "argument with side effect"
-; V14 tmp5 [V14 ] ( 2, 16 ) struct (32) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Reflection.Metadata.BlobReader>
-; V15 tmp6 [V15,T01] ( 2, 16 ) long -> x1 "argument with side effect"
-;* V16 tmp7 [V16,T11] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V17 tmp8 [V17,T12] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V18 tmp9 [V18 ] ( 2, 16 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
-; V19 tmp10 [V19,T02] ( 2, 16 ) long -> x1 "argument with side effect"
-;* V20 tmp11 [V20,T13] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V21 tmp12 [V21,T14] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V22 cse0 [V22,T08] ( 3, 8.50) long -> x24 hoist "CSE - aggressive"
+; V13 tmp4 [V13,T14] ( 2, 2 ) long -> x0 "argument with side effect"
+; V14 tmp5 [V14 ] ( 2, 16 ) struct (32) [fp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Reflection.Metadata.BlobReader>
+; V15 tmp6 [V15,T00] ( 2, 16 ) long -> x1 "argument with side effect"
+; V16 tmp7 [V16 ] ( 2, 16 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1+ArgumentTypeInfo[System.__Canon]>
+; V17 tmp8 [V17,T01] ( 2, 16 ) long -> x1 "argument with side effect"
+; V18 cse0 [V18,T06] ( 3, 8.50) long -> x24 hoist "CSE - aggressive"
+; V19 cse1 [V19,T13] ( 2, 4.50) long -> x27 hoist "CSE - aggressive"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
G_M22533_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0xB0]!
- stp x19, x20, [sp, #0x70]
- stp x21, x22, [sp, #0x80]
- stp x23, x24, [sp, #0x90]
- stp x25, x26, [sp, #0xA0]
+ stp x19, x20, [sp, #0x68]
+ stp x21, x22, [sp, #0x78]
+ stp x23, x24, [sp, #0x88]
+ stp x25, x26, [sp, #0x98]
+ str x27, [sp, #0xA8]
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 x1, [fp, #0x68]
- mov x19, x0
- ; byrRegs +[x19]
- mov x24, x1
- mov x21, x2
- ; byrRegs +[x21]
- mov x22, x3
- ; byrRegs +[x22]
- mov w23, w4
- mov x20, x5
+ str x1, [fp, #0x60]
+ mov x20, x0
; byrRegs +[x20]
- ;; size=72 bbWeight=1 PerfScore 13.50
-G_M22533_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=780000 {x19 x20 x21 x22}, byref, isz
- cbnz w23, G_M22533_IG05
+ mov x24, x1
+ mov x22, x2
+ ; byrRegs +[x22]
+ mov x23, x3
+ ; byrRegs +[x23]
+ mov w21, w4
+ mov x19, x5
+ ; byrRegs +[x19]
+ ;; size=76 bbWeight=1 PerfScore 14.50
+G_M22533_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=D80000 {x19 x20 x22 x23}, byref, isz
+ cbnz w21, G_M22533_IG05
;; size=4 bbWeight=1 PerfScore 1.00
G_M22533_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19-x22]
+ ; byrRegs -[x19-x20 x22-x23]
mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -79,22 +77,23 @@ G_M22533_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr x0, [x0, #0x08]
;; size=44 bbWeight=0.50 PerfScore 8.25
G_M22533_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0xA0]
- ldp x23, x24, [sp, #0x90]
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
+ ldr x27, [sp, #0xA8]
+ ldp x25, x26, [sp, #0x98]
+ ldp x23, x24, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0xB0
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
-G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=780000 {x19 x20 x21 x22}, gcvars, byref, isz
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
+G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=D80000 {x19 x20 x22 x23}, gcvars, byref, isz
; gcrRegs -[x0]
- ; byrRegs +[x19-x22]
+ ; byrRegs +[x19-x20 x22-x23]
mov x0, x24
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
- mov w1, w23
+ mov w1, w21
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x2, [x11]
@@ -103,7 +102,7 @@ G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
mov x25, x0
; gcrRegs +[x25]
mov w26, wzr
- cmp w23, #0
+ cmp w21, #0
ble G_M22533_IG09
mov x0, x24
; gcrRegs -[x0]
@@ -112,36 +111,39 @@ G_M22533_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x1, [x11]
blr x1
mov x24, x0
- ;; size=80 bbWeight=0.50 PerfScore 9.75
-G_M22533_IG06: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=780000 {x19 x20 x21 x22}, byref
+ adrp x27, [HIGH RELOC #0xD1FFAB1E]
+ add x27, x27, [LOW RELOC #0xD1FFAB1E]
+ ;; size=88 bbWeight=0.50 PerfScore 10.25
+G_M22533_IG06: ; bbWeight=4, gcrefRegs=2000000 {x25}, byrefRegs=D80000 {x19 x20 x22 x23}, byref
mov x1, x24
- ldp q16, q17, [x20]
- stp q16, q17, [fp, #0x30]
- add x3, fp, #48 // [V14 tmp5]
- mov x0, x19
+ ldp x3, x8, [x19]
+ stp x3, x8, [fp, #0x28]
+ ldp x3, x8, [x19, #0x10]
+ stp x3, x8, [fp, #0x38]
+ add x3, fp, #40 // [V14 tmp5]
+ add x8, fp, #72 // [V08 loc2]
+ mov x0, x20
; byrRegs +[x0]
- mov x2, x21
+ mov x2, x22
; byrRegs +[x2]
- add x8, fp, #80 // [V08 loc2]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ mov x11, x27
mov w4, wzr
ldr x5, [x11]
blr x5
; byrRegs -[x0 x2]
mov x1, x24
- ;; size=52 bbWeight=4 PerfScore 50.00
+ ;; size=56 bbWeight=4 PerfScore 72.00
G_M22533_IG07: ; bbWeight=4, nogc, extend
- ldp x0, x2, [fp, #0x50]
- stp x0, x2, [fp, #0x18]
- ldr x0, [fp, #0x60]
- str x0, [fp, #0x28]
+ ldp x0, x2, [fp, #0x48]
+ stp x0, x2, [fp, #0x10]
+ ldr x0, [fp, #0x58]
+ str x0, [fp, #0x20]
;; size=16 bbWeight=4 PerfScore 28.00
G_M22533_IG08: ; bbWeight=4, isz, extend
- add x3, fp, #24 // [V18 tmp9]
- mov x0, x19
+ add x3, fp, #16 // [V16 tmp7]
+ mov x0, x20
; byrRegs +[x0]
- mov x2, x22
+ mov x2, x23
; byrRegs +[x2]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,11 +162,11 @@ G_M22533_IG08: ; bbWeight=4, isz, extend
blr x3
; gcrRegs -[x0-x2]
add w26, w26, #1
- cmp w26, w23
+ cmp w26, w21
blt G_M22533_IG06
;; size=72 bbWeight=4 PerfScore 72.00
G_M22533_IG09: ; bbWeight=0.50, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
- ; byrRegs -[x19-x22]
+ ; byrRegs -[x19-x20 x22-x23]
mov x0, x25
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
@@ -175,26 +177,27 @@ G_M22533_IG09: ; bbWeight=0.50, gcrefRegs=2000000 {x25}, byrefRegs=0000 {
; gcrRegs -[x25]
;; size=24 bbWeight=0.50 PerfScore 4.25
G_M22533_IG10: ; bbWeight=0.50, epilog, nogc, extend
- ldp x25, x26, [sp, #0xA0]
- ldp x23, x24, [sp, #0x90]
- ldp x21, x22, [sp, #0x80]
- ldp x19, x20, [sp, #0x70]
+ ldr x27, [sp, #0xA8]
+ ldp x25, x26, [sp, #0x98]
+ ldp x23, x24, [sp, #0x88]
+ ldp x21, x22, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp], #0xB0
ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.00
+ ;; size=28 bbWeight=0.50 PerfScore 4.00
-; Total bytes of code 412, prolog size 48, PerfScore 192.75, instruction count 103, allocated bytes for code 412 (MethodHash=ae16a7fa) for method System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)
+; Total bytes of code 436, prolog size 52, PerfScore 218.25, instruction count 109, allocated bytes for code 436 (MethodHash=ae16a7fa) for method System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 103 (0x00067) Actual length = 412 (0x00019c)
+ Function Length : 109 (0x0006d) Actual length = 436 (0x0001b4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -205,10 +208,13 @@ Unwind Info:
---- Unwind codes ----
...
+20 (+6.02%) : 72502.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 12, 12 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -23,7 +23,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V13 tmp9 [V13 ] ( 4, 6 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V14 tmp10 [V14,T03] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V14 tmp10 [V14,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V07.array (fldOffset=0x0)" P-INDEP
@@ -32,16 +32,14 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref "field V11._bits (fldOffset=0x0)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) long -> zero-ref "field V11._bits0 (fldOffset=0x8)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
-; V23 tmp19 [V23,T10] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V23 tmp19 [V23,T08] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
; V24 tmp20 [V24 ] ( 4, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V13.array (fldOffset=0x0)" P-DEP
; V25 tmp21 [V25 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V26 tmp22 [V26,T00] ( 9, 18 ) ref -> x19 single-def "argument with side effect"
-; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V29 tmp25 [V29,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V30 tmp26 [V30,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V31 tmp27 [V31,T09] ( 2, 4 ) int -> x5 "argument with side effect"
-; V32 tmp28 [V32,T08] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V26 tmp22 [V26,T03] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
+; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V29 tmp25 [V29,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V30 tmp26 [V30,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
;
; Lcl frame size = 64
@@ -100,14 +98,9 @@ G_M12801_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=40 bbWeight=0.50 PerfScore 6.00
G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x19, x1]
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
+ ldrsb wzr, [x20]
adrp x3, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x3, x3, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x3]
@@ -121,44 +114,56 @@ G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=000
adrp x5, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x5, x5, [LOW RELOC #0xD1FFAB1E]
ldr x5, [x5]
- ldrb w5, [x19, x5]
+ ldr x5, [x19, x5]
+ ; gcrRegs +[x5]
adrp x6, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x6, x6, [LOW RELOC #0xD1FFAB1E]
ldr x6, [x6]
- ldr x6, [x19, x6]
- ; gcrRegs +[x6]
+ ldrb w6, [x19, x6]
adrp x7, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x7, x7, [LOW RELOC #0xD1FFAB1E]
ldr x7, [x7]
- add x7, x19, x7
- ; byrRegs +[x7]
- ;; size=104 bbWeight=1 PerfScore 45.50
-G_M12801_IG06: ; bbWeight=1, nogc, extend
- ldp x8, x11, [x7]
- stp x8, x11, [fp, #0x18]
- ldr x8, [x7, #0x10]
- str x8, [fp, #0x28]
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M12801_IG07: ; bbWeight=1, extend
- adrp x7, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; byrRegs -[x7]
- add x7, x7, [LOW RELOC #0xD1FFAB1E]
- ldr x7, [x7]
ldr x7, [x19, x7]
; gcrRegs +[x7]
- str x7, [sp] // [V04 OutArgs]
- mov x7, xzr
- str x7, [sp, #0x08] // [V04 OutArgs+0x08]
- str x0, [sp, #0x10] // [V04 OutArgs+0x10]
- mov x0, x19
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ add x0, x19, x0
+ ; byrRegs +[x0]
+ ;; size=104 bbWeight=1 PerfScore 45.50
+G_M12801_IG06: ; bbWeight=1, nogc, extend
+ ldp x8, x11, [x0]
+ stp x8, x11, [fp, #0x18]
+ ldr x8, [x0, #0x10]
+ str x8, [fp, #0x28]
+ ;; size=16 bbWeight=1 PerfScore 9.00
+G_M12801_IG07: ; bbWeight=1, extend
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
+ ; byrRegs -[x0]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ ldr x0, [x19, x0]
+ ; gcrRegs +[x0]
+ str x0, [sp] // [V04 OutArgs]
+ mov x0, xzr
+ str x0, [sp, #0x08] // [V04 OutArgs+0x08]
+ str x1, [sp, #0x10] // [V04 OutArgs+0x10]
+ mov x1, x3
+ mov x3, x4
+ mov x4, x5
+ mov w5, w6
+ ; gcrRegs -[x5]
+ mov x6, x7
+ ; gcrRegs +[x6]
add x7, fp, #24 // [V25 tmp21]
; gcrRegs -[x7]
+ mov x0, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x8, [x11]
blr x8
; gcrRegs -[x1-x4 x6 x19-x20]
- ;; size=56 bbWeight=1 PerfScore 16.50
+ ;; size=76 bbWeight=1 PerfScore 19.00
G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp, #0x18]
@@ -166,7 +171,7 @@ G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 3.50
-; Total bytes of code 332, prolog size 28, PerfScore 107.50, instruction count 83, allocated bytes for code 332 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 352, prolog size 28, PerfScore 110.00, instruction count 88, allocated bytes for code 352 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
; ============================================================
Unwind Info:
@@ -177,7 +182,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)
+4 (+7.14%) : 96547.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable1[int]):this (FullOpts)@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
; V03 arg3 [V03,T04] ( 3, 3 ) ubyte -> x3 single-def
@@ -17,33 +17,30 @@
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Nullable`1[int]>
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x5 single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V10 tmp2 [V10,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V11 tmp3 [V11,T12] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp4 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V13 tmp5 [V13,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V14 tmp6 [V14,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V15 tmp7 [V15,T09] ( 2, 4 ) int -> x2 "argument with side effect"
-; V16 tmp8 [V16,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V17 tmp9 [V17,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x11 single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V10 tmp2 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp3 [V11,T07] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+; V12 tmp4 [V12,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 16
G_M26014_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M26014_IG02: ; bbWeight=1, gcrefRegs=0033 {x0 x1 x4 x5}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1 x4-x5]
- uxtb w2, w3
- mov x3, x4
- ; gcrRegs +[x3]
- mov x4, x5
+ mov x11, x5
+ ; gcrRegs +[x11]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26014_IG02: ; bbWeight=1, gcrefRegs=0813 {x0 x1 x4 x11}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0-x1 x4]
strb wzr, [fp, #0x18] // [V12 tmp4]
str wzr, [fp, #0x1C] // [V12 tmp4+0x04]
ldr x5, [fp, #0x18] // [V12 tmp4]
- ; gcrRegs -[x5]
+ uxtb w2, w3
+ mov x3, x4
+ ; gcrRegs +[x3]
+ mov x4, x11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ ; gcrRegs -[x11]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x6, [x11]
blr x6
@@ -54,7 +51,7 @@ G_M26014_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 14.50, instruction count 15, allocated bytes for code 60 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ 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)
libraries.pmi.osx.arm64.checked.mch
-32 (-20.00%) : 77334.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V00 this [V00,T00] ( 15, 15 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -22,7 +22,7 @@
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp12 [V14,T02] ( 2, 2 ) ref -> x1 single-def "field V01.array (fldOffset=0x0)" P-INDEP
+; V14 tmp12 [V14,T01] ( 2, 2 ) ref -> x3 single-def "field V01.array (fldOffset=0x0)" P-INDEP
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,14 @@
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp20 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp21 [V23,T00] ( 13, 26 ) ref -> x2 single-def "argument with side effect"
-; V24 tmp22 [V24,T03] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
+; V23 tmp21 [V23,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V24 tmp22 [V24,T03] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
; V25 tmp23 [V25,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
; V26 tmp24 [V26,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V27 tmp25 [V27,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V28 tmp26 [V28,T07] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V27 tmp25 [V27,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V28 tmp26 [V28,T08] ( 2, 4 ) int -> x7 "argument with side effect"
; V29 tmp27 [V29,T09] ( 2, 4 ) int -> x8 "argument with side effect"
-; V30 tmp28 [V30,T10] ( 2, 4 ) int -> x9 "argument with side effect"
-; V31 tmp29 [V31,T11] ( 2, 4 ) int -> x10 "argument with side effect"
-; V32 tmp30 [V32,T08] ( 2, 4 ) ref -> x11 single-def "argument with side effect"
+; V30 tmp28 [V30,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -48,49 +46,37 @@ G_M12648_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, sp, #96
stp fp, lr, [sp, #0x30]
add fp, sp, #48
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M12648_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
- mov x2, x0
- ; gcrRegs +[x2]
- ldp x3, x4, [x2, #0x20]
- ; gcrRegs +[x3-x4]
- mov x5, x1
- ; gcrRegs +[x5]
- ldp x6, x7, [x2, #0x40]
- ; gcrRegs +[x6-x7]
- ldrb w8, [x2, #0x30]
- ldrb w9, [x2, #0x31]
- ldrb w10, [x2, #0x32]
- ldr x11, [x2, #0x50]
- ; gcrRegs +[x11]
- ;; size=32 bbWeight=1 PerfScore 21.00
+ mov x3, x1
+ ; gcrRegs +[x3]
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M12648_IG02: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
+ ldp x1, x2, [x0, #0x20]
+ ; gcrRegs +[x1-x2]
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=24 bbWeight=1 PerfScore 20.00
G_M12648_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x13, [x2, #0x58]
- ; gcrRegs -[x1]
- stp x1, x13, [fp, #0x18]
- ldr x1, [x2, #0x68]
- str x1, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M12648_IG04: ; bbWeight=1, extend
- ldrb w1, [x2, #0x33]
- strb w1, [sp, #0x18] // [V02 OutArgs+0x18]
- ldr x1, [x2, #0x70]
- ; gcrRegs +[x1]
- str x1, [sp, #0x20] // [V02 OutArgs+0x20]
- ldr x1, [x2, #0x18]
- str x1, [sp, #0x28] // [V02 OutArgs+0x28]
- mov x1, x3
- mov x2, x4
- mov x3, x5
- mov x4, x6
- mov x5, x7
- mov w6, w8
- ; gcrRegs -[x6]
- mov w7, w9
- ; gcrRegs -[x7]
- strb w10, [sp] // [V02 OutArgs]
- str x11, [sp, #0x08] // [V02 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ strb w10, [sp, #0x18] // [V02 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V02 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V02 OutArgs+0x28]
+ strb w8, [sp] // [V02 OutArgs]
+ str x9, [sp, #0x08] // [V02 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp20]
str x8, [sp, #0x10] // [V02 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -98,15 +84,15 @@ G_M12648_IG04: ; bbWeight=1, extend
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x11]
- ;; size=88 bbWeight=1 PerfScore 24.50
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M12648_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 160, prolog size 12, PerfScore 59.00, instruction count 40, allocated bytes for code 160 (MethodHash=b8d0ce97) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 128, prolog size 12, PerfScore 55.00, instruction count 32, allocated bytes for code 128 (MethodHash=b8d0ce97) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -117,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ 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)
-12 (-20.00%) : 170194.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[System.DateTime]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[System.DateTime]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M46195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M46195_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[System.DateTime],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M46195_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-20.00%) : 170195.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) short -> x0 single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
+; V03 tmp1 [V03,T01] ( 2, 2 ) short -> x0 single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M31891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M31891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strh w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.DateTimeOffset,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M31891_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+4 (+6.67%) : 122574.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable1[int]):this (FullOpts)@@ -7,7 +7,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
; V03 arg3 [V03,T04] ( 3, 3 ) ubyte -> x3 single-def
@@ -16,33 +16,30 @@
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Nullable`1[int]>
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x5 single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V10 tmp2 [V10,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V11 tmp3 [V11,T12] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp4 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V13 tmp5 [V13,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V14 tmp6 [V14,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V15 tmp7 [V15,T09] ( 2, 4 ) int -> x2 "argument with side effect"
-; V16 tmp8 [V16,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V17 tmp9 [V17,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x6 single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V10 tmp2 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp3 [V11,T07] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+; V12 tmp4 [V12,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 16
G_M26014_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M26014_IG02: ; bbWeight=1, gcrefRegs=0033 {x0 x1 x4 x5}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1 x4-x5]
- uxtb w2, w3
- mov x3, x4
- ; gcrRegs +[x3]
- mov x4, x5
+ mov x6, x5
+ ; gcrRegs +[x6]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26014_IG02: ; bbWeight=1, gcrefRegs=0053 {x0 x1 x4 x6}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0-x1 x4]
strb wzr, [fp, #0x18] // [V12 tmp4]
str wzr, [fp, #0x1C] // [V12 tmp4+0x04]
ldr x5, [fp, #0x18] // [V12 tmp4]
- ; gcrRegs -[x5]
+ uxtb w2, w3
+ mov x3, x4
+ ; gcrRegs +[x3]
+ mov x4, x6
movz x6, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicDeclarationComputer:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int])
+ ; gcrRegs -[x6]
movk x6, #0xD1FFAB1E LSL #16
movk x6, #1 LSL #32
ldr x6, [x6]
@@ -54,7 +51,7 @@ G_M26014_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 14.50, instruction count 15, allocated bytes for code 60 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 15.00, instruction count 16, allocated bytes for code 64 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
+4 (+6.67%) : 236228.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
+16 (+6.90%) : 107786.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 15, 15 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V19 tmp14 [V19,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V19 tmp14 [V19,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
@@ -37,30 +37,27 @@
;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._bits0 (fldOffset=0x8)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._capacity (fldOffset=0x10)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref "field V16.array (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T15] ( 3, 2 ) ref -> x22 single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T14] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V32 tmp27 [V32,T00] ( 12, 24 ) ref -> x19 single-def "argument with side effect"
-; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp30 [V35,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V36 tmp31 [V36,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V37 tmp32 [V37,T09] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V38 tmp33 [V38,T11] ( 2, 4 ) int -> x6 "argument with side effect"
-; V39 tmp34 [V39,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V40 tmp35 [V40,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V41 tmp36 [V41,T10] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
+; V29 tmp24 [V29,T12] ( 3, 2 ) ref -> x3 single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T11] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V32 tmp27 [V32,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V35 tmp30 [V35,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V36 tmp31 [V36,T09] ( 2, 4 ) int -> x0 "argument with side effect"
+; V37 tmp32 [V37,T10] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T07] ( 2, 4 ) ref -> x8 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V31 tmp26], [V31 tmp26+0x08]
- str xzr, [fp, #0x28] // [V31 tmp26+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V31 tmp26], [V31 tmp26+0x08]
+ str xzr, [fp, #0x20] // [V31 tmp26+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -75,12 +72,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x3, xzr
+ ; gcrRegs +[x3]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x3] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -92,73 +89,79 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldr x2, [x19, #0x28]
- ; gcrRegs +[x2]
- mov x3, x22
+ mov x3, x0
; gcrRegs +[x3]
- ldp x4, x5, [x19, #0x40]
- ; gcrRegs +[x4-x5]
- ldrb w6, [x19, #0x30]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldr x9, [x19, #0x50]
- ; gcrRegs +[x9]
- ;; size=40 bbWeight=1 PerfScore 26.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldr x4, [x19, #0x28]
+ ; gcrRegs +[x4]
+ ldp x5, x6, [x19, #0x40]
+ ; gcrRegs +[x5-x6]
+ ldrb w7, [x19, #0x30]
+ ldrb w0, [x19, #0x31]
+ ldrb w1, [x19, #0x32]
+ ldr x8, [x19, #0x50]
+ ; gcrRegs +[x8]
+ ;; size=32 bbWeight=1 PerfScore 25.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x10, x11, [x19, #0x58]
- stp x10, x11, [fp, #0x18]
- ldr x10, [x19, #0x68]
- str x10, [fp, #0x28]
+ ldp x9, x10, [x19, #0x58]
+ stp x9, x10, [fp, #0x10]
+ ldr x9, [x19, #0x68]
+ str x9, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w10, [x19, #0x33]
- strb w10, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x10, [x19, #0x70]
- ; gcrRegs +[x10]
- str x10, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w9, [x19, #0x33]
+ strb w9, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x9, [x19, #0x70]
+ ; gcrRegs +[x9]
+ str x9, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov x2, x4
+ mov x4, x5
+ mov x5, x6
+ mov w6, w7
+ ; gcrRegs -[x6]
+ mov w7, w0
+ strb w1, [sp] // [V05 OutArgs]
+ str x8, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x0, fp, #16 // [V31 tmp26]
+ str x0, [sp, #0x10] // [V05 OutArgs+0x10]
mov x0, x19
- strb w8, [sp] // [V05 OutArgs]
- str x9, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V31 tmp26]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
movz x8, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x8]
movk x8, #0xD1FFAB1E LSL #16
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x9-x10 x19-x22]
- ;; size=60 bbWeight=1 PerfScore 18.50
+ ; gcrRegs -[x1-x5 x9 x19-x21]
+ ;; size=84 bbWeight=1 PerfScore 21.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 232, prolog size 28, PerfScore 74.25, instruction count 58, allocated bytes for code 232 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 248, prolog size 28, PerfScore 77.25, instruction count 62, allocated bytes for code 248 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -166,9 +169,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
libraries_tests.run.osx.arm64.Release.mch
-40 (-27.03%) : 1141.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
@@ -5,72 +5,56 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.String>
-; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x48] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.String>
+; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M26555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ str xzr, [fp, #0x28] // [V04 loc0]
+ str xzr, [fp, #0x30] // [V04 loc0+0x08]
+ str xzr, [fp, #0x38] // [V04 loc0+0x10]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ ;; size=36 bbWeight=1 PerfScore 8.50
G_M26555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x48]
- str wzr, [fp, #0x58]
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V07 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x20] // [V08 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x18] // [V09 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x10] // [V10 tmp5]
- ldp x0, x1, [fp, #0x48]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x30]
- ldr w0, [fp, #0x58]
- str w0, [fp, #0x40]
- ldr x0, [fp, #0x28] // [V07 tmp2]
- ; gcrRegs +[x0]
- ldr x1, [fp, #0x20] // [V08 tmp3]
+ stp xzr, xzr, [fp, #0x28]
+ str wzr, [fp, #0x38]
+ ldp x1, x2, [fp, #0x28]
+ stp x1, x2, [fp, #0x10]
+ ldr w1, [fp, #0x38]
+ str w1, [fp, #0x20]
+ add x4, fp, #16 // [V06 tmp1]
+ ldr x1, [fp, #0x50] // [V01 arg1]
; gcrRegs +[x1]
- ldr x2, [fp, #0x18] // [V09 tmp4]
+ ldr x2, [fp, #0x48] // [V02 arg2]
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V10 tmp5]
+ ldr x3, [fp, #0x40] // [V03 arg3]
; gcrRegs +[x3]
- add x4, fp, #48 // [V06 tmp1]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #1 LSL #32
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x3]
- ;; size=96 bbWeight=1 PerfScore 35.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M26555_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 46.50, instruction count 37, allocated bytes for code 148 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
+; Total bytes of code 108, prolog size 20, PerfScore 33.50, instruction count 27, allocated bytes for code 108 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
; ============================================================
Unwind Info:
@@ -81,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-40 (-27.03%) : 100887.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
@@ -5,72 +5,56 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.String>
-; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x48] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.String>
+; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M26555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ str xzr, [fp, #0x28] // [V04 loc0]
+ str xzr, [fp, #0x30] // [V04 loc0+0x08]
+ str xzr, [fp, #0x38] // [V04 loc0+0x10]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ ;; size=36 bbWeight=1 PerfScore 8.50
G_M26555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x48]
- str wzr, [fp, #0x58]
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V07 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x20] // [V08 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x18] // [V09 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x10] // [V10 tmp5]
- ldp x0, x1, [fp, #0x48]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x30]
- ldr w0, [fp, #0x58]
- str w0, [fp, #0x40]
- ldr x0, [fp, #0x28] // [V07 tmp2]
- ; gcrRegs +[x0]
- ldr x1, [fp, #0x20] // [V08 tmp3]
+ stp xzr, xzr, [fp, #0x28]
+ str wzr, [fp, #0x38]
+ ldp x1, x2, [fp, #0x28]
+ stp x1, x2, [fp, #0x10]
+ ldr w1, [fp, #0x38]
+ str w1, [fp, #0x20]
+ add x4, fp, #16 // [V06 tmp1]
+ ldr x1, [fp, #0x50] // [V01 arg1]
; gcrRegs +[x1]
- ldr x2, [fp, #0x18] // [V09 tmp4]
+ ldr x2, [fp, #0x48] // [V02 arg2]
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V10 tmp5]
+ ldr x3, [fp, #0x40] // [V03 arg3]
; gcrRegs +[x3]
- add x4, fp, #48 // [V06 tmp1]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #1 LSL #32
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x3]
- ;; size=96 bbWeight=1 PerfScore 35.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M26555_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 46.50, instruction count 37, allocated bytes for code 148 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
+; Total bytes of code 108, prolog size 20, PerfScore 33.50, instruction count 27, allocated bytes for code 108 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -81,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-44 (-26.83%) : 43213.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
+4 (+5.88%) : 66450.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M47585_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47585_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M47585_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M47585_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=d7ac461e) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=d7ac461e) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
+16 (+6.67%) : 605957.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -7,9 +7,9 @@
; 1 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.48) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.48) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V20 tmp15 [V20,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -37,31 +37,28 @@
;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "field V15._bits0 (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._capacity (fldOffset=0x10)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T16] ( 3, 1.50) ref -> x22 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T15] ( 3, 2.48) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp28 [V33,T00] ( 13, 26 ) ref -> x19 single-def "argument with side effect"
-; V34 tmp29 [V34,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V35 tmp30 [V35,T11] ( 2, 4 ) int -> x2 "argument with side effect"
-; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V37 tmp32 [V37,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V38 tmp33 [V38,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V39 tmp34 [V39,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V40 tmp35 [V40,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V41 tmp36 [V41,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V42 tmp37 [V42,T14] ( 2, 4 ) int -> x9 "argument with side effect"
-; V43 tmp38 [V43,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V30 tmp25 [V30,T13] ( 3, 1.50) ref -> x4 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T12] ( 3, 2.48) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V33 tmp28 [V33,T08] ( 2, 4 ) int -> x3 "argument with side effect"
+; V34 tmp29 [V34,T04] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V35 tmp30 [V35,T05] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V37 tmp32 [V37,T09] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T10] ( 2, 4 ) int -> x0 "argument with side effect"
+; V39 tmp34 [V39,T11] ( 2, 4 ) int -> x8 "argument with side effect"
+; V40 tmp35 [V40,T07] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V32 tmp27], [V32 tmp27+0x08]
- str xzr, [fp, #0x28] // [V32 tmp27+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V32 tmp27], [V32 tmp27+0x08]
+ str xzr, [fp, #0x20] // [V32 tmp27+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -86,81 +83,88 @@ G_M26558_IG03: ; bbWeight=0.48, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.48 PerfScore 3.83
-G_M26558_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldrb w2, [x19, #0x30]
- ldr x3, [x19, #0x28]
- ; gcrRegs +[x3]
- mov x4, x22
+ mov x4, x0
; gcrRegs +[x4]
- ldp x5, x6, [x19, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldrb w9, [x19, #0x33]
- ldr x10, [x19, #0x50]
- ; gcrRegs +[x10]
- ;; size=44 bbWeight=1 PerfScore 29.00
+ ;; size=40 bbWeight=0.48 PerfScore 3.83
+G_M26558_IG04: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldrb w3, [x19, #0x30]
+ ldr x5, [x19, #0x28]
+ ; gcrRegs +[x5]
+ ldp x6, x7, [x19, #0x40]
+ ; gcrRegs +[x6-x7]
+ ldrb w1, [x19, #0x31]
+ ldrb w0, [x19, #0x32]
+ ldrb w8, [x19, #0x33]
+ ldr x9, [x19, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=36 bbWeight=1 PerfScore 28.00
G_M26558_IG05: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x19, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x19, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x19, #0x58]
+ stp x10, x11, [fp, #0x10]
+ ldr x10, [x19, #0x68]
+ str x10, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG06: ; bbWeight=1, extend
- ldrb w11, [x19, #0x34]
- strb w11, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x11, [x19, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w10, [x19, #0x34]
+ strb w10, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x10, [x19, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov w2, w3
+ ; gcrRegs -[x2]
+ mov x3, x5
+ ; gcrRegs +[x3]
+ mov x5, x6
+ mov x6, x7
+ mov w7, w1
+ ; gcrRegs -[x7]
+ strb w0, [sp] // [V05 OutArgs]
+ strb w8, [sp, #0x01] // [V05 OutArgs+0x01]
+ str x9, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x1, fp, #16 // [V32 tmp27]
+ str x1, [sp, #0x10] // [V05 OutArgs+0x10]
+ mov x1, x21
+ ; gcrRegs +[x1]
mov x0, x19
- strb w8, [sp] // [V05 OutArgs]
- strb w9, [sp, #0x01] // [V05 OutArgs+0x01]
- str x10, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V32 tmp27]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3-x6 x10-x11 x19-x22]
- ;; size=64 bbWeight=1 PerfScore 19.50
+ ; gcrRegs -[x1 x3-x6 x9-x10 x19-x21]
+ ;; size=88 bbWeight=1 PerfScore 22.50
G_M26558_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M26558_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x21]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x4, xzr
+ ; gcrRegs +[x4]
b G_M26558_IG04
;; size=8 bbWeight=0.02 PerfScore 0.03
-; Total bytes of code 240, prolog size 28, PerfScore 77.36, instruction count 60, allocated bytes for code 240 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
+; Total bytes of code 256, prolog size 28, PerfScore 80.36, instruction count 64, allocated bytes for code 256 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
; ============================================================
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
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,9 +172,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
+4 (+6.67%) : 610471.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-32 (-27.59%) : 114464.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:
1[ubyte],System.Span1[ubyte],int,byref,byref):ubyte (FullOpts)@@ -10,58 +10,45 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T04] ( 3, 3 ) int -> x4 single-def
-; V03 arg3 [V03,T02] ( 3, 3 ) byref -> x7 single-def
-; V04 arg4 [V04,T03] ( 3, 3 ) byref -> x8 single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) int -> x4 single-def
+; V03 arg3 [V03,T00] ( 3, 3 ) byref -> x7 single-def
+; V04 arg4 [V04,T01] ( 3, 3 ) byref -> x8 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
+; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref
-; V08 tmp3 [V08,T11] ( 3, 3 ) byref -> x5 single-def
+; V08 tmp3 [V08,T08] ( 3, 3 ) byref -> x5 single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T05] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T07] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T08] ( 2, 2 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V15 tmp10 [V15 ] ( 3, 6 ) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed "field V06._controlFlags (fldOffset=0x0)" P-DEP
-; V16 tmp11 [V16 ] ( 3, 6 ) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V06.<TagValue>k__BackingField (fldOffset=0x4)" P-DEP
-; V17 tmp12 [V17,T09] ( 2, 4 ) struct ( 8) [fp+0x30] do-not-enreg[S] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V18 tmp13 [V18,T00] ( 4, 8 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp14 [V19,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V20 tmp15 [V20,T10] ( 2, 4 ) int -> x4 "argument with side effect"
+; V11 tmp6 [V11,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp7 [V12,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T06] ( 2, 2 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp10 [V15 ] ( 3, 6 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._controlFlags (fldOffset=0x0)" P-DEP
+; V16 tmp11 [V16 ] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V06.<TagValue>k__BackingField (fldOffset=0x4)" P-DEP
+; V17 tmp12 [V17,T07] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M25606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x20] // [V18 tmp13]
- str xzr, [fp, #0x10] // [V19 tmp14]
mov x7, x5
; byrRegs +[x7]
mov x8, x6
; byrRegs +[x8]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M25606_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0185 {x0 x2 x7 x8}, byref
; byrRegs +[x0 x2]
- str xzr, [fp, #0x38] // [V06 tmp1]
- add x5, fp, #56 // [V06 tmp1]
+ str xzr, [fp, #0x18] // [V06 tmp1]
+ add x5, fp, #24 // [V06 tmp1]
; byrRegs +[x5]
strb wzr, [x5]
mov w6, #12
str w6, [x5, #0x04]
- str x0, [fp, #0x20] // [V18 tmp13]
- str w1, [fp, #0x28] // [V18 tmp13+0x08]
- str x2, [fp, #0x10] // [V19 tmp14]
- str w3, [fp, #0x18] // [V19 tmp14+0x08]
- ldr x0, [fp, #0x38] // [V06 tmp1]
- ; byrRegs -[x0]
- str x0, [fp, #0x30] // [V17 tmp12]
- ldp x0, x1, [fp, #0x20] // [V18 tmp13], [V18 tmp13+0x08]
- ; byrRegs +[x0]
- ldp x2, x3, [fp, #0x10] // [V19 tmp14], [V19 tmp14+0x08]
- ldr x5, [fp, #0x30] // [V17 tmp12]
+ ldr x5, [fp, #0x18] // [V06 tmp1]
; byrRegs -[x5]
+ str x5, [fp, #0x10] // [V17 tmp12]
+ ldr x5, [fp, #0x10] // [V17 tmp12]
mov x6, x7
; byrRegs +[x6]
mov x7, x8
@@ -72,13 +59,13 @@ G_M25606_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0185 {x0 x2 x7
ldr x8, [x8]
blr x8
; byrRegs -[x0 x2 x6-x7]
- ;; size=84 bbWeight=1 PerfScore 25.50
+ ;; size=60 bbWeight=1 PerfScore 15.50
G_M25606_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 16, PerfScore 32.00, instruction count 29, allocated bytes for code 116 (MethodHash=7f649bf9) for method System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 20.00, instruction count 21, allocated bytes for code 84 (MethodHash=7f649bf9) for method System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ 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)
@@ -97,7 +84,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-28 (-16.67%) : 263246.dasm - System.Text.Json.Tests.JsonDocumentTests+<>cDisplayClass88_0:
@@ -8,32 +8,30 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Json.JsonDocumentOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.String>
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.String>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
-; V05 tmp3 [V05 ] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SBR] multireg-ret must-init single-def "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06,T07] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V05 tmp3 [V05 ] ( 3, 6 ) struct (16) [fp+0x20] do-not-enreg[SFAR] multireg-arg multireg-ret must-init "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
+;* V06 tmp4 [V06,T06] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
+;* V08 tmp6 [V08,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V04._maxDepth (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._commentHandling (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-; V12 tmp10 [V12,T04] ( 2, 3 ) ref -> [fp+0x30] do-not-enreg[] "field V05._object (fldOffset=0x0)" P-DEP
-; V13 tmp11 [V13,T05] ( 2, 3 ) int -> [fp+0x38] do-not-enreg[] "field V05._index (fldOffset=0x8)" P-DEP
-; V14 tmp12 [V14,T06] ( 2, 3 ) int -> [fp+0x3C] do-not-enreg[] "field V05._length (fldOffset=0xc)" P-DEP
-; V15 tmp13 [V15,T01] ( 4, 8 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V16 tmp14 [V16,T00] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
+; V12 tmp10 [V12,T02] ( 3, 6 ) ref -> [fp+0x20] do-not-enreg[] "field V05._object (fldOffset=0x0)" P-DEP
+; V13 tmp11 [V13,T03] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[] "field V05._index (fldOffset=0x8)" P-DEP
+; V14 tmp12 [V14,T04] ( 3, 6 ) int -> [fp+0x2C] do-not-enreg[] "field V05._length (fldOffset=0xc)" P-DEP
+; V15 tmp13 [V15,T00] ( 4, 8 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M21463_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp xzr, xzr, [fp, #0x30] // [V05 tmp3], [V05 tmp3+0x08]
- stp xzr, xzr, [fp, #0x18] // [V16 tmp14], [V16 tmp14+0x08]
- ;; size=16 bbWeight=1 PerfScore 3.50
+ stp xzr, xzr, [fp, #0x20] // [V05 tmp3], [V05 tmp3+0x08]
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M21463_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -43,29 +41,21 @@ G_M21463_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- stp x0, x1, [fp, #0x30] // [V05 tmp3], [V05 tmp3+0x08]
- ldr x0, [fp, #0x30] // [V12 tmp10]
- str x0, [fp, #0x18] // [V16 tmp14]
- ldr w0, [fp, #0x38] // [V13 tmp11]
- ; gcrRegs -[x0]
- str w0, [fp, #0x20] // [V16 tmp14+0x08]
- ldr w0, [fp, #0x3C] // [V14 tmp12]
- str w0, [fp, #0x24] // [V16 tmp14+0x0c]
- mov w0, #32
- str w0, [fp, #0x28] // [V15 tmp13]
- strb wzr, [fp, #0x2C] // [V15 tmp13+0x04]
- strb wzr, [fp, #0x2D] // [V15 tmp13+0x05]
- ldp x0, x1, [fp, #0x18] // [V16 tmp14], [V16 tmp14+0x08]
- ; gcrRegs +[x0]
- ldr x2, [fp, #0x28] // [V15 tmp13]
+ stp x0, x1, [fp, #0x20] // [V05 tmp3], [V05 tmp3+0x08]
+ mov w2, #32
+ str w2, [fp, #0x18] // [V15 tmp13]
+ strb wzr, [fp, #0x1C] // [V15 tmp13+0x04]
+ strb wzr, [fp, #0x1D] // [V15 tmp13+0x05]
+ ldp x2, x0, [fp, #0x18] // [V15 tmp13], [V05 tmp3]
+ ldr x1, [fp, #0x28] // [V05 tmp3+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ;; size=100 bbWeight=1 PerfScore 33.50
+ ;; size=76 bbWeight=1 PerfScore 24.50
G_M21463_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
G_M21463_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -85,7 +75,7 @@ G_M21463_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 16, PerfScore 39.00, instruction count 42, allocated bytes for code 168 (MethodHash=64cbac28) for method System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__0():System.Object:this (FullOpts)
+; Total bytes of code 140, prolog size 12, PerfScore 29.00, instruction count 35, allocated bytes for code 140 (MethodHash=64cbac28) for method System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ 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,7 +94,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
-28 (-16.67%) : 263250.dasm - System.Text.Json.Tests.JsonDocumentTests+<>cDisplayClass88_0:
@@ -8,32 +8,30 @@
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0>
+; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Json.JsonDocumentOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 3, 6 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.String>
+; V03 tmp1 [V03,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "impAppendStmt" <System.String>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
-; V05 tmp3 [V05 ] ( 4, 8 ) struct (16) [fp+0x30] do-not-enreg[SBR] multireg-ret must-init single-def "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06,T07] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
-;* V08 tmp6 [V08,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+; V05 tmp3 [V05 ] ( 3, 6 ) struct (16) [fp+0x20] do-not-enreg[SFAR] multireg-arg multireg-ret must-init "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
+;* V06 tmp4 [V06,T06] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
+;* V08 tmp6 [V08,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V04._maxDepth (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04._commentHandling (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-; V12 tmp10 [V12,T04] ( 2, 3 ) ref -> [fp+0x30] do-not-enreg[] "field V05._object (fldOffset=0x0)" P-DEP
-; V13 tmp11 [V13,T05] ( 2, 3 ) int -> [fp+0x38] do-not-enreg[] "field V05._index (fldOffset=0x8)" P-DEP
-; V14 tmp12 [V14,T06] ( 2, 3 ) int -> [fp+0x3C] do-not-enreg[] "field V05._length (fldOffset=0xc)" P-DEP
-; V15 tmp13 [V15,T01] ( 4, 8 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V16 tmp14 [V16,T00] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
+; V12 tmp10 [V12,T02] ( 3, 6 ) ref -> [fp+0x20] do-not-enreg[] "field V05._object (fldOffset=0x0)" P-DEP
+; V13 tmp11 [V13,T03] ( 3, 6 ) int -> [fp+0x28] do-not-enreg[] "field V05._index (fldOffset=0x8)" P-DEP
+; V14 tmp12 [V14,T04] ( 3, 6 ) int -> [fp+0x2C] do-not-enreg[] "field V05._length (fldOffset=0xc)" P-DEP
+; V15 tmp13 [V15,T00] ( 4, 8 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M25908_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp xzr, xzr, [fp, #0x30] // [V05 tmp3], [V05 tmp3+0x08]
- stp xzr, xzr, [fp, #0x18] // [V16 tmp14], [V16 tmp14+0x08]
- ;; size=16 bbWeight=1 PerfScore 3.50
+ stp xzr, xzr, [fp, #0x20] // [V05 tmp3], [V05 tmp3+0x08]
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M25908_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
@@ -43,29 +41,21 @@ G_M25908_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
- stp x0, x1, [fp, #0x30] // [V05 tmp3], [V05 tmp3+0x08]
- ldr x0, [fp, #0x30] // [V12 tmp10]
- str x0, [fp, #0x18] // [V16 tmp14]
- ldr w0, [fp, #0x38] // [V13 tmp11]
- ; gcrRegs -[x0]
- str w0, [fp, #0x20] // [V16 tmp14+0x08]
- ldr w0, [fp, #0x3C] // [V14 tmp12]
- str w0, [fp, #0x24] // [V16 tmp14+0x0c]
- mov w0, #64
- str w0, [fp, #0x28] // [V15 tmp13]
- strb wzr, [fp, #0x2C] // [V15 tmp13+0x04]
- strb wzr, [fp, #0x2D] // [V15 tmp13+0x05]
- ldp x0, x1, [fp, #0x18] // [V16 tmp14], [V16 tmp14+0x08]
- ; gcrRegs +[x0]
- ldr x2, [fp, #0x28] // [V15 tmp13]
+ stp x0, x1, [fp, #0x20] // [V05 tmp3], [V05 tmp3+0x08]
+ mov w2, #64
+ str w2, [fp, #0x18] // [V15 tmp13]
+ strb wzr, [fp, #0x1C] // [V15 tmp13+0x04]
+ strb wzr, [fp, #0x1D] // [V15 tmp13+0x05]
+ ldp x2, x0, [fp, #0x18] // [V15 tmp13], [V05 tmp3]
+ ldr x1, [fp, #0x28] // [V05 tmp3+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ;; size=100 bbWeight=1 PerfScore 33.50
+ ;; size=76 bbWeight=1 PerfScore 24.50
G_M25908_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
G_M25908_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -85,7 +75,7 @@ G_M25908_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 168, prolog size 16, PerfScore 39.00, instruction count 42, allocated bytes for code 168 (MethodHash=85659acb) for method System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__3():System.Object:this (FullOpts)
+; Total bytes of code 140, prolog size 12, PerfScore 29.00, instruction count 35, allocated bytes for code 140 (MethodHash=85659acb) for method System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__3():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -96,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
+ 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,7 +94,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
E4 end
E4 end
+16 (+6.67%) : 56228.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 16 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -28,7 +28,7 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V20 tmp15 [V20,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -38,31 +38,28 @@
;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "field V15._bits0 (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._capacity (fldOffset=0x10)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T16] ( 3, 2 ) ref -> x22 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T15] ( 3, 2.50) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp28 [V33,T00] ( 13, 26 ) ref -> x19 single-def "argument with side effect"
-; V34 tmp29 [V34,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V35 tmp30 [V35,T11] ( 2, 4 ) int -> x2 "argument with side effect"
-; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V37 tmp32 [V37,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V38 tmp33 [V38,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V39 tmp34 [V39,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V40 tmp35 [V40,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V41 tmp36 [V41,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V42 tmp37 [V42,T14] ( 2, 4 ) int -> x9 "argument with side effect"
-; V43 tmp38 [V43,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V30 tmp25 [V30,T13] ( 3, 2 ) ref -> x4 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T12] ( 3, 2.50) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V33 tmp28 [V33,T08] ( 2, 4 ) int -> x3 "argument with side effect"
+; V34 tmp29 [V34,T04] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V35 tmp30 [V35,T05] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V37 tmp32 [V37,T09] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T10] ( 2, 4 ) int -> x0 "argument with side effect"
+; V39 tmp34 [V39,T11] ( 2, 4 ) int -> x8 "argument with side effect"
+; V40 tmp35 [V40,T07] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V32 tmp27], [V32 tmp27+0x08]
- str xzr, [fp, #0x28] // [V32 tmp27+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V32 tmp27], [V32 tmp27+0x08]
+ str xzr, [fp, #0x20] // [V32 tmp27+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -77,12 +74,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x4, xzr
+ ; gcrRegs +[x4]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x4] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -94,75 +91,82 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldrb w2, [x19, #0x30]
- ldr x3, [x19, #0x28]
- ; gcrRegs +[x3]
- mov x4, x22
+ mov x4, x0
; gcrRegs +[x4]
- ldp x5, x6, [x19, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldrb w9, [x19, #0x33]
- ldr x10, [x19, #0x50]
- ; gcrRegs +[x10]
- ;; size=44 bbWeight=1 PerfScore 29.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldrb w3, [x19, #0x30]
+ ldr x5, [x19, #0x28]
+ ; gcrRegs +[x5]
+ ldp x6, x7, [x19, #0x40]
+ ; gcrRegs +[x6-x7]
+ ldrb w1, [x19, #0x31]
+ ldrb w0, [x19, #0x32]
+ ldrb w8, [x19, #0x33]
+ ldr x9, [x19, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=36 bbWeight=1 PerfScore 28.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x19, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x19, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x19, #0x58]
+ stp x10, x11, [fp, #0x10]
+ ldr x10, [x19, #0x68]
+ str x10, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w11, [x19, #0x34]
- strb w11, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x11, [x19, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w10, [x19, #0x34]
+ strb w10, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x10, [x19, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov w2, w3
+ ; gcrRegs -[x2]
+ mov x3, x5
+ ; gcrRegs +[x3]
+ mov x5, x6
+ mov x6, x7
+ mov w7, w1
+ ; gcrRegs -[x7]
+ strb w0, [sp] // [V05 OutArgs]
+ strb w8, [sp, #0x01] // [V05 OutArgs+0x01]
+ str x9, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x1, fp, #16 // [V32 tmp27]
+ str x1, [sp, #0x10] // [V05 OutArgs+0x10]
+ mov x1, x21
+ ; gcrRegs +[x1]
mov x0, x19
- strb w8, [sp] // [V05 OutArgs]
- strb w9, [sp, #0x01] // [V05 OutArgs+0x01]
- str x10, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V32 tmp27]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3-x6 x10-x11 x19-x22]
- ;; size=64 bbWeight=1 PerfScore 19.50
+ ; gcrRegs -[x1 x3-x6 x9-x10 x19-x21]
+ ;; size=88 bbWeight=1 PerfScore 22.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 240, prolog size 28, PerfScore 78.25, instruction count 60, allocated bytes for code 240 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 256, prolog size 28, PerfScore 81.25, instruction count 64, allocated bytes for code 256 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,9 +174,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
+8 (+7.69%) : 259332.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
@@ -8,36 +8,35 @@
; 1 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Text.Json.Serialization.Tests.JsonDocumentClass>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Text.Json.Serialization.Tests.JsonDocumentClass>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Json.JsonDocumentOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V06 tmp4 [V06 ] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref
-;* V08 tmp6 [V08,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp9 [V11,T03] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V11 tmp9 [V11,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-;* V15 tmp13 [V15,T07] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
-;* V16 tmp14 [V16,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
-;* V17 tmp15 [V17,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V15 tmp13 [V15,T08] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
+;* V17 tmp15 [V17,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref "field V04._object (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
-;* V24 tmp22 [V24,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25,T10] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-;* V26 tmp24 [V26,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0xc)" P-INDEP
-; V27 tmp25 [V27,T00] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V28 tmp26 [V28,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
-;* V29 cse0 [V29,T04] ( 0, 0 ) ref -> zero-ref "CSE - aggressive"
+; V24 tmp22 [V24,T02] ( 3, 5 ) ref -> [fp+0x18] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP
+; V25 tmp23 [V25,T03] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[] single-def "field V06._index (fldOffset=0x8)" P-DEP
+; V26 tmp24 [V26,T04] ( 3, 5 ) int -> [fp+0x24] do-not-enreg[] single-def "field V06._length (fldOffset=0xc)" P-DEP
+; V27 tmp25 [V27,T00] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
+; V28 cse0 [V28,T06] ( 2, 2 ) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -45,22 +44,24 @@ G_M62249_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x30]!
str x19, [sp, #0x28]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V28 tmp26], [V28 tmp26+0x08]
+ stp xzr, xzr, [fp, #0x18] // [V06 tmp4], [V06 tmp4+0x08]
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M62249_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- str x0, [fp, #0x10] // [V28 tmp26]
- mov w0, #129
- stp w0, wzr, [fp, #0x1C] // [V28 tmp26+0x0c], [V27 tmp25]
- strb wzr, [fp, #0x24] // [V27 tmp25+0x04]
- strb wzr, [fp, #0x25] // [V27 tmp25+0x05]
- ldp x0, x1, [fp, #0x10] // [V28 tmp26], [V28 tmp26+0x08]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ str x2, [fp, #0x18] // [V24 tmp22]
+ str wzr, [fp, #0x20] // [V25 tmp23]
+ mov w2, #129
+ str w2, [fp, #0x24] // [V26 tmp24]
+ str wzr, [fp, #0x10] // [V27 tmp25]
+ strb wzr, [fp, #0x14] // [V27 tmp25+0x04]
+ strb wzr, [fp, #0x15] // [V27 tmp25+0x05]
+ ldp x2, x0, [fp, #0x10] // [V27 tmp25], [V06 tmp4]
; gcrRegs +[x0]
- ldr x2, [fp, #0x20] // [V27 tmp25]
+ ldr x1, [fp, #0x20] // [V06 tmp4+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
@@ -73,14 +74,14 @@ G_M62249_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x19]
; byrRegs -[x14]
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=80 bbWeight=1 PerfScore 20.50
G_M62249_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 104, prolog size 16, PerfScore 26.50, instruction count 26, allocated bytes for code 104 (MethodHash=de8b0cd6) for method System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 28.50, instruction count 28, allocated bytes for code 112 (MethodHash=de8b0cd6) for method System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+10.00%) : 259383.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:
@@ -14,59 +14,60 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V06 tmp4 [V06 ] ( 5, 10 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-;* V13 tmp11 [V13,T03] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
-;* V14 tmp12 [V14,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
-;* V15 tmp13 [V15,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V13 tmp11 [V13,T04] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
+;* V15 tmp13 [V15,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "field V04._object (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
-;* V22 tmp20 [V22,T02] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
-;* V23 tmp21 [V23,T06] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-;* V24 tmp22 [V24,T07] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0xc)" P-INDEP
-; V25 tmp23 [V25,T00] ( 4, 8 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V26 tmp24 [V26,T01] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
+; V22 tmp20 [V22,T01] ( 3, 5 ) ref -> [fp+0x20] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP
+; V23 tmp21 [V23,T02] ( 3, 5 ) int -> [fp+0x28] do-not-enreg[] single-def "field V06._index (fldOffset=0x8)" P-DEP
+; V24 tmp22 [V24,T03] ( 3, 5 ) int -> [fp+0x2C] do-not-enreg[] single-def "field V06._length (fldOffset=0xc)" P-DEP
+; V25 tmp23 [V25,T00] ( 4, 8 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
;
; Lcl frame size = 32
G_M36232_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V26 tmp24], [V26 tmp24+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V06 tmp4], [V06 tmp4+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M36232_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #1 LSL #32
- str x0, [fp, #0x18] // [V26 tmp24]
- mov w0, #21
- stp w0, wzr, [fp, #0x24] // [V26 tmp24+0x0c], [V25 tmp23]
- strb wzr, [fp, #0x2C] // [V25 tmp23+0x04]
- strb wzr, [fp, #0x2D] // [V25 tmp23+0x05]
- ldp x0, x1, [fp, #0x18] // [V26 tmp24], [V26 tmp24+0x08]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ str x2, [fp, #0x20] // [V22 tmp20]
+ str wzr, [fp, #0x28] // [V23 tmp21]
+ mov w2, #21
+ str w2, [fp, #0x2C] // [V24 tmp22]
+ str wzr, [fp, #0x18] // [V25 tmp23]
+ strb wzr, [fp, #0x1C] // [V25 tmp23+0x04]
+ strb wzr, [fp, #0x1D] // [V25 tmp23+0x05]
+ ldp x2, x0, [fp, #0x18] // [V25 tmp23], [V06 tmp4]
; gcrRegs +[x0]
- ldr x2, [fp, #0x28] // [V25 tmp23]
+ ldr x1, [fp, #0x28] // [V06 tmp4+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ;; size=60 bbWeight=1 PerfScore 16.50
+ ;; size=68 bbWeight=1 PerfScore 18.50
G_M36232_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 12, PerfScore 21.00, instruction count 20, allocated bytes for code 80 (MethodHash=6ea77277) for method System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
+; Total bytes of code 88, prolog size 12, PerfScore 23.00, instruction count 22, allocated bytes for code 88 (MethodHash=6ea77277) for method System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -77,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.osx.arm64.checked.mch
-12 (-15.79%) : 13018.dasm - Microsoft.ML.Trainers.SdcaTrainerBase
3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase3+Visitor[System.Canon,System.Canon,System.__Canon]):this (FullOpts)@@ -9,43 +9,37 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]>
; V01 arg1 [V01,T00] ( 5, 5 ) long -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T01] ( 4, 4 ) ref -> x3 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x3 single-def "argument with side effect"
-; V06 tmp3 [V06,T06] ( 2, 4 ) long -> x2 "argument with side effect"
-; V07 tmp4 [V07,T05] ( 2, 4 ) byref -> x0 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V05 tmp2 [V05,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
;
; Lcl frame size = 0
G_M22309_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22309_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x2]
mov x3, x2
; gcrRegs +[x3]
- mov x2, x1
- ; gcrRegs -[x2]
- ldr x0, [x0, #0x08]
- ldr w4, [x0, #0x08]
- cmp w1, w4
- bhs G_M22309_IG04
- add x0, x0, #16
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M22309_IG02: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ ldr x2, [x0, #0x08]
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
; gcrRegs -[x0]
- ; byrRegs +[x0]
- ubfiz x1, x1, #2, #32
- add x0, x0, x1
- mov x1, x2
- mov x2, x0
+ cmp w1, w0
+ bhs G_M22309_IG04
+ add x2, x2, #16
+ ; gcrRegs -[x2]
; byrRegs +[x2]
+ ubfiz x0, x1, #2, #32
+ add x2, x2, x0
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- ; byrRegs -[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=52 bbWeight=1 PerfScore 17.50
+ ;; size=36 bbWeight=1 PerfScore 15.50
G_M22309_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x3
@@ -59,7 +53,7 @@ G_M22309_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 21.00, instruction count 19, allocated bytes for code 76 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 64, prolog size 12, PerfScore 19.50, instruction count 16, allocated bytes for code 64 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ 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)
-20 (-14.29%) : 24234.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 13, 13 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T03] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,12 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp18 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T00] ( 11, 22 ) ref -> x4 single-def "argument with side effect"
-; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V25 tmp21 [V25,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V26 tmp22 [V26,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V27 tmp23 [V27,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V28 tmp24 [V28,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V29 tmp25 [V29,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V30 tmp26 [V30,T12] ( 2, 4 ) int -> x8 "argument with side effect"
-; V31 tmp27 [V31,T13] ( 2, 4 ) int -> x9 "argument with side effect"
-; V32 tmp28 [V32,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V23 tmp19 [V23,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V25 tmp21 [V25,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V26 tmp22 [V26,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V27 tmp23 [V27,T09] ( 2, 4 ) int -> x8 "argument with side effect"
+; V28 tmp24 [V28,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -51,37 +47,30 @@ G_M55914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M55914_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs +[x0-x3]
- mov x4, x0
- ; gcrRegs +[x4]
- ldp x5, x6, [x4, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x4, #0x30]
- ldrb w8, [x4, #0x31]
- ldrb w9, [x4, #0x32]
- ldr x10, [x4, #0x50]
- ; gcrRegs +[x10]
- ;; size=24 bbWeight=1 PerfScore 16.50
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=20 bbWeight=1 PerfScore 16.00
G_M55914_IG03: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x4, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x4, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M55914_IG04: ; bbWeight=1, extend
- ldrb w11, [x4, #0x33]
- strb w11, [sp, #0x18] // [V04 OutArgs+0x18]
- ldr x11, [x4, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V04 OutArgs+0x20]
- ldr x4, [x4, #0x18]
- str x4, [sp, #0x28] // [V04 OutArgs+0x28]
- mov x4, x5
- mov x5, x6
- mov w6, w7
- ; gcrRegs -[x6]
- mov w7, w8
- strb w9, [sp] // [V04 OutArgs]
- str x10, [sp, #0x08] // [V04 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ strb w10, [sp, #0x18] // [V04 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V04 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V04 OutArgs+0x28]
+ strb w8, [sp] // [V04 OutArgs]
+ str x9, [sp, #0x08] // [V04 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp18]
str x8, [sp, #0x10] // [V04 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -89,15 +78,15 @@ G_M55914_IG04: ; bbWeight=1, extend
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x10-x11]
- ;; size=76 bbWeight=1 PerfScore 23.00
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M55914_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 140, prolog size 12, PerfScore 53.00, instruction count 35, allocated bytes for code 140 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 50.50, instruction count 30, allocated bytes for code 120 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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)
-16 (-11.76%) : 14014.dasm - Microsoft.ML.Trainers.KMeansAcceleratedRowMap+<>cDisplayClass4_0:<.ctor>b2(Microsoft.ML.Trainers.FeatureFloatVectorCursor):int:this (FullOpts)
@@ -10,23 +10,19 @@
;
; V00 this [V00,T05] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Trainers.KMeansAcceleratedRowMap+<>c__DisplayClass4_0>
; V01 arg1 [V01,T00] ( 4, 4 ) ref -> x1 class-hnd single-def <Microsoft.ML.Trainers.FeatureFloatVectorCursor>
-; V02 loc0 [V02,T13] ( 2, 2 ) int -> x0 ld-addr-op single-def
+; V02 loc0 [V02,T09] ( 2, 2 ) int -> x0 ld-addr-op single-def
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T07] ( 2, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.ML.Internal.Utilities.HashArray`1[Microsoft.ML.Data.DataViewRowId]>
-;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <Microsoft.ML.Data.DataViewRowId>
+; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <Microsoft.ML.Internal.Utilities.HashArray`1[Microsoft.ML.Data.DataViewRowId]>
+;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "Inlining Arg" <Microsoft.ML.Data.DataViewRowId>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <Microsoft.ML.Data.DataViewRowId>
-; V07 tmp4 [V07,T08] ( 2, 4 ) int -> x1 "Inlining Arg"
-; V08 tmp5 [V08,T06] ( 3, 3 ) long -> x1 single-def "field V05.Low (fldOffset=0x0)" P-INDEP
-; V09 tmp6 [V09,T04] ( 4, 4 ) long -> x4 single-def "field V05.High (fldOffset=0x8)" P-INDEP
+; V07 tmp4 [V07,T07] ( 2, 4 ) int -> x3 "Inlining Arg"
+; V08 tmp5 [V08,T06] ( 4, 4 ) long -> x2 single-def "field V05.Low (fldOffset=0x0)" P-INDEP
+; V09 tmp6 [V09,T04] ( 5, 5 ) long -> x4 single-def "field V05.High (fldOffset=0x8)" P-INDEP
;* V10 tmp7 [V10 ] ( 0, 0 ) long -> zero-ref single-def "field V06.Low (fldOffset=0x0)" P-INDEP
;* V11 tmp8 [V11 ] ( 0, 0 ) long -> zero-ref single-def "field V06.High (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12,T02] ( 3, 6 ) long -> x1 "fgMakeTemp is creating a new local variable"
-; V13 tmp10 [V13,T03] ( 3, 6 ) long -> x4 "fgMakeTemp is creating a new local variable"
-; V14 tmp11 [V14,T01] ( 3, 6 ) ref -> x0 single-def "argument with side effect"
-;* V15 tmp12 [V15,T09] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SFA] multireg-arg "argument with side effect" <Microsoft.ML.Data.DataViewRowId>
-; V16 tmp13 [V16,T10] ( 2, 4 ) int -> x4 "argument with side effect"
-; V17 cse0 [V17,T11] ( 3, 3 ) long -> x2 "CSE - aggressive"
-; V18 cse1 [V18,T12] ( 3, 3 ) long -> x3 "CSE - aggressive"
+; V12 tmp9 [V12,T02] ( 3, 6 ) long -> x3 "fgMakeTemp is creating a new local variable"
+; V13 tmp10 [V13,T03] ( 3, 6 ) long -> x1 "fgMakeTemp is creating a new local variable"
+; V14 tmp11 [V14,T08] ( 2, 4 ) int -> x3 "argument with side effect"
;
; Lcl frame size = 0
@@ -36,39 +32,37 @@ G_M52914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M52914_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- ldr x0, [x0, #0x08]
- ldr x0, [x0, #0x10]
- ldp x2, x3, [x1, #0x60]
- mov x1, x2
+ ldr x3, [x0, #0x08]
+ ; gcrRegs +[x3]
+ ldr x0, [x3, #0x10]
+ ldp x2, x4, [x1, #0x60]
+ lsr x3, x2, #32
+ ; gcrRegs -[x3]
+ eor w3, w2, w3
+ eor w3, w3, w4, LSL #7
+ lsr x1, x4, #57
; gcrRegs -[x1]
- mov x4, x3
- lsr x5, x1, #32
- eor w1, w1, w5
- eor w1, w1, w4, LSL #7
- lsr x5, x4, #57
- eor w1, w1, w5
- lsr x4, x4, #25
- eor w1, w1, w4
- mov w1, w1
- ldr x4, [x0, #0x08]
- ; gcrRegs +[x4]
- ldr w4, [x4, #0x08]
- ; gcrRegs -[x4]
- cmp x4, #0
+ eor w3, w3, w1
+ lsr x1, x4, #25
+ eor w3, w3, w1
+ mov w3, w3
+ ldr x1, [x0, #0x08]
+ ; gcrRegs +[x1]
+ ldr w1, [x1, #0x08]
+ ; gcrRegs -[x1]
+ cmp x1, #0
beq G_M52914_IG04
- udiv x5, x1, x4
- msub x1, x5, x4, x1
- sxtw w4, w1
+ udiv x5, x3, x1
+ msub x3, x5, x1, x3
mov x1, x2
- mov x2, x3
- mov w3, w4
+ mov x2, x4
movz x4, #0xD1FFAB1E // code for Microsoft.ML.Internal.Utilities.HashArray`1[Microsoft.ML.Data.DataViewRowId]:GetIndexCore(Microsoft.ML.Data.DataViewRowId,int):int:this
movk x4, #0xD1FFAB1E LSL #16
movk x4, #1 LSL #32
ldr x4, [x4]
blr x4
; gcrRegs -[x0]
- ;; size=112 bbWeight=1 PerfScore 56.00
+ ;; size=96 bbWeight=1 PerfScore 54.00
G_M52914_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -78,7 +72,7 @@ G_M52914_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 8, PerfScore 59.50, instruction count 34, allocated bytes for code 136 (MethodHash=9f8e314d) for method Microsoft.ML.Trainers.KMeansAcceleratedRowMap+<>c__DisplayClass4_0:<.ctor>b__2(Microsoft.ML.Trainers.FeatureFloatVectorCursor):int:this (FullOpts)
+; Total bytes of code 120, prolog size 8, PerfScore 57.50, instruction count 30, allocated bytes for code 120 (MethodHash=9f8e314d) for method Microsoft.ML.Trainers.KMeansAcceleratedRowMap+<>c__DisplayClass4_0:<.ctor>b__2(Microsoft.ML.Trainers.FeatureFloatVectorCursor):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +83,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 34 (0x00022) Actual length = 136 (0x000088)
+ 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)
+20 (+4.00%) : 23210.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitDoStatement(Microsoft.CodeAnalysis.CSharp.BoundDoStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 29, 28 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]>
+; V00 this [V00,T00] ( 26, 25 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]>
; V01 arg1 [V01,T01] ( 10, 8.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDoStatement>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol>
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x22 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x23 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
-; V08 tmp5 [V08 ] ( 5, 4 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
+; V08 tmp5 [V08 ] ( 5, 4 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
; V10 tmp7 [V10,T03] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
; V11 tmp8 [V11,T04] ( 4, 4 ) byref -> x0 single-def "Inline stloc first use temp"
@@ -24,49 +24,51 @@
; V13 tmp10 [V13,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp13 [V16 ] ( 5, 10 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
+; V16 tmp13 [V16 ] ( 5, 10 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol>
;* V18 tmp15 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V19 tmp16 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
-; V20 tmp17 [V20,T09] ( 2, 2 ) ubyte -> x22 single-def "field V02.Alive (fldOffset=0x0)" P-INDEP
-; V21 tmp18 [V21,T10] ( 2, 2 ) ubyte -> x23 single-def "field V02.Reported (fldOffset=0x1)" P-INDEP
+; V20 tmp17 [V20,T11] ( 2, 2 ) ubyte -> x23 single-def "field V02.Alive (fldOffset=0x0)" P-INDEP
+; V21 tmp18 [V21,T12] ( 2, 2 ) ubyte -> x24 single-def "field V02.Reported (fldOffset=0x1)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.Alive (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.Reported (fldOffset=0x1)" P-INDEP
-; V24 tmp21 [V24,T11] ( 2, 2 ) ubyte -> x0 single-def "field V07.Alive (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T12] ( 2, 2 ) ubyte -> x1 single-def "field V07.Reported (fldOffset=0x1)" P-INDEP
-; V26 tmp23 [V26 ] ( 3, 2.50) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V08.Alive (fldOffset=0x0)" P-DEP
-; V27 tmp24 [V27 ] ( 3, 2.50) ubyte -> [fp+0x21] do-not-enreg[X] addr-exposed "field V08.Reported (fldOffset=0x1)" P-DEP
-; V28 tmp25 [V28,T13] ( 2, 2 ) ubyte -> x2 single-def "field V09.Alive (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T14] ( 2, 2 ) ubyte -> x1 single-def "field V09.Reported (fldOffset=0x1)" P-INDEP
+; V24 tmp21 [V24,T13] ( 2, 2 ) ubyte -> x0 single-def "field V07.Alive (fldOffset=0x0)" P-INDEP
+; V25 tmp22 [V25,T14] ( 2, 2 ) ubyte -> x1 single-def "field V07.Reported (fldOffset=0x1)" P-INDEP
+; V26 tmp23 [V26 ] ( 3, 2.50) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed "field V08.Alive (fldOffset=0x0)" P-DEP
+; V27 tmp24 [V27 ] ( 3, 2.50) ubyte -> [fp+0x29] do-not-enreg[X] addr-exposed "field V08.Reported (fldOffset=0x1)" P-DEP
+; V28 tmp25 [V28,T15] ( 2, 2 ) ubyte -> x2 single-def "field V09.Alive (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T16] ( 2, 2 ) ubyte -> x1 single-def "field V09.Reported (fldOffset=0x1)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "field V12.Alive (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) ubyte -> zero-ref "field V12.Reported (fldOffset=0x1)" P-INDEP
-; V32 tmp29 [V32,T17] ( 2, 1 ) ubyte -> x1 single-def "field V14.Alive (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T18] ( 2, 1 ) ubyte -> x2 single-def "field V14.Reported (fldOffset=0x1)" P-INDEP
-; V34 tmp31 [V34 ] ( 3, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V16.Alive (fldOffset=0x0)" P-DEP
-; V35 tmp32 [V35 ] ( 3, 4 ) ubyte -> [fp+0x19] do-not-enreg[X] addr-exposed "field V16.Reported (fldOffset=0x1)" P-DEP
+; V32 tmp29 [V32,T19] ( 2, 1 ) ubyte -> x2 single-def "field V14.Alive (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T20] ( 2, 1 ) ubyte -> x1 single-def "field V14.Reported (fldOffset=0x1)" P-INDEP
+; V34 tmp31 [V34 ] ( 3, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V16.Alive (fldOffset=0x0)" P-DEP
+; V35 tmp32 [V35 ] ( 3, 4 ) ubyte -> [fp+0x21] do-not-enreg[X] addr-exposed "field V16.Reported (fldOffset=0x1)" P-DEP
;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Alive (fldOffset=0x0)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Reported (fldOffset=0x1)" P-INDEP
-; V38 tmp35 [V38,T15] ( 2, 2 ) ubyte -> x0 single-def "field V19.Alive (fldOffset=0x0)" P-INDEP
-; V39 tmp36 [V39,T16] ( 2, 2 ) ubyte -> x1 single-def "field V19.Reported (fldOffset=0x1)" P-INDEP
-; V40 tmp37 [V40,T07] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
-; V41 tmp38 [V41,T08] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-;* V42 tmp39 [V42,T19] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V43 cse0 [V43,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
+; V38 tmp35 [V38,T17] ( 2, 2 ) ubyte -> x0 single-def "field V19.Alive (fldOffset=0x0)" P-INDEP
+; V39 tmp36 [V39,T18] ( 2, 2 ) ubyte -> x1 single-def "field V19.Reported (fldOffset=0x1)" P-INDEP
+; V40 tmp37 [V40,T10] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
+; V41 cse0 [V41,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
+; V42 cse1 [V42,T07] ( 3, 3 ) byref -> x22 "CSE - aggressive"
+; V43 cse2 [V43,T08] ( 3, 3 ) byref -> x25 "CSE - aggressive"
+; V44 cse3 [V44,T09] ( 3, 3 ) byref -> x26 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M21086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
- str xzr, [fp, #0x20] // [V08 tmp5]
+ str xzr, [fp, #0x28] // [V08 tmp5]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -89,7 +91,9 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x1]
ldr x2, [x20, #0x20]
; gcrRegs +[x2]
- add x1, x19, #116
+ add x22, x19, #116
+ ; byrRegs +[x22]
+ mov x1, x22
; byrRegs +[x1]
mov x0, x19
; gcrRegs +[x0]
@@ -100,31 +104,35 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x3
; gcrRegs -[x0 x2]
; byrRegs -[x1]
- ldr x22, [x20, #0x28]
- ; gcrRegs +[x22]
+ ldr x23, [x20, #0x28]
+ ; gcrRegs +[x23]
mov x0, x19
; gcrRegs +[x0]
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
ldr x2, [x21, #0x48]
ldr x2, [x2, #0x20]
blr x2
; gcrRegs -[x1]
mov x0, x19
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:AdjustConditionalState(Microsoft.CodeAnalysis.CSharp.BoundExpression):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0-x1 x22]
- ldrb w22, [x19, #0x78]
- ldrb w23, [x19, #0x79]
+ ; gcrRegs -[x0-x1 x23]
+ ldrb w23, [x19, #0x78]
+ ldrb w24, [x19, #0x79]
ldrb w0, [x19, #0x76]
ldrb w1, [x19, #0x77]
- strh wzr, [x19, #0x78]
- strh wzr, [x19, #0x76]
+ add x25, x19, #120
+ ; byrRegs +[x25]
+ strh wzr, [x25]
+ add x26, x19, #118
+ ; byrRegs +[x26]
+ strh wzr, [x26]
strb wzr, [x19, #0x71]
strb w0, [x19, #0x74]
strb w1, [x19, #0x75]
@@ -143,11 +151,11 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbz x0, G_M21086_IG06
ldrb w2, [x0]
ldrb w1, [x0, #0x01]
- strb w2, [fp, #0x20] // [V26 tmp23]
- strb w1, [fp, #0x21] // [V27 tmp24]
- add x2, x19, #116
+ strb w2, [fp, #0x28] // [V26 tmp23]
+ strb w1, [fp, #0x29] // [V27 tmp24]
+ mov x2, x22
; byrRegs +[x2]
- add x1, fp, #32 // [V08 tmp5]
+ add x1, fp, #40 // [V08 tmp5]
mov x0, x19
; gcrRegs +[x0]
; byrRegs -[x0]
@@ -155,20 +163,20 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3, #0x10]
blr x3
; gcrRegs -[x0]
- ; byrRegs -[x2]
+ ; byrRegs -[x2 x22]
cbz w0, G_M21086_IG04
- ;; size=252 bbWeight=1 PerfScore 94.50
-G_M21086_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=264 bbWeight=1 PerfScore 96.00
+G_M21086_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=6000000 {x25 x26}, byref
ldr x0, [x19, #0x58]
; gcrRegs +[x0]
- ldrb w1, [fp, #0x20] // [V26 tmp23]
- ldrb w2, [fp, #0x21] // [V27 tmp24]
+ ldrb w2, [fp, #0x28] // [V26 tmp23]
+ ldrb w1, [fp, #0x29] // [V27 tmp24]
ldrsb wzr, [x0]
- strb w1, [fp, #0x10] // [V40 tmp37]
- strb w2, [fp, #0x11] // [V40 tmp37+0x01]
+ strb w2, [fp, #0x18] // [V40 tmp37]
+ strb w1, [fp, #0x19] // [V40 tmp37+0x01]
+ ldrh w2, [fp, #0x18] // [V40 tmp37]
mov x1, x20
; gcrRegs +[x1]
- ldrh w2, [fp, #0x10] // [V40 tmp37]
mov w3, #1
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
@@ -184,12 +192,12 @@ G_M21086_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov w2, #1
strb w2, [x19, #0x70]
;; size=84 bbWeight=0.50 PerfScore 13.75
-G_M21086_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- strb w22, [fp, #0x18] // [V34 tmp31]
- strb w23, [fp, #0x19] // [V35 tmp32]
+G_M21086_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=6000000 {x25 x26}, byref
+ strb w23, [fp, #0x20] // [V34 tmp31]
+ strb w24, [fp, #0x21] // [V35 tmp32]
ldr x2, [x20, #0x18]
; gcrRegs +[x2]
- add x1, fp, #24 // [V16 tmp13]
+ add x1, fp, #32 // [V16 tmp13]
mov x0, x19
; gcrRegs +[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this
@@ -198,24 +206,26 @@ G_M21086_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0 x2 x20]
- ldrb w0, [fp, #0x18] // [V34 tmp31]
- ldrb w1, [fp, #0x19] // [V35 tmp32]
- strh wzr, [x19, #0x78]
- strh wzr, [x19, #0x76]
+ ldrb w0, [fp, #0x20] // [V34 tmp31]
+ ldrb w1, [fp, #0x21] // [V35 tmp32]
+ strh wzr, [x25]
+ strh wzr, [x26]
strb wzr, [x19, #0x71]
strb w0, [x19, #0x74]
strb w1, [x19, #0x75]
mov x0, xzr
;; size=72 bbWeight=1 PerfScore 21.00
G_M21086_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x23, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
- ldp fp, lr, [sp], #0x50
+ ldp x25, x26, [sp, #0x60]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x70
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M21086_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] +[x20]
+ ; byrRegs -[x25-x26]
mov x1, x20
; gcrRegs +[x1]
...
+16 (+6.90%) : 25172.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 15, 15 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V19 tmp14 [V19,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V19 tmp14 [V19,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
@@ -37,30 +37,27 @@
;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._bits0 (fldOffset=0x8)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._capacity (fldOffset=0x10)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref "field V16.array (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T15] ( 3, 2 ) ref -> x22 single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T14] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V32 tmp27 [V32,T00] ( 12, 24 ) ref -> x19 single-def "argument with side effect"
-; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp30 [V35,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V36 tmp31 [V36,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V37 tmp32 [V37,T09] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V38 tmp33 [V38,T11] ( 2, 4 ) int -> x6 "argument with side effect"
-; V39 tmp34 [V39,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V40 tmp35 [V40,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V41 tmp36 [V41,T10] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
+; V29 tmp24 [V29,T12] ( 3, 2 ) ref -> x3 single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T11] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V32 tmp27 [V32,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V35 tmp30 [V35,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V36 tmp31 [V36,T09] ( 2, 4 ) int -> x0 "argument with side effect"
+; V37 tmp32 [V37,T10] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T07] ( 2, 4 ) ref -> x8 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V31 tmp26], [V31 tmp26+0x08]
- str xzr, [fp, #0x28] // [V31 tmp26+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V31 tmp26], [V31 tmp26+0x08]
+ str xzr, [fp, #0x20] // [V31 tmp26+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -75,12 +72,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x3, xzr
+ ; gcrRegs +[x3]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x3] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -92,73 +89,79 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldr x2, [x19, #0x28]
- ; gcrRegs +[x2]
- mov x3, x22
+ mov x3, x0
; gcrRegs +[x3]
- ldp x4, x5, [x19, #0x40]
- ; gcrRegs +[x4-x5]
- ldrb w6, [x19, #0x30]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldr x9, [x19, #0x50]
- ; gcrRegs +[x9]
- ;; size=40 bbWeight=1 PerfScore 26.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldr x4, [x19, #0x28]
+ ; gcrRegs +[x4]
+ ldp x5, x6, [x19, #0x40]
+ ; gcrRegs +[x5-x6]
+ ldrb w7, [x19, #0x30]
+ ldrb w0, [x19, #0x31]
+ ldrb w1, [x19, #0x32]
+ ldr x8, [x19, #0x50]
+ ; gcrRegs +[x8]
+ ;; size=32 bbWeight=1 PerfScore 25.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x10, x11, [x19, #0x58]
- stp x10, x11, [fp, #0x18]
- ldr x10, [x19, #0x68]
- str x10, [fp, #0x28]
+ ldp x9, x10, [x19, #0x58]
+ stp x9, x10, [fp, #0x10]
+ ldr x9, [x19, #0x68]
+ str x9, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w10, [x19, #0x33]
- strb w10, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x10, [x19, #0x70]
- ; gcrRegs +[x10]
- str x10, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w9, [x19, #0x33]
+ strb w9, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x9, [x19, #0x70]
+ ; gcrRegs +[x9]
+ str x9, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov x2, x4
+ mov x4, x5
+ mov x5, x6
+ mov w6, w7
+ ; gcrRegs -[x6]
+ mov w7, w0
+ strb w1, [sp] // [V05 OutArgs]
+ str x8, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x0, fp, #16 // [V31 tmp26]
+ str x0, [sp, #0x10] // [V05 OutArgs+0x10]
mov x0, x19
- strb w8, [sp] // [V05 OutArgs]
- str x9, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V31 tmp26]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
movz x8, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x8]
movk x8, #0xD1FFAB1E LSL #16
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x9-x10 x19-x22]
- ;; size=60 bbWeight=1 PerfScore 18.50
+ ; gcrRegs -[x1-x5 x9 x19-x21]
+ ;; size=84 bbWeight=1 PerfScore 21.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 232, prolog size 28, PerfScore 74.25, instruction count 58, allocated bytes for code 232 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 248, prolog size 28, PerfScore 77.25, instruction count 62, allocated bytes for code 248 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -166,9 +169,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
+16 (+12.50%) : 1033.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 6.50) ref -> [fp+0x18] this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
+; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
; V01 loc0 [V01,T02] ( 3, 2.50) ref -> x1 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T03] ( 3, 2.50) int -> x3
+; V02 loc1 [V02,T03] ( 3, 2.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
-; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x2 single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
+; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x3 single-def "argument with side effect"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 2, 2 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M7274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
+ str x19, [sp, #0x38]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7274_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x18]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M7274_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
- ldr w2, [x0, #0x14]
- sub w3, w2, #1
- ldr w4, [x1, #0x08]
- cmp w4, w3
+ ldr w0, [x19, #0x14]
+ sub w2, w0, #1
+ ldr w3, [x1, #0x08]
+ cmp w3, w2
bls G_M7274_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- add w2, w2, #1
- str w2, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x20]
- ; gcrRegs +[x2]
- ubfiz x3, x3, #5, #32
- add x3, x3, #16
- add x1, x1, x3
+G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ add w0, w0, #1
+ str w0, [x19, #0x14]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ubfiz x0, x2, #5, #32
+ add x0, x0, #16
+ add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ldp q16, q17, [x1]
- stp q16, q17, [fp, #0x20]
- add x1, fp, #32 // [V04 tmp1]
+ ldp x0, x2, [x1]
+ stp x0, x2, [fp, #0x18]
+ ldp x0, x2, [x1, #0x10]
+ stp x0, x2, [fp, #0x28]
+ add x1, fp, #24 // [V04 tmp1]
; byrRegs -[x1]
- ldr x0, [x2, #0x08]
- ldr x2, [x2, #0x18]
- ; gcrRegs -[x2]
- blr x2
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- str d0, [x0, #0x08]
+ ldr x2, [x3, #0x18]
+ blr x2
+ ; gcrRegs -[x0 x3]
+ str d0, [x19, #0x08]
mov w0, #1
- ; gcrRegs -[x0]
- ;; size=64 bbWeight=0.50 PerfScore 11.25
+ ;; size=64 bbWeight=0.50 PerfScore 12.75
G_M7274_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars -{V00}
- str xzr, [x0, #0x08]
- movn w1, #0
- str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ str xzr, [x19, #0x08]
+ movn w0, #0
+ str w0, [x19, #0x14]
mov w0, wzr
- ; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M7274_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 27.25, instruction count 32, allocated bytes for code 128 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 32.25, instruction count 36, allocated bytes for code 144 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +98,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
+ E4 end
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch
865
206
27
632
-3,176
+440
benchmarks.run_pgo.osx.arm64.checked.mch
2,698
1,803
27
868
-41,916
+256
benchmarks.run_tiered.osx.arm64.checked.mch
800
630
12
158
-13,976
+144
coreclr_tests.run.osx.arm64.checked.mch
7,512
5,672
104
1,736
-230,388
+1,320
libraries.crossgen2.osx.arm64.checked.mch
4,811
967
183
3,661
-14,380
+2,256
libraries.pmi.osx.arm64.checked.mch
7,464
1,398
329
5,737
-15,472
+3,672
libraries_tests.run.osx.arm64.Release.mch
26,840
21,175
360
5,305
-458,040
+4,796
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
18,044
3,412
411
14,221
-34,996
+4,020
realworld.run.osx.arm64.checked.mch
1,558
399
68
1,091
-9,320
+988
70,592
35,662
1,521
33,409
-821,664
+17,892
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.osx.arm64.checked.mch
24,851
4
24,847
4 (0.02%)
4 (0.02%)
benchmarks.run_pgo.osx.arm64.checked.mch
84,581
48,412
36,169
93 (0.11%)
93 (0.11%)
benchmarks.run_tiered.osx.arm64.checked.mch
48,257
37,318
10,939
4 (0.01%)
4 (0.01%)
coreclr_tests.run.osx.arm64.checked.mch
585,830
357,177
228,653
391 (0.07%)
391 (0.07%)
libraries.crossgen2.osx.arm64.checked.mch
233,353
15
233,338
0 (0.00%)
0 (0.00%)
libraries.pmi.osx.arm64.checked.mch
314,708
18
314,690
7 (0.00%)
8 (0.00%)
libraries_tests.run.osx.arm64.Release.mch
637,120
466,371
170,749
2,745 (0.43%)
2,746 (0.43%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
302,464
21,558
280,906
11 (0.00%)
11 (0.00%)
realworld.run.osx.arm64.checked.mch
31,543
3
31,540
1 (0.00%)
1 (0.00%)
2,262,707
930,876
1,331,831
3,256 (0.14%)
3,258 (0.14%)
jit-analyze output
benchmarks.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 11178360 (overridden on cmd)
Total bytes of diff: 11175624 (overridden on cmd)
Total bytes of delta: -2736 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 21167.dasm (1.00 % of base)
60 : 1155.dasm (5.79 % of base)
56 : 4828.dasm (0.45 % of base)
48 : 21155.dasm (0.79 % of base)
20 : 22907.dasm (1.24 % of base)
16 : 2431.dasm (0.46 % of base)
16 : 1356.dasm (12.50 % of base)
12 : 18543.dasm (0.31 % of base)
12 : 17482.dasm (0.28 % of base)
12 : 1103.dasm (0.96 % of base)
8 : 13874.dasm (1.56 % of base)
8 : 24736.dasm (1.06 % of base)
4 : 12070.dasm (1.15 % of base)
4 : 17479.dasm (0.15 % of base)
4 : 17572.dasm (0.17 % of base)
4 : 1819.dasm (0.30 % of base)
4 : 4449.dasm (0.75 % of base)
4 : 11258.dasm (0.76 % of base)
4 : 10215.dasm (0.30 % of base)
4 : 17998.dasm (0.70 % of base)
Top file improvements (bytes):
-440 : 7254.dasm (-10.74 % of base)
-140 : 7335.dasm (-6.01 % of base)
-112 : 4383.dasm (-6.78 % of base)
-84 : 3955.dasm (-3.43 % of base)
-76 : 23028.dasm (-12.42 % of base)
-64 : 19443.dasm (-9.70 % of base)
-64 : 19554.dasm (-7.41 % of base)
-60 : 3928.dasm (-1.99 % of base)
-48 : 14551.dasm (-2.17 % of base)
-44 : 17626.dasm (-1.68 % of base)
-40 : 7209.dasm (-1.44 % of base)
-36 : 2999.dasm (-0.33 % of base)
-36 : 4001.dasm (-2.47 % of base)
-36 : 938.dasm (-6.04 % of base)
-32 : 14570.dasm (-12.90 % of base)
-32 : 14996.dasm (-3.15 % of base)
-32 : 2020.dasm (-10.26 % of base)
-32 : 21393.dasm (-12.90 % of base)
-28 : 3797.dasm (-3.83 % of base)
-28 : 3804.dasm (-3.06 % of base)
60 total files with Code Size differences (34 improved, 26 regressed), 20 unchanged.
Top method regressions (bytes):
112 (1.00 % of base) : 21167.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
60 (5.79 % of base) : 1155.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
56 (0.45 % of base) : 4828.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.79 % of base) : 21155.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
20 (1.24 % of base) : 22907.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
16 (0.46 % of base) : 2431.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
16 (12.50 % of base) : 1356.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
12 (0.28 % of base) : 17482.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (FullOpts)
12 (0.31 % of base) : 18543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (0.96 % of base) : 1103.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
8 (1.06 % of base) : 24736.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
8 (1.56 % of base) : 13874.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
4 (0.17 % of base) : 17572.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:CreateRootSingleNamespaceDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration],ubyte):Microsoft.CodeAnalysis.CSharp.RootSingleNamespaceDeclaration:this (FullOpts)
4 (0.15 % of base) : 17479.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitNamespaceChildren(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration]:this (FullOpts)
4 (0.74 % of base) : 19252.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (FullOpts)
4 (0.70 % of base) : 17998.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
4 (0.97 % of base) : 2024.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
4 (0.30 % of base) : 10215.dasm - Sigil.Impl.RollingVerifier+<>c__DisplayClass16_1:<RemoveUnnecessaryVerifiers>b__1(Sigil.Impl.LinqStack`1[Sigil.Impl.LinqList`1[Sigil.Impl.TypeOnStack]],int):int:this (FullOpts)
4 (0.30 % of base) : 1819.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (FullOpts)
4 (0.28 % of base) : 21578.dasm - System.Diagnostics.Process:ForkAndExecProcess(System.Diagnostics.ProcessStartInfo,System.String,System.String[],System.String[],System.String,ubyte,uint,uint,uint[],byref,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
Top method improvements (bytes):
-440 (-10.74 % of base) : 7254.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-140 (-6.01 % of base) : 7335.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-112 (-6.78 % of base) : 4383.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-84 (-3.43 % of base) : 3955.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-76 (-12.42 % of base) : 23028.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-64 (-9.70 % of base) : 19443.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 19554.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-60 (-1.99 % of base) : 3928.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-48 (-2.17 % of base) : 14551.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-44 (-1.68 % of base) : 17626.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-40 (-1.44 % of base) : 7209.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:.ctor(System.Type):this (FullOpts)
-36 (-2.47 % of base) : 4001.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (FullOpts)
-36 (-6.04 % of base) : 938.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-36 (-0.33 % of base) : 2999.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-32 (-3.15 % of base) : 14996.dasm - Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:ParseStream(System.IO.Stream):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
-32 (-10.26 % of base) : 2020.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[int,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,int,System.__Canon,System.Exception):this (FullOpts)
-32 (-12.90 % of base) : 14570.dasm - System.Text.Json.Document.Tests.Perf_EnumerateArray:Parse():this (FullOpts)
-32 (-12.90 % of base) : 21393.dasm - System.Text.Json.Document.Tests.Perf_EnumerateObject:Parse():this (FullOpts)
-28 (-3.83 % of base) : 3797.dasm - System.Reflection.Emit.RuntimeMethodBuilder:GetTokenNoLock():int:this (FullOpts)
-28 (-3.06 % of base) : 3804.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenInternal(System.Reflection.MethodBase,System.Type[],ubyte):int:this (FullOpts)
Top method regressions (percentages):
16 (12.50 % of base) : 1356.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
60 (5.79 % of base) : 1155.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
4 (1.82 % of base) : 6105.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
8 (1.56 % of base) : 13874.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
20 (1.24 % of base) : 22907.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryRemoveInternal(System.Text.RegularExpressions.RegexCache+Key,byref,ubyte,System.__Canon):ubyte:this (FullOpts)
4 (1.15 % of base) : 12070.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
8 (1.06 % of base) : 24736.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
4 (1.02 % of base) : 11269.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitCachingMemberAccessor+Cache`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:EvictStaleCacheEntries(long):this (FullOpts)
112 (1.00 % of base) : 21167.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
4 (0.97 % of base) : 2024.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
12 (0.96 % of base) : 1103.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
48 (0.79 % of base) : 21155.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
4 (0.76 % of base) : 11258.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreatePropertySetter(System.Reflection.PropertyInfo,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
4 (0.75 % of base) : 4449.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (FullOpts)
4 (0.74 % of base) : 19252.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (FullOpts)
4 (0.70 % of base) : 17998.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
4 (0.60 % of base) : 22594.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
16 (0.46 % of base) : 2431.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
56 (0.45 % of base) : 4828.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
12 (0.31 % of base) : 18543.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
Top method improvements (percentages):
-20 (-14.29 % of base) : 19404.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-16 (-14.29 % of base) : 11697.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
-16 (-13.33 % of base) : 24121.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
-32 (-12.90 % of base) : 14570.dasm - System.Text.Json.Document.Tests.Perf_EnumerateArray:Parse():this (FullOpts)
-32 (-12.90 % of base) : 21393.dasm - System.Text.Json.Document.Tests.Perf_EnumerateObject:Parse():this (FullOpts)
-16 (-12.50 % of base) : 4388.dasm - System.Formats.Asn1.AsnDecoder:ReadIntegerBytes(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.ReadOnlySpan`1[ubyte] (FullOpts)
-76 (-12.42 % of base) : 23028.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-16 (-12.12 % of base) : 4235.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveOctetString(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-440 (-10.74 % of base) : 7254.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-32 (-10.26 % of base) : 2020.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[int,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,int,System.__Canon,System.Exception):this (FullOpts)
-64 (-9.70 % of base) : 19443.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-16 (-9.52 % of base) : 4215.dasm - System.Formats.Asn1.AsnDecoder:TryReadInt32(System.ReadOnlySpan`1[ubyte],int,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
-64 (-7.41 % of base) : 19554.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-16 (-6.90 % of base) : 4222.dasm - System.Formats.Asn1.AsnDecoder:ReadObjectIdentifier(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.String (FullOpts)
-112 (-6.78 % of base) : 4383.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-8 (-6.25 % of base) : 11065.dasm - System.Text.Json.Serialization.Tests.ReadJson`1[int]:DeserializeFromUtf8Bytes():int:this (FullOpts)
-8 (-6.06 % of base) : 6620.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-36 (-6.04 % of base) : 938.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-140 (-6.01 % of base) : 7335.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-20 (-5.81 % of base) : 4501.dasm - System.Formats.Asn1.AsnDecoder:ReadGeneralizedTime(System.ReadOnlySpan`1[ubyte],int,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.DateTimeOffset (FullOpts)
benchmarks.run_pgo.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34671272 (overridden on cmd)
Total bytes of diff: 34629612 (overridden on cmd)
Total bytes of delta: -41660 (-0.12 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 31567.dasm (4.35 % of base)
16 : 32082.dasm (0.42 % of base)
16 : 33998.dasm (0.42 % of base)
16 : 45404.dasm (0.43 % of base)
16 : 33866.dasm (4.35 % of base)
16 : 37404.dasm (0.43 % of base)
16 : 32083.dasm (3.23 % of base)
16 : 40168.dasm (0.42 % of base)
16 : 44393.dasm (0.44 % of base)
12 : 31568.dasm (4.29 % of base)
12 : 19654.dasm (0.89 % of base)
12 : 31555.dasm (5.26 % of base)
12 : 31566.dasm (2.97 % of base)
12 : 33867.dasm (5.26 % of base)
4 : 31560.dasm (0.94 % of base)
4 : 33871.dasm (1.30 % of base)
4 : 44400.dasm (0.03 % of base)
4 : 45411.dasm (0.03 % of base)
4 : 63609.dasm (5.88 % of base)
4 : 69179.dasm (1.00 % of base)
Top file improvements (bytes):
-288 : 27644.dasm (-1.44 % of base)
-288 : 54278.dasm (-5.22 % of base)
-272 : 49479.dasm (-5.30 % of base)
-248 : 51044.dasm (-10.58 % of base)
-248 : 54012.dasm (-9.63 % of base)
-208 : 62592.dasm (-5.44 % of base)
-196 : 54632.dasm (-4.73 % of base)
-192 : 49155.dasm (-1.81 % of base)
-188 : 56429.dasm (-3.07 % of base)
-184 : 54245.dasm (-2.36 % of base)
-176 : 11189.dasm (-2.57 % of base)
-172 : 50104.dasm (-2.50 % of base)
-172 : 50175.dasm (-3.58 % of base)
-168 : 22618.dasm (-2.34 % of base)
-168 : 6953.dasm (-4.11 % of base)
-160 : 50569.dasm (-4.65 % of base)
-152 : 51325.dasm (-2.76 % of base)
-152 : 56029.dasm (-2.85 % of base)
-152 : 6934.dasm (-5.41 % of base)
-144 : 23558.dasm (-4.57 % of base)
76 total files with Code Size differences (51 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
16 (0.42 % of base) : 32082.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.42 % of base) : 33998.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.43 % of base) : 45404.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.43 % of base) : 37404.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.42 % of base) : 40168.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.44 % of base) : 44393.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (4.35 % of base) : 31567.dasm - System.Security.Cryptography.IncrementalHash:AppendData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
16 (4.35 % of base) : 33866.dasm - System.Security.Cryptography.IncrementalHash:AppendData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
16 (3.23 % of base) : 32083.dasm - System.Security.Cryptography.IncrementalHash:TryGetHashAndReset(System.Span`1[ubyte],byref):ubyte:this (Tier1)
12 (0.89 % of base) : 19654.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
12 (5.26 % of base) : 31555.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (5.26 % of base) : 33867.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (4.29 % of base) : 31568.dasm - System.Security.Cryptography.HMACCommon:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (2.97 % of base) : 31566.dasm - System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this (Tier1)
4 (0.40 % of base) : 31984.dasm - Interop+AppleCrypto:AppleCryptoNative_SecKeyExport(System.Security.Cryptography.Apple.SafeSecKeyRefHandle,int,Microsoft.Win32.SafeHandles.SafeCreateHandle,byref,byref):int (Tier1)
4 (0.40 % of base) : 45420.dasm - Interop+AppleCrypto:AppleCryptoNative_SecKeyExport(System.Security.Cryptography.Apple.SafeSecKeyRefHandle,int,Microsoft.Win32.SafeHandles.SafeCreateHandle,byref,byref):int (Tier1)
4 (0.79 % of base) : 51961.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (5.88 % of base) : 63609.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (1.30 % of base) : 33871.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:FinalizeHashAndReset(System.Span`1[ubyte]):int:this (Tier1)
4 (1.30 % of base) : 31562.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:FinalizeHashAndReset(System.Span`1[ubyte]):int:this (Tier1)
Top method improvements (bytes):
-288 (-1.44 % of base) : 27644.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Instrumented Tier0)
-288 (-5.22 % of base) : 54278.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-272 (-5.30 % of base) : 49479.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-248 (-9.63 % of base) : 54012.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-248 (-10.58 % of base) : 51044.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-208 (-5.44 % of base) : 62592.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Instrumented Tier0)
-196 (-4.73 % of base) : 54632.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Instrumented Tier0)
-192 (-1.81 % of base) : 49155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-188 (-3.07 % of base) : 56429.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-184 (-2.36 % of base) : 54245.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Instrumented Tier0)
-176 (-2.57 % of base) : 11189.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-172 (-3.58 % of base) : 50175.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-172 (-2.50 % of base) : 50104.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-168 (-4.11 % of base) : 6953.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-168 (-2.34 % of base) : 22618.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Instrumented Tier0)
-160 (-4.65 % of base) : 50569.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-152 (-2.76 % of base) : 51325.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
-152 (-2.85 % of base) : 56029.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
-152 (-5.41 % of base) : 6934.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Instrumented Tier0)
-144 (-4.57 % of base) : 23558.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:RequiresMemberAccessForRead(System.Security.SecurityException):ubyte:this (Instrumented Tier0)
Top method regressions (percentages):
4 (5.88 % of base) : 63609.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
12 (5.26 % of base) : 31555.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (5.26 % of base) : 33867.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
16 (4.35 % of base) : 31567.dasm - System.Security.Cryptography.IncrementalHash:AppendData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
16 (4.35 % of base) : 33866.dasm - System.Security.Cryptography.IncrementalHash:AppendData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (4.29 % of base) : 31568.dasm - System.Security.Cryptography.HMACCommon:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
16 (3.23 % of base) : 32083.dasm - System.Security.Cryptography.IncrementalHash:TryGetHashAndReset(System.Span`1[ubyte],byref):ubyte:this (Tier1)
12 (2.97 % of base) : 31566.dasm - System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this (Tier1)
4 (1.30 % of base) : 33871.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:FinalizeHashAndReset(System.Span`1[ubyte]):int:this (Tier1)
4 (1.30 % of base) : 31562.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:FinalizeHashAndReset(System.Span`1[ubyte]):int:this (Tier1)
4 (1.00 % of base) : 69179.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
4 (0.94 % of base) : 31560.dasm - System.Security.Cryptography.IncrementalHash:GetHashAndResetCore(System.Span`1[ubyte]):int:this (Tier1)
4 (0.94 % of base) : 33870.dasm - System.Security.Cryptography.IncrementalHash:GetHashAndResetCore(System.Span`1[ubyte]):int:this (Tier1)
12 (0.89 % of base) : 19654.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.79 % of base) : 51961.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
16 (0.44 % of base) : 44393.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.43 % of base) : 45404.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.43 % of base) : 37404.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.42 % of base) : 32082.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
16 (0.42 % of base) : 33998.dasm - System.Security.Cryptography.Asn1.Pkcs12.PfxAsn:VerifyMac(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):ubyte:this (Tier1)
Top method improvements (percentages):
-96 (-29.27 % of base) : 55232.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-96 (-29.27 % of base) : 50918.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 55271.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-88 (-27.16 % of base) : 50980.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 62622.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-16 (-25.00 % of base) : 70082.dasm - System.Text.Json.Utf8JsonWriter:TryFormatDouble(double,System.Span`1[ubyte],byref):ubyte (Tier1)
-48 (-22.22 % of base) : 62571.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-28 (-21.88 % of base) : 77560.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Instrumented Tier0)
-28 (-21.88 % of base) : 5205.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-56 (-20.90 % of base) : 49692.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-40 (-20.00 % of base) : 33811.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-36 (-18.75 % of base) : 53927.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Instrumented Tier0)
-36 (-18.75 % of base) : 48905.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-24 (-18.75 % of base) : 34890.dasm - System.Xml.Serialization.XmlSerializer:Deserialize(System.Xml.XmlReader,System.String):System.Object:this (Tier0)
-88 (-18.33 % of base) : 62568.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-40 (-17.86 % of base) : 62623.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-16.67 % of base) : 51000.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-16.67 % of base) : 64722.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Instrumented Tier0)
-32 (-16.67 % of base) : 31420.dasm - System.Security.Cryptography.ECDsaImplementation+ECDsaSecurityTransforms:ExportParameters(ubyte):System.Security.Cryptography.ECParameters:this (Instrumented Tier0)
-28 (-16.67 % of base) : 30318.dasm - System.Security.Cryptography.ECDsaImplementation+ECDsaSecurityTransforms:ImportParameters(System.Security.Cryptography.ECParameters):this (Tier0)
benchmarks.run_tiered.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15557888 (overridden on cmd)
Total bytes of diff: 15544056 (overridden on cmd)
Total bytes of delta: -13832 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
60 : 16313.dasm (5.79 % of base)
20 : 29276.dasm (0.72 % of base)
12 : 16792.dasm (0.96 % of base)
12 : 45524.dasm (2.86 % of base)
8 : 42617.dasm (1.57 % of base)
8 : 48243.dasm (1.06 % of base)
4 : 24320.dasm (0.75 % of base)
4 : 38736.dasm (0.79 % of base)
4 : 41343.dasm (5.88 % of base)
4 : 6407.dasm (0.37 % of base)
4 : 16483.dasm (0.30 % of base)
4 : 16721.dasm (0.48 % of base)
Top file improvements (bytes):
-248 : 37819.dasm (-10.65 % of base)
-208 : 40852.dasm (-6.68 % of base)
-172 : 36950.dasm (-3.69 % of base)
-172 : 36879.dasm (-2.70 % of base)
-160 : 37344.dasm (-4.65 % of base)
-140 : 37753.dasm (-11.82 % of base)
-116 : 14538.dasm (-5.62 % of base)
-112 : 24938.dasm (-6.78 % of base)
-108 : 36287.dasm (-4.01 % of base)
-104 : 37757.dasm (-8.44 % of base)
-96 : 37693.dasm (-29.27 % of base)
-96 : 37920.dasm (-2.12 % of base)
-92 : 37775.dasm (-16.67 % of base)
-92 : 26260.dasm (-3.86 % of base)
-88 : 241.dasm (-10.95 % of base)
-88 : 40806.dasm (-6.81 % of base)
-88 : 40828.dasm (-18.33 % of base)
-88 : 37755.dasm (-27.16 % of base)
-84 : 35584.dasm (-10.40 % of base)
-80 : 37674.dasm (-5.18 % of base)
58 total files with Code Size differences (46 improved, 12 regressed), 27 unchanged.
Top method regressions (bytes):
60 (5.79 % of base) : 16313.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
20 (0.72 % of base) : 29276.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
12 (2.86 % of base) : 45524.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
12 (0.96 % of base) : 16792.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
8 (1.06 % of base) : 48243.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
8 (1.57 % of base) : 42617.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
4 (0.79 % of base) : 38736.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (5.88 % of base) : 41343.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (0.48 % of base) : 16721.dasm - System.Collections.Generic.ArraySortHelper`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]:PickPivotAndPartition(System.Span`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],System.Comparison`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]):int (Tier0)
4 (0.30 % of base) : 16483.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
4 (0.75 % of base) : 24320.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
4 (0.37 % of base) : 6407.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
Top method improvements (bytes):
-248 (-10.65 % of base) : 37819.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-208 (-6.68 % of base) : 40852.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier0)
-172 (-3.69 % of base) : 36950.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-172 (-2.70 % of base) : 36879.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-160 (-4.65 % of base) : 37344.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-140 (-11.82 % of base) : 37753.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeCall(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-116 (-5.62 % of base) : 14538.dasm - System.TimeZoneInfo:TZif_GenerateAdjustmentRule(byref,System.TimeSpan,System.Collections.Generic.List`1[System.TimeZoneInfo+AdjustmentRule],System.DateTime[],ubyte[],System.TimeZoneInfo+TZifType[],System.String) (Tier0)
-112 (-6.78 % of base) : 24938.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (Tier1)
-108 (-4.01 % of base) : 36287.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)
-104 (-8.44 % of base) : 37757.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-96 (-2.12 % of base) : 37920.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Tier0)
-96 (-29.27 % of base) : 37693.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-92 (-16.67 % of base) : 37775.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-92 (-3.86 % of base) : 26260.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.Diagnostics.ActivityContext,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset,ubyte,int):System.Diagnostics.Activity:this (Tier0)
-88 (-6.81 % of base) : 40806.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeclarationStatementParts(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier0)
-88 (-27.16 % of base) : 37755.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-18.33 % of base) : 40828.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-88 (-10.95 % of base) : 241.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier0)
-84 (-10.40 % of base) : 35584.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:Create(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,int,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol (Tier0)
-80 (-5.18 % of base) : 37674.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GenerateBaseParameterlessConstructorInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCall (Tier0)
Top method regressions (percentages):
4 (5.88 % of base) : 41343.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
60 (5.79 % of base) : 16313.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
12 (2.86 % of base) : 45524.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
8 (1.57 % of base) : 42617.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
8 (1.06 % of base) : 48243.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
12 (0.96 % of base) : 16792.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.79 % of base) : 38736.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (0.75 % of base) : 24320.dasm - System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this (Tier1)
20 (0.72 % of base) : 29276.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
4 (0.48 % of base) : 16721.dasm - System.Collections.Generic.ArraySortHelper`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]:PickPivotAndPartition(System.Span`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet],System.Comparison`1[System.Text.RegularExpressions.RegexFindOptimizations+FixedDistanceSet]):int (Tier0)
4 (0.37 % of base) : 6407.dasm - System.Net.Sockets.SocketPal:TryCompleteSendTo(System.Net.Sockets.SafeSocketHandle,System.ReadOnlySpan`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],byref,byref,byref,int,System.ReadOnlySpan`1[ubyte],byref,byref):ubyte (Tier1)
4 (0.30 % of base) : 16483.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
Top method improvements (percentages):
-96 (-29.27 % of base) : 37693.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 37755.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 40882.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-48 (-22.22 % of base) : 40831.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-28 (-21.88 % of base) : 10365.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-56 (-20.90 % of base) : 36468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-40 (-20.00 % of base) : 27849.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-36 (-18.75 % of base) : 35681.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-24 (-18.75 % of base) : 28651.dasm - System.Xml.Serialization.XmlSerializer:Deserialize(System.Xml.XmlReader,System.String):System.Object:this (Tier0)
-88 (-18.33 % of base) : 40828.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-40 (-17.86 % of base) : 40883.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-16.67 % of base) : 37775.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-28 (-16.67 % of base) : 24101.dasm - System.Security.Cryptography.ECDsaImplementation+ECDsaSecurityTransforms:ImportParameters(System.Security.Cryptography.ECParameters):this (Tier0)
-20 (-15.62 % of base) : 36277.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInExpressionBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken):ubyte (Tier0)
-32 (-15.38 % of base) : 36273.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.BaseMethodDeclarationSyntax):ubyte (Tier0)
-40 (-15.15 % of base) : 40819.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier0)
-20 (-15.15 % of base) : 35546.dasm - Microsoft.CodeAnalysis.PEModule:HasFixedBufferAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier0)
-24 (-15.00 % of base) : 40860.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.Location):this (Tier0)
-28 (-14.89 % of base) : 26259.dasm - System.Diagnostics.ActivitySource:StartActivity(System.String,int,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset):System.Diagnostics.Activity:this (Tier0)
-48 (-14.63 % of base) : 36970.dasm - Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData:CreateIfNeeded(Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]):Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData (Tier0)
coreclr_tests.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 485381240 (overridden on cmd)
Total bytes of diff: 485152172 (overridden on cmd)
Total bytes of delta: -229068 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
116 : 280813.dasm (0.15 % of base)
112 : 493886.dasm (1.00 % of base)
64 : 2869.dasm (0.78 % of base)
64 : 249887.dasm (0.78 % of base)
64 : 296008.dasm (0.78 % of base)
64 : 307212.dasm (0.78 % of base)
48 : 493874.dasm (0.79 % of base)
40 : 352938.dasm (0.48 % of base)
40 : 264875.dasm (0.48 % of base)
40 : 29583.dasm (0.49 % of base)
36 : 503578.dasm (13.85 % of base)
24 : 523452.dasm (3.75 % of base)
20 : 28674.dasm (0.88 % of base)
16 : 529122.dasm (0.28 % of base)
12 : 228240.dasm (0.91 % of base)
12 : 490807.dasm (0.28 % of base)
12 : 491951.dasm (0.31 % of base)
12 : 370504.dasm (0.99 % of base)
12 : 502420.dasm (1.92 % of base)
12 : 247844.dasm (1.00 % of base)
Top file improvements (bytes):
-444 : 283742.dasm (-3.56 % of base)
-440 : 490078.dasm (-10.74 % of base)
-424 : 293194.dasm (-1.08 % of base)
-328 : 497575.dasm (-20.25 % of base)
-316 : 497574.dasm (-14.31 % of base)
-304 : 494916.dasm (-19.49 % of base)
-300 : 495493.dasm (-19.23 % of base)
-300 : 494915.dasm (-13.54 % of base)
-284 : 284751.dasm (-2.47 % of base)
-280 : 494950.dasm (-16.87 % of base)
-280 : 495492.dasm (-13.11 % of base)
-272 : 495511.dasm (-17.62 % of base)
-272 : 239649.dasm (-5.30 % of base)
-268 : 494949.dasm (-11.00 % of base)
-264 : 494325.dasm (-10.73 % of base)
-260 : 269201.dasm (-2.12 % of base)
-256 : 496280.dasm (-11.25 % of base)
-256 : 495153.dasm (-18.23 % of base)
-252 : 496093.dasm (-15.07 % of base)
-252 : 494326.dasm (-16.24 % of base)
92 total files with Code Size differences (54 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
116 (0.15 % of base) : 280813.dasm - Test_1000w1d.testout1:Func_0():int (Tier0)
112 (1.00 % of base) : 493886.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
64 (0.78 % of base) : 2869.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
64 (0.78 % of base) : 249887.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
64 (0.78 % of base) : 296008.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
64 (0.78 % of base) : 307212.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
48 (0.79 % of base) : 493874.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
40 (0.48 % of base) : 352938.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
40 (0.48 % of base) : 264875.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
40 (0.49 % of base) : 29583.dasm - CoreclrTestLib.CoreclrTestWrapperLib:RunTest(System.String,System.String,System.String,System.String,System.String,System.String):int:this (Tier1)
36 (13.85 % of base) : 503578.dasm - (dynamicClass):ABIStress_TailCaller965(ABIStress.S12U,System.Int128,System.Numerics.Vector`1[int],ABIStress.S9U,ABIStress.I128_1,ABIStress.S4U,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S5U,double,ABIStress.S6U,ABIStress.Hfa2,System.Runtime.Intrinsics.Vector128`1[int],ubyte,long):int (FullOpts)
24 (3.75 % of base) : 523452.dasm - DefaultNamespace.DoubLinkBig:.ctor(int):this (FullOpts)
20 (0.88 % of base) : 28674.dasm - VectorMgdMgd+HVATests`1[ubyte]:doTests():this (Tier0)
16 (0.28 % of base) : 529122.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
12 (1.92 % of base) : 502420.dasm - (dynamicClass):ABIStress_TailCaller341(ABIStress.S5U,ABIStress.S15U,ABIStress.S13U,ABIStress.S8P,int,ABIStress.S2U,ABIStress.S2P,ABIStress.I128_1,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S16U,ABIStress.S6U,ABIStress.S14U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S10U,ABIStress.S2P,int,System.Runtime.Intrinsics.Vector256`1[int],long,System.Int128,ABIStress.S14U,System.Runtime.Intrinsics.Vector256`1[int],System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S6U,ABIStress.S9U):int (FullOpts)
12 (0.28 % of base) : 490807.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (FullOpts)
12 (0.31 % of base) : 491951.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (0.99 % of base) : 370504.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
12 (0.91 % of base) : 228240.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (Tier1)
12 (1.00 % of base) : 247844.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):System.Object[] (Tier1)
Top method improvements (bytes):
-444 (-3.56 % of base) : 283742.dasm - JitTest_huge_struct_Arrays_il.Test:Main():int (MinOpts)
-440 (-10.74 % of base) : 490078.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-424 (-1.08 % of base) : 293194.dasm - DefaultNamespace.cb6054ToByte_all:runTest():ubyte:this (Instrumented Tier0)
-328 (-20.25 % of base) : 497575.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S2U,ABIStress.S11U,ABIStress.S11U,ABIStress.S16U,ABIStress.S6U,ABIStress.S6U,ABIStress.S4P,ABIStress.S14U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S13U,ABIStress.Hfa1,double,ABIStress.S10U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S5U,ABIStress.S9U,ABIStress.S4U,ABIStress.S12U,ABIStress.S2U,ABIStress.Hfa2,float,ABIStress.S6U,ABIStress.S32U):int (MinOpts)
-316 (-14.31 % of base) : 497574.dasm - (dynamicClass):ABIStress_PInvoker929(ABIStress.S17U,ABIStress.S10U,double,System.Numerics.Vector`1[int],System.Int128,int,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S7U,ABIStress.S8P,float,ABIStress.S8U,ABIStress.S15U,ABIStress.S16U,ABIStress.S6U,ABIStress.S31U,ABIStress.S2P,double,ABIStress.S7U,ABIStress.S3U,ABIStress.I128_2,ABIStress.Hfa1,short):int[] (MinOpts)
-304 (-19.49 % of base) : 494916.dasm - (dynamicClass):IL_STUB_PInvoke(double,ABIStress.S13U,ABIStress.S6U,ABIStress.S14U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,ABIStress.S5U,ABIStress.S2U,ABIStress.Hfa1,long,ABIStress.S11U,ABIStress.S12U,ABIStress.S1P,ABIStress.S32U,ABIStress.S10U,long,ABIStress.S15U,ABIStress.S11U,ABIStress.S16U,ABIStress.S4P,ABIStress.S8U,ABIStress.S10U,ABIStress.S32U):int (MinOpts)
-300 (-13.54 % of base) : 494915.dasm - (dynamicClass):ABIStress_PInvoker179(ABIStress.S14U,ABIStress.Hfa2,ABIStress.S8P,ABIStress.I128_2,ABIStress.S16U,ABIStress.S14U,float,ABIStress.I128_1,System.Int128,ABIStress.S14U,short,double,System.Numerics.Vector`1[int],ABIStress.S10U,ABIStress.I128_2,ABIStress.I128_1,ABIStress.S14U,ABIStress.I128_1,ABIStress.S13U,System.Runtime.Intrinsics.Vector128`1[int]):int[] (MinOpts)
-300 (-19.23 % of base) : 495493.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S12U,ABIStress.S2P,ABIStress.S5U,ABIStress.S16U,ABIStress.S15U,ABIStress.S5U,ABIStress.S2P,ABIStress.S15U,ABIStress.S4P,ABIStress.S13U,ABIStress.S3U,long,ABIStress.S8U,ABIStress.S12U,ABIStress.S9U,ABIStress.S9U,ABIStress.S8U,double,double,ABIStress.S3U,ABIStress.S1P,ABIStress.S14U,ABIStress.S6U,ABIStress.S2U,ABIStress.S31U):int (MinOpts)
-284 (-2.47 % of base) : 284751.dasm - JitTest_huge_struct_huge_il.Test:Main():int (Instrumented Tier0)
-280 (-13.11 % of base) : 495492.dasm - (dynamicClass):ABIStress_PInvoker334(ABIStress.S12U,ABIStress.S8P,ABIStress.S13U,ABIStress.S6U,short,ABIStress.S4P,ABIStress.S5U):int[] (MinOpts)
-280 (-16.87 % of base) : 494950.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S14U,ABIStress.S2P,float,ABIStress.S15U,ABIStress.S4P,ABIStress.S10U,ABIStress.S13U,ABIStress.S15U,ABIStress.S11U,ABIStress.S2P,ubyte,ABIStress.S8U,ABIStress.S31U,ABIStress.S4U,ABIStress.S14U,ABIStress.S11U,ABIStress.S10U,ABIStress.S15U,double,ABIStress.S17U,short,ABIStress.S31U,ABIStress.Hfa1,ABIStress.Hfa1,ABIStress.S8U):int (MinOpts)
-272 (-17.62 % of base) : 495511.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S16U,ABIStress.S6U,ABIStress.S14U,ABIStress.S11U,ABIStress.S17U,ABIStress.S12U,ubyte,ABIStress.S13U,ABIStress.S2U,ABIStress.S4U,ABIStress.S2P,short,ABIStress.S8U,ABIStress.S17U,ubyte,ABIStress.S3U,ABIStress.Hfa1,ABIStress.S8U,ABIStress.S15U,ABIStress.S11U,ABIStress.S15U,ABIStress.S6U,ABIStress.S2P,ABIStress.S32U):int (MinOpts)
-272 (-5.30 % of base) : 239649.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-268 (-11.00 % of base) : 494949.dasm - (dynamicClass):ABIStress_PInvoker188(short,ABIStress.S14U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S12U,ABIStress.S15U,ABIStress.S5U,double):int[] (MinOpts)
-264 (-10.73 % of base) : 494325.dasm - (dynamicClass):ABIStress_PInvoker28(ABIStress.S8U,ABIStress.I128_1,ABIStress.S6U,ABIStress.S5U,ABIStress.S2U,ABIStress.S1P,ABIStress.S9U,ABIStress.Hfa2,ABIStress.S11U,ABIStress.I128_2,ABIStress.S14U,ABIStress.S9U,ABIStress.I128_2,ABIStress.S4U,ABIStress.S1P,ABIStress.S17U,ABIStress.S7U,double):int[] (MinOpts)
-260 (-2.12 % of base) : 269201.dasm - JitTest_huge_struct_huge_il.Test:Main():int (MinOpts)
-256 (-11.25 % of base) : 496280.dasm - (dynamicClass):ABIStress_PInvoker552(ABIStress.S11U,ABIStress.S5U,ABIStress.S10U,ABIStress.S4U,float,ABIStress.Hfa2,ubyte,ABIStress.Hfa1,ABIStress.S13U,double,ABIStress.S12U,ABIStress.I128_2,ABIStress.S8P,ABIStress.S13U,ABIStress.S10U):int[] (MinOpts)
-256 (-18.23 % of base) : 495153.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S17U,long,ABIStress.S14U,ABIStress.S15U,int,ABIStress.Hfa2,ubyte,ABIStress.S15U,float,double,long,ABIStress.S17U,ABIStress.S4U,ABIStress.S15U,short,ABIStress.S10U,double,ABIStress.S15U,ABIStress.S32U):int (MinOpts)
-252 (-16.24 % of base) : 494326.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S3U,ABIStress.S4P,ABIStress.S9U,ABIStress.Hfa1,ABIStress.S16U,ABIStress.S7U,ubyte,ABIStress.Hfa1,ABIStress.S3U,ABIStress.S13U,ABIStress.S31U,ABIStress.S12U,ABIStress.S16U,ABIStress.S8P,ABIStress.S2U,ABIStress.S2P,ABIStress.S4U,ABIStress.S2P,ABIStress.S2U,ABIStress.S4U,ABIStress.S13U,ABIStress.S6U,ABIStress.S31U,ABIStress.S4U):int (MinOpts)
-252 (-15.07 % of base) : 496093.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S3U,ABIStress.S5U,ABIStress.S3U,ABIStress.S15U,ABIStress.S31U,short,ABIStress.S32U,double,ABIStress.S14U,ABIStress.S15U,ABIStress.S3U,ABIStress.Hfa1,ABIStress.Hfa1,ABIStress.S11U,ABIStress.S10U,ABIStress.S4P,ABIStress.S32U,ABIStress.S17U,ubyte,ABIStress.S4P,ABIStress.S16U,ABIStress.S14U,ABIStress.S31U,ABIStress.S4U):int (MinOpts)
Top method regressions (percentages):
36 (13.85 % of base) : 503578.dasm - (dynamicClass):ABIStress_TailCaller965(ABIStress.S12U,System.Int128,System.Numerics.Vector`1[int],ABIStress.S9U,ABIStress.I128_1,ABIStress.S4U,ABIStress.S13U,ABIStress.Hfa2,ABIStress.S5U,double,ABIStress.S6U,ABIStress.Hfa2,System.Runtime.Intrinsics.Vector128`1[int],ubyte,long):int (FullOpts)
4 (5.88 % of base) : 402680.dasm - SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
4 (3.85 % of base) : 580229.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
4 (3.85 % of base) : 580260.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
4 (3.85 % of base) : 388700.dasm - NullableTest23:BoxUnboxToQ(System.Object):ubyte (FullOpts)
4 (3.85 % of base) : 388742.dasm - NullableTest30:BoxUnboxToQ(System.Object):ubyte (FullOpts)
24 (3.75 % of base) : 523452.dasm - DefaultNamespace.DoubLinkBig:.ctor(int):this (FullOpts)
8 (3.03 % of base) : 421828.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 411592.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 421812.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 421780.dasm - JIT.HardwareIntrinsics.Arm.Helpers:AddPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
8 (3.03 % of base) : 415219.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MaxPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 415700.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 429976.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(byte[],byte[],int):byte (FullOpts)
8 (3.03 % of base) : 415684.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 429960.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(int[],int[],int):int (FullOpts)
8 (3.03 % of base) : 415635.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
8 (3.03 % of base) : 429928.dasm - JIT.HardwareIntrinsics.Arm.Helpers:MinPairwise(ubyte[],ubyte[],int):ubyte (FullOpts)
4 (3.03 % of base) : 389108.dasm - NullableTest23:BoxUnboxToQGenC[NotEmptyStructQ](System.Nullable`1[NotEmptyStructQ]):ubyte (FullOpts)
4 (3.03 % of base) : 389152.dasm - NullableTest30:BoxUnboxToQGen[System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]](System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]):ubyte (FullOpts)
Top method improvements (percentages):
-48 (-30.00 % of base) : 502373.dasm - (dynamicClass):ABIStress_TailCaller317(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S11U,ABIStress.S1P,ABIStress.S9U,ABIStress.S4P,System.Int128,ABIStress.S3U,ABIStress.S11U,short,ABIStress.S7U,ABIStress.S6U,ABIStress.S6U,double,ABIStress.S16U,float,ABIStress.S1P,ABIStress.S3U,ABIStress.S15U,ABIStress.S12U):int (FullOpts)
-96 (-29.27 % of base) : 241105.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-80 (-27.40 % of base) : 501875.dasm - (dynamicClass):ABIStress_TailCaller65(System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S4P,ABIStress.S1P,ABIStress.S11U,ABIStress.Hfa2,ABIStress.S6U,long,long,System.Int128,ABIStress.S3U,ABIStress.S13U,ABIStress.S2P,ABIStress.S8P,ABIStress.S16U,short,ABIStress.S15U,ABIStress.S2P,int,ABIStress.S10U):int (FullOpts)
-88 (-27.16 % of base) : 241165.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 242957.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-16 (-26.67 % of base) : 502864.dasm - (dynamicClass):ABIStress_TailCaller570(ABIStress.S10U,System.Runtime.Intrinsics.Vector128`1[int],short):int (FullOpts)
-72 (-25.35 % of base) : 503321.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-80 (-24.39 % of base) : 502723.dasm - (dynamicClass):ABIStress_TailCaller499(ABIStress.S14U,short,long,short,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S7U,ABIStress.S3U,float,ABIStress.S10U,ABIStress.S15U,ABIStress.S5U,System.Runtime.Intrinsics.Vector256`1[int],ABIStress.S16U,System.Int128,ABIStress.S9U,ubyte,short,ABIStress.S7U,ABIStress.S8P,System.Int128,ubyte,ABIStress.S6U,ABIStress.Hfa1,ABIStress.S14U,ABIStress.S15U):int (FullOpts)
-64 (-24.24 % of base) : 502526.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-24 (-23.08 % of base) : 501879.dasm - (dynamicClass):ABIStress_TailCaller67(ABIStress.S14U,ABIStress.S14U,ABIStress.S8U,System.Int128,ABIStress.S15U,ABIStress.S9U,ABIStress.S9U,ABIStress.S4P,short,ABIStress.S8P,ABIStress.S14U,System.Numerics.Vector`1[int],ABIStress.I128_1):int (FullOpts)
-88 (-22.68 % of base) : 502095.dasm - (dynamicClass):ABIStress_TailCaller176(ABIStress.S8U,ABIStress.I128_1,ABIStress.S15U,ABIStress.S11U,ABIStress.I128_1,ABIStress.S16U,ABIStress.S13U,ABIStress.S11U,ABIStress.S10U,ABIStress.Hfa1,ABIStress.S5U,ABIStress.S13U,short,ABIStress.S12U,ABIStress.S6U,short,ABIStress.S8U,ABIStress.S14U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S7U):int (FullOpts)
-48 (-22.22 % of base) : 242906.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-92 (-21.90 % of base) : 503416.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-56 (-20.90 % of base) : 239866.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-100 (-20.49 % of base) : 502821.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-328 (-20.25 % of base) : 497575.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S2U,ABIStress.S11U,ABIStress.S11U,ABIStress.S16U,ABIStress.S6U,ABIStress.S6U,ABIStress.S4P,ABIStress.S14U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S13U,ABIStress.Hfa1,double,ABIStress.S10U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S5U,ABIStress.S9U,ABIStress.S4U,ABIStress.S12U,ABIStress.S2U,ABIStress.Hfa2,float,ABIStress.S6U,ABIStress.S32U):int (MinOpts)
-68 (-20.24 % of base) : 501964.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-304 (-19.49 % of base) : 494916.dasm - (dynamicClass):IL_STUB_PInvoke(double,ABIStress.S13U,ABIStress.S6U,ABIStress.S14U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,ABIStress.S5U,ABIStress.S2U,ABIStress.Hfa1,long,ABIStress.S11U,ABIStress.S12U,ABIStress.S1P,ABIStress.S32U,ABIStress.S10U,long,ABIStress.S15U,ABIStress.S11U,ABIStress.S16U,ABIStress.S4P,ABIStress.S8U,ABIStress.S10U,ABIStress.S32U):int (MinOpts)
-300 (-19.23 % of base) : 495493.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S12U,ABIStress.S2P,ABIStress.S5U,ABIStress.S16U,ABIStress.S15U,ABIStress.S5U,ABIStress.S2P,ABIStress.S15U,ABIStress.S4P,ABIStress.S13U,ABIStress.S3U,long,ABIStress.S8U,ABIStress.S12U,ABIStress.S9U,ABIStress.S9U,ABIStress.S8U,double,double,ABIStress.S3U,ABIStress.S1P,ABIStress.S14U,ABIStress.S6U,ABIStress.S2U,ABIStress.S31U):int (MinOpts)
-212 (-19.13 % of base) : 496585.dasm - (dynamicClass):ABIStress_PInvoker635(ubyte,ABIStress.S3U,System.Numerics.Vector`1[int],ABIStress.S14U,ABIStress.S9U,ABIStress.Hfa1,ABIStress.S5U,int,System.Int128,float,ABIStress.S17U,ABIStress.S3U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S9U,ABIStress.S31U,ABIStress.I128_2,ABIStress.S13U,ABIStress.S4U,ABIStress.S32U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.I128_2,ABIStress.S15U,ABIStress.I128_1,ABIStress.S2U):int[] (MinOpts)
libraries.crossgen2.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 55622104 (overridden on cmd)
Total bytes of diff: 55609980 (overridden on cmd)
Total bytes of delta: -12124 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
96 : 67022.dasm (3.10 % of base)
64 : 66161.dasm (4.19 % of base)
60 : 52860.dasm (2.66 % of base)
60 : 73544.dasm (7.81 % of base)
48 : 166608.dasm (2.65 % of base)
48 : 131325.dasm (2.65 % of base)
44 : 129712.dasm (0.16 % of base)
40 : 66019.dasm (2.78 % of base)
40 : 174309.dasm (5.35 % of base)
32 : 110118.dasm (3.59 % of base)
32 : 68956.dasm (3.45 % of base)
32 : 110120.dasm (5.10 % of base)
32 : 207332.dasm (5.59 % of base)
28 : 166950.dasm (3.87 % of base)
28 : 43149.dasm (3.63 % of base)
28 : 196965.dasm (1.03 % of base)
28 : 228545.dasm (4.96 % of base)
28 : 131653.dasm (3.91 % of base)
28 : 131686.dasm (3.87 % of base)
28 : 209679.dasm (3.74 % of base)
Top file improvements (bytes):
-1280 : 168107.dasm (-5.26 % of base)
-1280 : 132874.dasm (-5.26 % of base)
-140 : 173140.dasm (-4.77 % of base)
-128 : 173303.dasm (-11.51 % of base)
-124 : 193650.dasm (-4.59 % of base)
-92 : 180287.dasm (-0.93 % of base)
-88 : 173222.dasm (-5.39 % of base)
-88 : 110212.dasm (-7.03 % of base)
-72 : 92657.dasm (-14.88 % of base)
-72 : 115016.dasm (-2.96 % of base)
-68 : 163807.dasm (-3.93 % of base)
-64 : 48051.dasm (-0.20 % of base)
-64 : 48382.dasm (-10.13 % of base)
-64 : 113935.dasm (-5.50 % of base)
-64 : 175476.dasm (-4.23 % of base)
-60 : 109111.dasm (-1.73 % of base)
-56 : 106744.dasm (-1.72 % of base)
-56 : 140377.dasm (-6.01 % of base)
-56 : 149630.dasm (-2.92 % of base)
-56 : 150074.dasm (-9.33 % of base)
79 total files with Code Size differences (44 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
96 (3.10 % of base) : 67022.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MakeSynthesizedTupleMembers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
64 (4.19 % of base) : 66161.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
60 (7.81 % of base) : 73544.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+<>c__DisplayClass35_0:<SynthesizeClosureEnvironments>g__MakeFrame|1(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+ClosureEnvironment):Microsoft.CodeAnalysis.CSharp.SynthesizedClosureEnvironment:this (FullOpts)
60 (2.66 % of base) : 52860.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeParameterConstraints(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]):this (FullOpts)
48 (2.65 % of base) : 166608.dasm - Microsoft.Cci.PdbWriter:DefineNamespaceScopes(Microsoft.Cci.IMethodBody):this (FullOpts)
48 (2.65 % of base) : 131325.dasm - Microsoft.Cci.PdbWriter:DefineNamespaceScopes(Microsoft.Cci.IMethodBody):this (FullOpts)
44 (0.16 % of base) : 129712.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
40 (2.78 % of base) : 66019.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpDefinitionMap:CreateLocalSlotMap(Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.LocalInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLocalInfo] (FullOpts)
40 (5.35 % of base) : 174309.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+DiagnosticDescriptorSet:ToSortedList():System.Collections.Generic.List`1[System.ValueTuple`3[int,Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
32 (3.45 % of base) : 68956.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:InfiniteFlatteningGraph(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):ubyte (FullOpts)
32 (3.59 % of base) : 110118.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:DoGetSyntaxErrors(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxNodeOrToken):System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.CodeAnalysis.Diagnostic] (FullOpts)
32 (5.10 % of base) : 110120.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
32 (5.59 % of base) : 207332.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
28 (3.91 % of base) : 131653.dasm - Microsoft.Cci.MetadataWriter:PopulateMethodTableRows(int[]):this (FullOpts)
28 (3.87 % of base) : 166950.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
28 (3.87 % of base) : 131686.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
28 (4.96 % of base) : 228545.dasm - Microsoft.Extensions.Logging.LoggerFilterConfigureOptions:LoadRules(Microsoft.Extensions.Logging.LoggerFilterOptions,Microsoft.Extensions.Configuration.IConfigurationSection,System.String) (FullOpts)
28 (3.74 % of base) : 209679.dasm - System.Linq.Parallel.DecimalAverageAggregationOperator:InternalAggregate(byref):System.Decimal:this (FullOpts)
28 (3.63 % of base) : 43149.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (FullOpts)
28 (1.03 % of base) : 196965.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessSimpleType(System.Xml.Schema.XmlSchemaSimpleType,ubyte):this (FullOpts)
Top method improvements (bytes):
-1280 (-5.26 % of base) : 168107.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-1280 (-5.26 % of base) : 132874.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-140 (-4.77 % of base) : 173140.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-128 (-11.51 % of base) : 173303.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-124 (-4.59 % of base) : 193650.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-92 (-0.93 % of base) : 180287.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-88 (-5.39 % of base) : 173222.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-88 (-7.03 % of base) : 110212.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
-72 (-14.88 % of base) : 92657.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.QuickAttributeHelpers:GetQuickAttributes(System.String,ubyte):ubyte (FullOpts)
-72 (-2.96 % of base) : 115016.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-68 (-3.93 % of base) : 163807.dasm - System.Data.Common.DecimalStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-64 (-0.20 % of base) : 48051.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-64 (-10.13 % of base) : 48382.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-4.23 % of base) : 175476.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
-64 (-5.50 % of base) : 113935.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEDeltaAssemblyBuilder+VB$StateMachine_27_GetTopLevelTypeDefinitions:MoveNext():ubyte:this (FullOpts)
-60 (-1.73 % of base) : 109111.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitFieldOrPropertyInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundFieldOrPropertyInitializer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
-56 (-6.01 % of base) : 140377.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-56 (-1.72 % of base) : 106744.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-56 (-2.92 % of base) : 149630.dasm - System.Security.Cryptography.X509Certificates.X500NameEncoder:X500DistinguishedNameDecode(ubyte[],ubyte,ubyte,ubyte,System.String,System.String,ubyte):System.String (FullOpts)
-56 (-9.33 % of base) : 150074.dasm - System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
Top method regressions (percentages):
60 (7.81 % of base) : 73544.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+<>c__DisplayClass35_0:<SynthesizeClosureEnvironments>g__MakeFrame|1(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+ClosureEnvironment):Microsoft.CodeAnalysis.CSharp.SynthesizedClosureEnvironment:this (FullOpts)
4 (7.14 % of base) : 96547.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
20 (6.02 % of base) : 72502.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
24 (5.83 % of base) : 129287.dasm - System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)
32 (5.59 % of base) : 207332.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
4 (5.56 % of base) : 74819.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (5.56 % of base) : 74818.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (5.56 % of base) : 113954.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (5.56 % of base) : 113953.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
40 (5.35 % of base) : 174309.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+DiagnosticDescriptorSet:ToSortedList():System.Collections.Generic.List`1[System.ValueTuple`3[int,Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
32 (5.10 % of base) : 110120.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
4 (5.00 % of base) : 133126.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 168357.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 133127.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 168358.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
28 (4.96 % of base) : 228545.dasm - Microsoft.Extensions.Logging.LoggerFilterConfigureOptions:LoadRules(Microsoft.Extensions.Logging.LoggerFilterOptions,Microsoft.Extensions.Configuration.IConfigurationSection,System.String) (FullOpts)
20 (4.95 % of base) : 72507.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
24 (4.80 % of base) : 200404.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
4 (4.76 % of base) : 180384.dasm - System.Text.RegularExpressions.Symbolic.MatchingState`1[System.Text.RegularExpressions.Symbolic.BitVector]:IsDeadend(System.Text.RegularExpressions.Symbolic.ISolver`1[System.Text.RegularExpressions.Symbolic.BitVector]):ubyte:this (FullOpts)
4 (4.76 % of base) : 180499.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.Text.RegularExpressions.Symbolic.BitVector]:IsNothing(System.Text.RegularExpressions.Symbolic.ISolver`1[System.Text.RegularExpressions.Symbolic.BitVector]):ubyte:this (FullOpts)
Top method improvements (percentages):
-12 (-21.43 % of base) : 150552.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 150538.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 150563.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-32 (-16.67 % of base) : 152002.dasm - System.Text.Json.JsonDocument:ParseRented(System.Text.Json.PooledByteBufferWriter,System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-72 (-14.88 % of base) : 92657.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.QuickAttributeHelpers:GetQuickAttributes(System.String,ubyte):ubyte (FullOpts)
-28 (-14.29 % of base) : 126081.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-28 (-14.29 % of base) : 146052.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-28 (-14.29 % of base) : 149308.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-24 (-13.64 % of base) : 150639.dasm - System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[System.Decimal],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)
-8 (-13.33 % of base) : 150539.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 150541.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 150545.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 150544.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-32 (-12.90 % of base) : 151501.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-12 (-12.00 % of base) : 150073.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-24 (-11.76 % of base) : 42416.dasm - System.Reflection.Emit.RuntimeModuleBuilder:SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,int,ubyte[],int) (FullOpts)
-128 (-11.51 % of base) : 173303.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-28 (-11.48 % of base) : 133855.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-28 (-11.48 % of base) : 169065.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-11.32 % of base) : 42421.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,int,ubyte[],int):int (FullOpts)
libraries.pmi.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79954540 (overridden on cmd)
Total bytes of diff: 79942740 (overridden on cmd)
Total bytes of delta: -11800 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
124 : 115027.dasm (1.10 % of base)
112 : 103396.dasm (0.93 % of base)
104 : 115886.dasm (4.48 % of base)
96 : 76974.dasm (2.38 % of base)
84 : 137578.dasm (1.73 % of base)
80 : 115054.dasm (0.81 % of base)
76 : 114793.dasm (1.38 % of base)
76 : 264999.dasm (1.99 % of base)
64 : 114799.dasm (2.13 % of base)
64 : 245459.dasm (1.70 % of base)
60 : 858.dasm (5.79 % of base)
56 : 179303.dasm (0.45 % of base)
48 : 81179.dasm (0.44 % of base)
48 : 114550.dasm (0.49 % of base)
40 : 114938.dasm (0.68 % of base)
40 : 119165.dasm (1.05 % of base)
40 : 114949.dasm (0.99 % of base)
40 : 75236.dasm (0.65 % of base)
36 : 280594.dasm (4.17 % of base)
36 : 81256.dasm (0.63 % of base)
Top file improvements (bytes):
-440 : 174041.dasm (-9.00 % of base)
-440 : 174134.dasm (-9.33 % of base)
-160 : 297056.dasm (-3.21 % of base)
-140 : 223183.dasm (-6.01 % of base)
-128 : 245568.dasm (-11.64 % of base)
-124 : 245399.dasm (-4.38 % of base)
-112 : 215037.dasm (-6.78 % of base)
-112 : 245488.dasm (-5.26 % of base)
-96 : 143303.dasm (-4.69 % of base)
-88 : 150318.dasm (-6.49 % of base)
-84 : 28120.dasm (-3.43 % of base)
-64 : 79206.dasm (-9.70 % of base)
-64 : 269905.dasm (-7.41 % of base)
-60 : 174955.dasm (-4.16 % of base)
-60 : 28244.dasm (-2.00 % of base)
-48 : 107099.dasm (-1.79 % of base)
-48 : 250445.dasm (-3.58 % of base)
-48 : 81073.dasm (-0.44 % of base)
-48 : 191170.dasm (-6.00 % of base)
-48 : 227295.dasm (-0.75 % of base)
81 total files with Code Size differences (43 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
124 (1.10 % of base) : 115027.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,int,int,int,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this (FullOpts)
112 (0.93 % of base) : 103396.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
104 (4.48 % of base) : 115886.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
96 (2.38 % of base) : 76974.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:<LoadAndValidateAttributes>g__removeObsoleteDiagnosticsForForwardedTypes|197_0(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],byref):this (FullOpts)
84 (1.73 % of base) : 137578.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
80 (0.81 % of base) : 115054.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
76 (1.99 % of base) : 264999.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],byref,byref):this (FullOpts)
76 (1.38 % of base) : 114793.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
64 (1.70 % of base) : 245459.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]):this (FullOpts)
64 (2.13 % of base) : 114799.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ConstructAnonymousDelegateSymbol(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this (FullOpts)
60 (5.79 % of base) : 858.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
56 (0.45 % of base) : 179303.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.44 % of base) : 81179.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
48 (0.49 % of base) : 114550.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindAttributeNamedArgument(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
40 (0.65 % of base) : 75236.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
40 (0.68 % of base) : 114938.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeLocalModifiersAndReportErrors(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (0.99 % of base) : 114949.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:VerifyNameShadowingInMethodBody(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (1.05 % of base) : 119165.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CreateTypeParameterInfoInPart(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceTypeParameterOnTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,ubyte,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
36 (0.63 % of base) : 81256.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
36 (4.17 % of base) : 280594.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
Top method improvements (bytes):
-440 (-9.33 % of base) : 174134.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-440 (-9.00 % of base) : 174041.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
-160 (-3.21 % of base) : 297056.dasm - R2RTest.BuildFolderSet:WriteCombinedLog(System.String):this (FullOpts)
-140 (-6.01 % of base) : 223183.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-128 (-11.64 % of base) : 245568.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-124 (-4.38 % of base) : 245399.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-112 (-5.26 % of base) : 245488.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-112 (-6.78 % of base) : 215037.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-96 (-4.69 % of base) : 143303.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-88 (-6.49 % of base) : 150318.dasm - Microsoft.Build.Graph.GraphBuilder:AddEdgesFromProjectReferenceItems(System.Collections.Generic.Dictionary`2[Microsoft.Build.BackEnd.ConfigurationMetadata,Microsoft.Build.Graph.ParsedProject],Microsoft.Build.Graph.GraphBuilder+GraphEdges):this (FullOpts)
-84 (-3.43 % of base) : 28120.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-64 (-9.70 % of base) : 79206.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 269905.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-60 (-4.16 % of base) : 174955.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetGenericTypeFromTypeName(System.String,System.Reflection.Assembly):System.Type:this (FullOpts)
-60 (-2.00 % of base) : 28244.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-48 (-0.44 % of base) : 81073.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-48 (-1.79 % of base) : 107099.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-48 (-3.58 % of base) : 250445.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
-48 (-6.00 % of base) : 191170.dasm - System.Security.Cryptography.Pkcs.SignerInfo:VerifySignature(System.Security.Cryptography.Pkcs.CmsSignature,System.Security.Cryptography.X509Certificates.X509Certificate2,ubyte):ubyte:this (FullOpts)
-48 (-0.75 % of base) : 227295.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
Top method regressions (percentages):
16 (6.90 % of base) : 107786.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
4 (6.67 % of base) : 236228.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
4 (6.67 % of base) : 256249.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
4 (6.67 % of base) : 122574.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
4 (6.25 % of base) : 110253.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (6.25 % of base) : 110252.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (6.25 % of base) : 249590.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
4 (6.25 % of base) : 269044.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
4 (6.25 % of base) : 142042.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (6.25 % of base) : 142041.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (5.88 % of base) : 248525.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 267976.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 248528.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+UpgradeableReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 267979.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+UpgradeableReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 267981.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 248530.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
60 (5.79 % of base) : 858.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
24 (4.72 % of base) : 76960.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DecodeWellKnownAttribute(byref):this (FullOpts)
104 (4.48 % of base) : 115886.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
28 (4.24 % of base) : 109509.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Reader:TryTakeOldNodeOrToken(ubyte,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-32 (-20.00 % of base) : 77334.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-12 (-20.00 % of base) : 170195.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 170208.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 170194.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 170219.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-24 (-16.67 % of base) : 121113.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess:MakeRValue():Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess:this (FullOpts)
-20 (-14.29 % of base) : 77335.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 120793.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundCall:MakeRValue():Microsoft.CodeAnalysis.VisualBasic.BoundCall:this (FullOpts)
-12 (-12.50 % of base) : 152289.dasm - Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)
-8 (-12.50 % of base) : 170197.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-12.50 % of base) : 170201.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-12.50 % of base) : 170200.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-128 (-11.64 % of base) : 245568.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-8 (-11.11 % of base) : 3239.dasm - System.String:GetBytesFromEncoding(ulong,int,System.Text.Encoding):int:this (FullOpts)
-12 (-11.11 % of base) : 168599.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-16 (-10.81 % of base) : 184823.dasm - System.Data.ProviderBase.SchemaMapping:MappedIndex():this (FullOpts)
-8 (-10.53 % of base) : 314260.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.Nullable`1[int]]:TryUpdate(int,System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (FullOpts)
-8 (-10.53 % of base) : 314361.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.Nullable`1[int]]:TryUpdate(long,System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (FullOpts)
-24 (-10.34 % of base) : 239080.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-10.34 % of base) : 258961.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 312899776 (overridden on cmd)
Total bytes of diff: 312446532 (overridden on cmd)
Total bytes of delta: -453244 (-0.14 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
620 : 161021.dasm (4.62 % of base)
172 : 92745.dasm (1.60 % of base)
140 : 94024.dasm (3.23 % of base)
120 : 90888.dasm (1.25 % of base)
84 : 87735.dasm (0.80 % of base)
80 : 51138.dasm (0.75 % of base)
68 : 392214.dasm (1.26 % of base)
68 : 68629.dasm (0.62 % of base)
56 : 90965.dasm (0.34 % of base)
48 : 161018.dasm (0.28 % of base)
40 : 92749.dasm (0.88 % of base)
40 : 598527.dasm (0.42 % of base)
40 : 64093.dasm (0.95 % of base)
36 : 92278.dasm (0.33 % of base)
36 : 66126.dasm (0.19 % of base)
32 : 64284.dasm (0.30 % of base)
28 : 300971.dasm (0.51 % of base)
28 : 69214.dasm (0.37 % of base)
24 : 471075.dasm (0.89 % of base)
24 : 66758.dasm (0.34 % of base)
Top file improvements (bytes):
-1568 : 6412.dasm (-7.01 % of base)
-1096 : 233840.dasm (-5.39 % of base)
-1048 : 250073.dasm (-0.79 % of base)
-1048 : 254801.dasm (-0.81 % of base)
-936 : 384055.dasm (-8.25 % of base)
-884 : 6588.dasm (-6.60 % of base)
-684 : 6678.dasm (-3.85 % of base)
-636 : 73423.dasm (-3.20 % of base)
-496 : 108789.dasm (-4.16 % of base)
-496 : 111382.dasm (-4.16 % of base)
-456 : 428960.dasm (-9.11 % of base)
-456 : 429011.dasm (-8.96 % of base)
-456 : 429849.dasm (-9.11 % of base)
-456 : 429878.dasm (-8.96 % of base)
-408 : 377939.dasm (-4.89 % of base)
-392 : 414185.dasm (-2.95 % of base)
-376 : 142528.dasm (-5.71 % of base)
-348 : 24700.dasm (-1.96 % of base)
-348 : 62175.dasm (-3.67 % of base)
-348 : 80683.dasm (-3.65 % of base)
94 total files with Code Size differences (56 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
620 (4.62 % of base) : 161021.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
172 (1.60 % of base) : 92745.dasm - Microsoft.Interop.LibraryImportGenerator:CreateTargetDllImportAsLocalStatement(Microsoft.Interop.PInvokeStubCodeGenerator,Microsoft.Interop.LibraryImportGeneratorOptions,Microsoft.Interop.LibraryImportData,System.String,System.String):Microsoft.CodeAnalysis.CSharp.Syntax.LocalFunctionStatementSyntax (Tier1)
140 (3.23 % of base) : 94024.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (Tier1)
120 (1.25 % of base) : 90888.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
84 (0.80 % of base) : 87735.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
80 (0.75 % of base) : 51138.dasm - Microsoft.CodeAnalysis.SolutionCompilationState:AddDocumentsToMultipleProjects[System.__Canon](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.DocumentInfo],System.Func`3[System.__Canon,System.__Canon,System.__Canon],System.Func`3[System.__Canon,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon]]):Microsoft.CodeAnalysis.SolutionCompilationState:this (Tier1)
68 (1.26 % of base) : 392214.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
68 (0.62 % of base) : 68629.dasm - Microsoft.Interop.ContainingSyntaxContext:WrapMembersInContainingSyntaxWithUnsafeModifier(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax[]):Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax:this (Tier1)
56 (0.34 % of base) : 90965.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
48 (0.28 % of base) : 161018.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
40 (0.42 % of base) : 598527.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckValidNullableMethodOverride[System.__Canon](Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInReturnType`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.ReportMismatchInParameterType`1[System.__Canon],System.__Canon,ubyte):ubyte (Tier1)
40 (0.88 % of base) : 92749.dasm - Microsoft.Interop.MarshallingGeneratorExtensions:GenerateForwardingParameter(Microsoft.Interop.TypePositionInfo,System.String):Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax (Tier1)
40 (0.95 % of base) : 64093.dasm - Microsoft.Interop.SignatureContext+<get_StubParameters>d__14:MoveNext():ubyte:this (Tier1)
36 (0.19 % of base) : 66126.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindClassCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
36 (0.33 % of base) : 92278.dasm - Microsoft.Interop.ContainingSyntaxContext:WrapMemberInContainingSyntaxWithUnsafeModifier(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax:this (Tier1)
32 (0.30 % of base) : 64284.dasm - Microsoft.Interop.VariableDeclarations:GenerateDeclarationsForUnmanagedToManaged(Microsoft.Interop.BoundGenerators,Microsoft.Interop.StubCodeContext,ubyte):Microsoft.Interop.VariableDeclarations (Tier1)
28 (0.37 % of base) : 69214.dasm - Microsoft.Interop.MarshallingGeneratorExtensions:GenerateForwardingParameter(Microsoft.Interop.TypePositionInfo,System.String):Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax (Tier1)
28 (0.51 % of base) : 300971.dasm - System.Linq.Parallel.SortHelper`2[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.KeyValuePair`2[int,int]],System.Linq.Parallel.Pair`2[int,int]]:MergeSortCooperatively():this (Tier1)
24 (0.34 % of base) : 66758.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
24 (0.89 % of base) : 471075.dasm - System.Security.Cryptography.ECDiffieHellmanDerivation:DeriveKeyFromHmac(System.Security.Cryptography.ECDiffieHellmanPublicKey,System.Security.Cryptography.HashAlgorithmName,ubyte[],System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.ECDiffieHellmanDerivation+DeriveSecretAgreement):ubyte[] (Tier1)
Top method improvements (bytes):
-1568 (-7.01 % of base) : 6412.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnPinnedMarshalledTypes>d__2:MoveNext():ubyte:this (Tier0)
-1096 (-5.39 % of base) : 233840.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1048 (-0.81 % of base) : 254801.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (Instrumented Tier0)
-1048 (-0.79 % of base) : 250073.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (Instrumented Tier0)
-936 (-8.25 % of base) : 384055.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-884 (-6.60 % of base) : 6588.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnValueTypes>d__1:MoveNext():ubyte:this (Tier0)
-684 (-3.85 % of base) : 6678.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnCustomCollections>d__3:MoveNext():ubyte:this (Tier0)
-636 (-3.20 % of base) : 73423.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (Instrumented Tier0)
-496 (-4.16 % of base) : 108789.dasm - Microsoft.CodeAnalysis.CSharp.ForEachLoopBinder:BindForEachPartsWorker(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (Instrumented Tier0)
-496 (-4.16 % of base) : 111382.dasm - Microsoft.CodeAnalysis.CSharp.ForEachLoopBinder:BindForEachPartsWorker(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (Instrumented Tier0)
-456 (-9.11 % of base) : 428960.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-456 (-9.11 % of base) : 429849.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-456 (-8.96 % of base) : 429011.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-456 (-8.96 % of base) : 429878.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-408 (-4.89 % of base) : 377939.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
-392 (-2.95 % of base) : 414185.dasm - System.Reflection.Tests.PropertyTests:TestProperties_GetterSetter() (Instrumented Tier0)
-376 (-5.71 % of base) : 142528.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMemberAccessWithBoundLeft(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-348 (-1.96 % of base) : 24700.dasm - ComInterfaceGenerator.Unit.Tests.CompileFails+<CountParameterIsOutSnippets>d__19:MoveNext():ubyte:this (Tier0)
-348 (-3.67 % of base) : 62175.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this (Instrumented Tier0)
-348 (-3.65 % of base) : 80683.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this (Instrumented Tier0)
Top method regressions (percentages):
4 (6.67 % of base) : 610471.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
16 (6.67 % of base) : 605957.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
4 (5.88 % of base) : 66445.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (5.88 % of base) : 66450.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
16 (5.63 % of base) : 56031.dasm - Microsoft.CodeAnalysis.PEModule:HasRefSafetyRulesAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier1)
16 (5.63 % of base) : 90458.dasm - Microsoft.CodeAnalysis.PEModule:HasRefSafetyRulesAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier1)
4 (5.56 % of base) : 58890.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte:this (Tier1)
12 (5.26 % of base) : 350231.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (5.26 % of base) : 470769.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (5.26 % of base) : 466689.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (5.26 % of base) : 474644.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
620 (4.62 % of base) : 161021.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
16 (4.35 % of base) : 350280.dasm - System.Security.Cryptography.IncrementalHash:AppendData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
16 (4.35 % of base) : 466820.dasm - System.Security.Cryptography.IncrementalHash:AppendData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
12 (4.29 % of base) : 350281.dasm - System.Security.Cryptography.HMACCommon:AppendHashData(System.ReadOnlySpan`1[ubyte]):this (Tier1)
8 (4.00 % of base) : 55582.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:WithTypeAndModifiers(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
20 (3.85 % of base) : 353645.dasm - System.Security.Cryptography.IncrementalHash:TryGetHashAndReset(System.Span`1[ubyte],byref):ubyte:this (Tier1)
20 (3.60 % of base) : 608790.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitLabeledStatement(Microsoft.CodeAnalysis.CSharp.BoundLabeledStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
140 (3.23 % of base) : 94024.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMethodSymbolWithAttributes:DecodeDllImportAttribute(byref):this (Tier1)
16 (3.10 % of base) : 470768.dasm - System.Security.Cryptography.IncrementalHash:GetHashAndResetCore(System.Span`1[ubyte]):int:this (Tier1)
Top method improvements (percentages):
-108 (-30.68 % of base) : 37219.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-108 (-30.68 % of base) : 14379.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-29.73 % of base) : 47551.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-88 (-29.73 % of base) : 24998.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-29.27 % of base) : 138080.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-29.27 % of base) : 151304.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-27.91 % of base) : 163630.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-96 (-27.91 % of base) : 154990.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-80 (-27.40 % of base) : 47556.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:this (Instrumented Tier0)
-80 (-27.40 % of base) : 25011.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:this (Tier0)
-88 (-27.16 % of base) : 151387.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-27.16 % of base) : 138159.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-40 (-27.03 % of base) : 100887.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
-40 (-27.03 % of base) : 1141.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
-44 (-26.83 % of base) : 43213.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-44 (-26.83 % of base) : 20770.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-25.00 % of base) : 165258.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:this (Instrumented Tier0)
-32 (-25.00 % of base) : 34729.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Instrumented Tier0)
-32 (-25.00 % of base) : 148207.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Tier0)
-32 (-25.00 % of base) : 12481.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Tier0)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 160911076 (overridden on cmd)
Total bytes of diff: 160880100 (overridden on cmd)
Total bytes of delta: -30976 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
236 : 50488.dasm (1.91 % of base)
236 : 44774.dasm (1.91 % of base)
104 : 9248.dasm (0.89 % of base)
68 : 168696.dasm (1.50 % of base)
56 : 145699.dasm (0.46 % of base)
56 : 176496.dasm (3.27 % of base)
48 : 12395.dasm (0.80 % of base)
48 : 121827.dasm (2.09 % of base)
40 : 122620.dasm (1.78 % of base)
40 : 50143.dasm (0.69 % of base)
40 : 126219.dasm (3.00 % of base)
40 : 294311.dasm (1.33 % of base)
36 : 101983.dasm (0.62 % of base)
36 : 50486.dasm (0.90 % of base)
36 : 53953.dasm (0.64 % of base)
36 : 228644.dasm (4.19 % of base)
36 : 44763.dasm (0.90 % of base)
36 : 59146.dasm (0.12 % of base)
32 : 255536.dasm (2.67 % of base)
32 : 67168.dasm (4.12 % of base)
Top file improvements (bytes):
-392 : 41446.dasm (-9.65 % of base)
-220 : 10539.dasm (-2.25 % of base)
-208 : 254800.dasm (-3.34 % of base)
-140 : 32859.dasm (-6.01 % of base)
-128 : 10627.dasm (-3.74 % of base)
-112 : 151387.dasm (-6.68 % of base)
-112 : 10603.dasm (-2.16 % of base)
-104 : 1429.dasm (-2.96 % of base)
-104 : 16951.dasm (-2.91 % of base)
-104 : 18595.dasm (-2.96 % of base)
-104 : 1302.dasm (-2.96 % of base)
-104 : 1413.dasm (-2.96 % of base)
-104 : 16527.dasm (-2.96 % of base)
-104 : 17001.dasm (-2.91 % of base)
-100 : 15679.dasm (-2.84 % of base)
-100 : 15711.dasm (-2.84 % of base)
-100 : 16846.dasm (-2.79 % of base)
-100 : 16955.dasm (-2.79 % of base)
-100 : 121599.dasm (-2.33 % of base)
-100 : 25690.dasm (-2.84 % of base)
82 total files with Code Size differences (44 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
236 (1.91 % of base) : 50488.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
236 (1.91 % of base) : 44774.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
104 (0.89 % of base) : 9248.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
68 (1.50 % of base) : 168696.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
56 (0.46 % of base) : 145699.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
56 (3.27 % of base) : 176496.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
48 (0.80 % of base) : 12395.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
48 (2.09 % of base) : 121827.dasm - System.IO.Tests.FileStream_ctor_str_fm:FileModeAppendExisting(System.String):this (FullOpts)
40 (0.69 % of base) : 50143.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
40 (3.00 % of base) : 126219.dasm - System.IO.Packaging.Tests.Tests:OpenPropertyStream():this (FullOpts)
40 (1.78 % of base) : 122620.dasm - System.IO.Tests.FileStream_ctor_str_fm:FileModeAppendExisting(System.String):this (FullOpts)
40 (1.33 % of base) : 294311.dasm - System.Threading.Tasks.Dataflow.Tests.ActionBlockTests+<TestBasicMessageProcessing>d__5:MoveNext():this (FullOpts)
36 (0.62 % of base) : 101983.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.dlgateEvent.dlgate.dlgate001.dlgate001.nms.Start:MainMethod():int (FullOpts)
36 (0.64 % of base) : 53953.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
36 (0.90 % of base) : 50486.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`11[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
36 (0.90 % of base) : 44763.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`11[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
36 (0.12 % of base) : 59146.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
36 (4.19 % of base) : 228644.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
32 (4.12 % of base) : 67168.dasm - System.Collections.Tests.TestBase`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]:CreateHashSet(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]],int,int):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]:this (FullOpts)
32 (2.67 % of base) : 255536.dasm - System.Text.Json.Serialization.Tests.StreamTests+<PerformSerialization>d__6`2[System.Collections.Generic.KeyValuePair`2[System.Text.Json.Serialization.Tests.StreamTests+ImmutableStructWithStrings,System.Text.Json.Serialization.Tests.StreamTests+ImmutableStructWithStrings],System.Text.Json.Serialization.Tests.StreamTests+ImmutableStructWithStrings]:MoveNext():this (FullOpts)
Top method improvements (bytes):
-392 (-9.65 % of base) : 41446.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-220 (-2.25 % of base) : 10539.dasm - Microsoft.CodeAnalysis.Testing.AnalyzerTest`1[System.__Canon]:VerifyDiagnosticResults(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.Project,Microsoft.CodeAnalysis.Diagnostic]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Testing.DiagnosticResult[],Microsoft.CodeAnalysis.Testing.IVerifier):this (MinOpts)
-208 (-3.34 % of base) : 254800.dasm - System.Text.Json.Nodes.Tests.ParentPathRootTests:GetPathAndRoot() (FullOpts)
-140 (-6.01 % of base) : 32859.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-128 (-3.74 % of base) : 10627.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:MatchRecursive[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]],byref,byref,double,int,int,ubyte[],double[],ubyte,System.Threading.CancellationToken) (MinOpts)
-112 (-2.16 % of base) : 10603.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:Match[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.TimeSpan):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]] (MinOpts)
-112 (-6.68 % of base) : 151387.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-104 (-2.96 % of base) : 18595.dasm - Xunit.Assert:Equal[double](double,double,System.Collections.Generic.IEqualityComparer`1[double]) (FullOpts)
-104 (-2.96 % of base) : 1429.dasm - Xunit.Assert:Equal[float](float,float,System.Collections.Generic.IEqualityComparer`1[float]) (FullOpts)
-104 (-2.96 % of base) : 1302.dasm - Xunit.Assert:Equal[int](int,int,System.Collections.Generic.IEqualityComparer`1[int]) (FullOpts)
-104 (-2.96 % of base) : 16527.dasm - Xunit.Assert:Equal[long](long,long,System.Collections.Generic.IEqualityComparer`1[long]) (FullOpts)
-104 (-2.96 % of base) : 1413.dasm - Xunit.Assert:Equal[System.Drawing.Point](System.Drawing.Point,System.Drawing.Point,System.Collections.Generic.IEqualityComparer`1[System.Drawing.Point]) (FullOpts)
-104 (-2.91 % of base) : 17001.dasm - Xunit.Assert:Equal[uint](uint,uint,System.Collections.Generic.IEqualityComparer`1[uint]) (FullOpts)
-104 (-2.91 % of base) : 16951.dasm - Xunit.Assert:Equal[ulong](ulong,ulong,System.Collections.Generic.IEqualityComparer`1[ulong]) (FullOpts)
-100 (-2.33 % of base) : 121599.dasm - System.IO.Compression.Tests.ZipFile_Open+<UpdateAddFile>d__7:MoveNext():this (FullOpts)
-100 (-2.84 % of base) : 15711.dasm - Xunit.Assert:Equal[byte](byte,byte,System.Collections.Generic.IEqualityComparer`1[byte]) (FullOpts)
-100 (-2.84 % of base) : 25690.dasm - Xunit.Assert:Equal[short](short,short,System.Collections.Generic.IEqualityComparer`1[short]) (FullOpts)
-100 (-2.84 % of base) : 15679.dasm - Xunit.Assert:Equal[ubyte](ubyte,ubyte,System.Collections.Generic.IEqualityComparer`1[ubyte]) (FullOpts)
-100 (-2.79 % of base) : 16955.dasm - Xunit.Assert:Equal[ubyte](ubyte,ubyte,System.Collections.Generic.IEqualityComparer`1[ubyte]) (FullOpts)
-100 (-2.79 % of base) : 16846.dasm - Xunit.Assert:Equal[ushort](ushort,ushort,System.Collections.Generic.IEqualityComparer`1[ushort]) (FullOpts)
Top method regressions (percentages):
8 (10.00 % of base) : 259383.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
8 (7.69 % of base) : 259332.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
16 (6.67 % of base) : 56228.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
20 (6.49 % of base) : 14996.dasm - Microsoft.CodeAnalysis.Formatting.TokenStream+Changes:AddOrReplace(int,Microsoft.CodeAnalysis.Formatting.TriviaData):this (FullOpts)
12 (6.38 % of base) : 85019.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
12 (6.38 % of base) : 85443.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
4 (6.25 % of base) : 121557.dasm - System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
28 (4.24 % of base) : 277288.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Reader:TryTakeOldNodeOrToken(ubyte,byref):ubyte:this (FullOpts)
36 (4.19 % of base) : 228644.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
32 (4.12 % of base) : 67168.dasm - System.Collections.Tests.TestBase`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]:CreateHashSet(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]],int,int):System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.Collections.Frozen.Tests.SimpleNonComparableStruct,System.Collections.Frozen.Tests.SimpleNonComparableStruct]]:this (FullOpts)
8 (3.92 % of base) : 56235.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
12 (3.90 % of base) : 23902.dasm - System.Security.Cryptography.HashProviderDispenser+AppleHmacProvider:FinalizeHashAndReset(System.Span`1[ubyte]):int:this (FullOpts)
4 (3.85 % of base) : 12899.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
12 (3.53 % of base) : 253320.dasm - System.Text.Json.Serialization.Tests.ReadValueTests+<>c__DisplayClass21_0:<TooMuchJson>b__0():System.Object:this (FullOpts)
12 (3.53 % of base) : 254727.dasm - System.Text.Json.Serialization.Tests.ValueTests+<>c__DisplayClass27_0:<TimeSpan_Read_Failure>b__0():System.Object:this (FullOpts)
12 (3.53 % of base) : 254556.dasm - System.Text.Json.Serialization.Tests.ValueTests+<>c__DisplayClass34_0:<TimeOnly_Read_Failure>b__0():System.Object:this (FullOpts)
12 (3.53 % of base) : 254599.dasm - System.Text.Json.Serialization.Tests.ValueTests+<>c__DisplayClass9_0:<ValueFail>b__12():System.Object:this (FullOpts)
12 (3.53 % of base) : 254604.dasm - System.Text.Json.Serialization.Tests.ValueTests+<>c__DisplayClass9_0:<ValueFail>b__16():System.Object:this (FullOpts)
12 (3.53 % of base) : 254619.dasm - System.Text.Json.Serialization.Tests.ValueTests+<>c__DisplayClass9_0:<ValueFail>b__22():System.Object:this (FullOpts)
12 (3.53 % of base) : 254643.dasm - System.Text.Json.Serialization.Tests.ValueTests+<>c__DisplayClass9_0:<ValueFail>b__26():System.Object:this (FullOpts)
Top method improvements (percentages):
-32 (-27.59 % of base) : 114464.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
-12 (-16.67 % of base) : 260128.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-12 (-16.67 % of base) : 258495.dasm - System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-12 (-16.67 % of base) : 259683.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-28 (-16.67 % of base) : 263246.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__0():System.Object:this (FullOpts)
-28 (-16.67 % of base) : 263250.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__3():System.Object:this (FullOpts)
-20 (-15.15 % of base) : 217844.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_TrailingWhitespaceAfterPosteb():this (FullOpts)
-24 (-15.00 % of base) : 263464.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass86_0:<CheckUnparsable>b__0():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 260080.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass87_0:<CheckParseDepth>b__0():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 263248.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__1():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 263249.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__2():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 263311.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass94_0:<TrailingCommas>b__0():System.Object:this (FullOpts)
-20 (-14.71 % of base) : 217796.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_IncompletePreebPrefixed():this (FullOpts)
-20 (-14.71 % of base) : 217834.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_PrecedingContentAndWhitespaceBeforePreeb():this (FullOpts)
-20 (-14.29 % of base) : 46162.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 52386.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 217833.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_Base64SurroundingWhiteSpaceStripped():this (FullOpts)
-20 (-14.29 % of base) : 217848.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_LabelCharacterBoundaries():this (FullOpts)
-16 (-14.29 % of base) : 223386.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__2():this (FullOpts)
-32 (-13.79 % of base) : 40588.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,int]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,int,System.Exception):this (FullOpts)
realworld.run.osx.arm64.checked.mch
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15072368 (overridden on cmd)
Total bytes of diff: 15064036 (overridden on cmd)
Total bytes of delta: -8332 (-0.06 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
152 : 2500.dasm (1.94 % of base)
140 : 6536.dasm (0.13 % of base)
112 : 18858.dasm (1.00 % of base)
60 : 906.dasm (5.79 % of base)
48 : 21499.dasm (0.80 % of base)
36 : 17801.dasm (0.64 % of base)
24 : 16767.dasm (1.11 % of base)
20 : 23210.dasm (4.00 % of base)
16 : 25172.dasm (6.90 % of base)
16 : 5502.dasm (1.95 % of base)
16 : 18685.dasm (0.76 % of base)
16 : 1033.dasm (12.50 % of base)
16 : 19061.dasm (1.16 % of base)
16 : 23767.dasm (0.26 % of base)
12 : 22220.dasm (0.13 % of base)
12 : 853.dasm (0.96 % of base)
12 : 18793.dasm (0.31 % of base)
12 : 16202.dasm (0.30 % of base)
12 : 19903.dasm (0.18 % of base)
12 : 21280.dasm (2.38 % of base)
Top file improvements (bytes):
-4452 : 4586.dasm (-2.19 % of base)
-152 : 29811.dasm (-1.09 % of base)
-140 : 1783.dasm (-6.01 % of base)
-112 : 1657.dasm (-18.30 % of base)
-84 : 4553.dasm (-0.32 % of base)
-72 : 1192.dasm (-15.52 % of base)
-64 : 26758.dasm (-7.41 % of base)
-64 : 19218.dasm (-9.70 % of base)
-64 : 8173.dasm (-0.38 % of base)
-56 : 14159.dasm (-0.17 % of base)
-48 : 12776.dasm (-7.74 % of base)
-48 : 1455.dasm (-4.43 % of base)
-48 : 20483.dasm (-1.89 % of base)
-48 : 9538.dasm (-2.71 % of base)
-48 : 23878.dasm (-0.44 % of base)
-44 : 21220.dasm (-1.61 % of base)
-44 : 16492.dasm (-1.70 % of base)
-44 : 9248.dasm (-1.46 % of base)
-40 : 22273.dasm (-1.19 % of base)
-40 : 9152.dasm (-0.62 % of base)
72 total files with Code Size differences (40 improved, 32 regressed), 20 unchanged.
Top method regressions (bytes):
152 (1.94 % of base) : 2500.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
140 (0.13 % of base) : 6536.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
112 (1.00 % of base) : 18858.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
60 (5.79 % of base) : 906.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
48 (0.80 % of base) : 21499.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
36 (0.64 % of base) : 17801.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
24 (1.11 % of base) : 16767.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
20 (4.00 % of base) : 23210.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitDoStatement(Microsoft.CodeAnalysis.CSharp.BoundDoStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
16 (1.95 % of base) : 5502.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
16 (6.90 % of base) : 25172.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (0.26 % of base) : 23767.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitSwitchExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,ubyte):this (FullOpts)
16 (1.16 % of base) : 19061.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,ubyte,int):ubyte (FullOpts)
16 (0.76 % of base) : 18685.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CreateAccessorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol,uint,Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol (FullOpts)
16 (12.50 % of base) : 1033.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
12 (0.13 % of base) : 22220.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
12 (0.18 % of base) : 19903.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
12 (0.30 % of base) : 16202.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (FullOpts)
12 (2.38 % of base) : 21280.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
12 (0.31 % of base) : 18793.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (0.96 % of base) : 853.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
Top method improvements (bytes):
-4452 (-2.19 % of base) : 4586.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:hwTokenFetch(ubyte):FSharp.Compiler.Parser+token:this (Tier0-MinOpts)
-152 (-1.09 % of base) : 29811.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-140 (-6.01 % of base) : 1783.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-112 (-18.30 % of base) : 1657.dasm - DemoBenchmarks.FourBodyConstraintBenchmarks:VolumeConstraint():System.ValueTuple`4[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-84 (-0.32 % of base) : 4553.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-72 (-15.52 % of base) : 1192.dasm - DemoBenchmarks.ThreeBodyConstraintBenchmarks:AreaConstraint():System.ValueTuple`3[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-64 (-0.38 % of base) : 8173.dasm - FSharp.Compiler.CheckExpressions:TcPat(FSharp.Compiler.NameResolution+WarnOnUpperFlag,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PartialValReprInfo],FSharp.Compiler.TypedTree+ValInline,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+ArgAndRetAttribs,ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],ubyte,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Syntax.SynPat):System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+TcPatPhase2Input,FSharp.Compiler.PatternMatchCompilation+Pattern],System.Tuple`3[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String]]] (FullOpts)
-64 (-9.70 % of base) : 19218.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 26758.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-56 (-0.17 % of base) : 14159.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-48 (-4.43 % of base) : 1455.dasm - BepuPhysics.Solver`1[DemoBenchmarks.ShapePileBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
-48 (-2.71 % of base) : 9538.dasm - FSharp.Compiler.CheckExpressions:analyzeRecursiveDeclPat@11316(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.Syntax.SynValTyparDecls,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.SynValInfo,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.CheckExpressions+OverridesOK,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+MemberOrValContainerInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+NormalizedBindingRhs,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynPat):System.Tuple`8[FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PreValMemberInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],System.Tuple`6[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+NormalizedBindingRhs,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar]]] (FullOpts)
-48 (-0.44 % of base) : 23878.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-48 (-1.89 % of base) : 20483.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-48 (-7.74 % of base) : 12776.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-44 (-1.46 % of base) : 9248.dasm - FSharp.Compiler.CheckExpressions:TcValSpec(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.CheckExpressions+ImplicitlyBoundTyparsAllowed,FSharp.Compiler.CheckExpressions+ContainerInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynValSig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+ValSpecResult],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-44 (-1.70 % of base) : 16492.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-44 (-1.61 % of base) : 21220.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](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.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (FullOpts)
-40 (-0.62 % of base) : 9152.dasm - FSharp.Compiler.CheckExpressions:TcAttributeEx(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,int,int,FSharp.Compiler.Syntax.SynAttribute):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte] (FullOpts)
-40 (-1.19 % of base) : 22273.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitCompoundAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method regressions (percentages):
16 (12.50 % of base) : 1033.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
16 (6.90 % of base) : 25172.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
60 (5.79 % of base) : 906.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
20 (4.00 % of base) : 23210.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitDoStatement(Microsoft.CodeAnalysis.CSharp.BoundDoStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
8 (3.92 % of base) : 25412.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
4 (3.85 % of base) : 19360.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
4 (2.94 % of base) : 25480.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedMethodBaseSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
12 (2.38 % of base) : 21280.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
16 (1.95 % of base) : 5502.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
152 (1.94 % of base) : 2500.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
4 (1.82 % of base) : 5439.dasm - FSharp.Compiler.Xml.XmlDocCollector:LinesRange(FSharp.Compiler.Text.Position):FSharp.Compiler.Text.Range:this (FullOpts)
8 (1.50 % of base) : 24291.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):this (FullOpts)
8 (1.37 % of base) : 24072.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeExplicitParameterTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,byref):ubyte:this (FullOpts)
4 (1.37 % of base) : 19468.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.33 % of base) : 20066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedPropertySymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.30 % of base) : 20149.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedFieldSymbol:GetFieldType(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.27 % of base) : 26386.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
8 (1.25 % of base) : 30971.dasm - Microsoft.ApplicationInsights.Metrics.MetricSeriesConfigurationForMeasurement:.cctor() (FullOpts)
16 (1.16 % of base) : 19061.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,ubyte,int):ubyte (FullOpts)
4 (1.12 % of base) : 20817.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<BindQualifiedName>g__convertToUnboundGenericType|1031_0(byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations (FullOpts)
Top method improvements (percentages):
-112 (-18.30 % of base) : 1657.dasm - DemoBenchmarks.FourBodyConstraintBenchmarks:VolumeConstraint():System.ValueTuple`4[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-12 (-15.79 % of base) : 13018.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
-72 (-15.52 % of base) : 1192.dasm - DemoBenchmarks.ThreeBodyConstraintBenchmarks:AreaConstraint():System.ValueTuple`3[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-20 (-14.29 % of base) : 24234.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-16 (-11.76 % of base) : 14014.dasm - Microsoft.ML.Trainers.KMeansAcceleratedRowMap+<>c__DisplayClass4_0:<.ctor>b__2(Microsoft.ML.Trainers.FeatureFloatVectorCursor):int:this (FullOpts)
-64 (-9.70 % of base) : 19218.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-12 (-9.38 % of base) : 13511.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
-8 (-9.09 % of base) : 3063.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:set_Item(int,System.__Canon):this (FullOpts)
-8 (-8.33 % of base) : 30246.dasm - System.Management.Automation.Interpreter.LoadCachedObjectInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-48 (-7.74 % of base) : 12776.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-64 (-7.41 % of base) : 26758.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-12 (-6.67 % of base) : 22025.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass231_0:<VisitArguments>b__3(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]:this (FullOpts)
-16 (-6.67 % of base) : 14031.dasm - Microsoft.ML.Trainers.KMeansLloydsYinYangTrain+<>c__DisplayClass4_2:<Train>b__1():this (FullOpts)
-12 (-6.67 % of base) : 13711.dasm - Microsoft.ML.Transforms.Text.NgramExtractingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[]):this (FullOpts)
-12 (-6.25 % of base) : 12707.dasm - Microsoft.ML.Internal.Utilities.HashArray`1[float]:.ctor():this (FullOpts)
-8 (-6.06 % of base) : 2375.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-140 (-6.01 % of base) : 1783.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-4 (-5.88 % of base) : 13391.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[double,double]:CopyOut(int,byref):this (FullOpts)
-4 (-5.88 % of base) : 13393.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[System.__Canon,Microsoft.ML.Data.VBuffer`1[double]]:CopyOut(int,byref):this (FullOpts)
-12 (-5.77 % of base) : 13514.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,int,Microsoft.ML.Transforms.Text.WordEmbeddingEstimator+ColumnOptions[]):this (FullOpts)
Diffs are based on 2,318,205 contexts (931,543 MinOpts, 1,386,662 FullOpts).
MISSED contexts: base: 2,687 (0.12%), diff: 2,689 (0.12%)
Overall (-780,956 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch
10,961,236
-2,460
benchmarks.run_pgo.windows.arm64.checked.mch
47,394,624
-42,728
benchmarks.run_tiered.windows.arm64.checked.mch
15,343,840
-13,924
coreclr_tests.run.windows.arm64.checked.mch
495,372,096
-228,492
libraries.crossgen2.windows.arm64.checked.mch
58,964,780
-11,900
libraries.pmi.windows.arm64.checked.mch
79,594,724
-11,288
libraries_tests.run.windows.arm64.Release.mch
310,503,812
-429,744
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
169,134,348
-31,556
realworld.run.windows.arm64.checked.mch
15,891,116
-8,524
smoke_tests.nativeaot.windows.arm64.checked.mch
3,973,164
-340
MinOpts (-643,252 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch
16,250,384
-39,960
benchmarks.run_tiered.windows.arm64.checked.mch
11,189,376
-13,432
coreclr_tests.run.windows.arm64.checked.mch
339,091,528
-180,424
libraries_tests.run.windows.arm64.Release.mch
201,581,504
-403,976
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
13,137,464
-1,016
realworld.run.windows.arm64.checked.mch
568,424
-4,444
FullOpts (-137,704 bytes)
Collection
Base size (bytes)
Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch
10,960,700
-2,460
benchmarks.run_pgo.windows.arm64.checked.mch
31,144,240
-2,768
benchmarks.run_tiered.windows.arm64.checked.mch
4,154,464
-492
coreclr_tests.run.windows.arm64.checked.mch
156,280,568
-48,068
libraries.crossgen2.windows.arm64.checked.mch
58,963,144
-11,900
libraries.pmi.windows.arm64.checked.mch
79,474,740
-11,288
libraries_tests.run.windows.arm64.Release.mch
108,922,308
-25,768
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
155,996,884
-30,540
realworld.run.windows.arm64.checked.mch
15,322,692
-4,080
smoke_tests.nativeaot.windows.arm64.checked.mch
3,972,192
-340
Example diffs
benchmarks.run.windows.arm64.checked.mch
-20 (-14.29%) : 19197.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 13, 13 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T03] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,12 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp18 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T00] ( 11, 22 ) ref -> x4 single-def "argument with side effect"
-; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V25 tmp21 [V25,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V26 tmp22 [V26,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V27 tmp23 [V27,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V28 tmp24 [V28,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V29 tmp25 [V29,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V30 tmp26 [V30,T12] ( 2, 4 ) int -> x8 "argument with side effect"
-; V31 tmp27 [V31,T13] ( 2, 4 ) int -> x9 "argument with side effect"
-; V32 tmp28 [V32,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V23 tmp19 [V23,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V25 tmp21 [V25,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V26 tmp22 [V26,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V27 tmp23 [V27,T09] ( 2, 4 ) int -> x8 "argument with side effect"
+; V28 tmp24 [V28,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -51,37 +47,30 @@ G_M55914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M55914_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs +[x0-x3]
- mov x4, x0
- ; gcrRegs +[x4]
- ldp x5, x6, [x4, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x4, #0x30]
- ldrb w8, [x4, #0x31]
- ldrb w9, [x4, #0x32]
- ldr x10, [x4, #0x50]
- ; gcrRegs +[x10]
- ;; size=24 bbWeight=1 PerfScore 16.50
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=20 bbWeight=1 PerfScore 16.00
G_M55914_IG03: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x4, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x4, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M55914_IG04: ; bbWeight=1, extend
- ldrb w11, [x4, #0x33]
- str w11, [sp, #0x18] // [V04 OutArgs+0x18]
- ldr x11, [x4, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V04 OutArgs+0x20]
- ldr x4, [x4, #0x18]
- str x4, [sp, #0x28] // [V04 OutArgs+0x28]
- mov x4, x5
- mov x5, x6
- mov w6, w7
- ; gcrRegs -[x6]
- mov w7, w8
- str w9, [sp] // [V04 OutArgs]
- str x10, [sp, #0x08] // [V04 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ str w10, [sp, #0x18] // [V04 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V04 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V04 OutArgs+0x28]
+ str w8, [sp] // [V04 OutArgs]
+ str x9, [sp, #0x08] // [V04 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp18]
str x8, [sp, #0x10] // [V04 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -89,15 +78,15 @@ G_M55914_IG04: ; bbWeight=1, extend
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x10-x11]
- ;; size=76 bbWeight=1 PerfScore 23.00
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M55914_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 140, prolog size 12, PerfScore 53.00, instruction count 35, allocated bytes for code 140 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 50.50, instruction count 30, allocated bytes for code 120 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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)
-16 (-14.29%) : 9724.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
@@ -8,79 +8,73 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Buffers.Text.Tests.Utf8FormatterTests>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
-; V02 loc0 [V02 ] ( 1, 1 ) int -> [fp+0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V02 loc0 [V02 ] ( 1, 1 ) int -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op
;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Buffers.StandardFormat>
;# 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 "impAppendStmt" <System.Span`1[ubyte]>
-; V06 tmp2 [V06,T02] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-; V08 tmp4 [V08,T05] ( 2, 2 ) short -> x1 single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V09 tmp5 [V09,T06] ( 2, 2 ) long -> x2 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
-;* V10 tmp6 [V10,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
-;* V11 tmp7 [V11,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
+; V06 tmp2 [V06,T00] ( 4, 6 ) ref -> x5 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V08 tmp4 [V08,T03] ( 2, 2 ) short -> x1 single-def "field V01._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V09 tmp5 [V09,T04] ( 2, 2 ) long -> x4 single-def "field V01._dateTime (fldOffset=0x8)" P-INDEP
+;* V10 tmp6 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._format (fldOffset=0x0)" P-INDEP
+;* V11 tmp7 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._precision (fldOffset=0x1)" P-INDEP
;* V12 tmp8 [V12 ] ( 0, 0 ) byref -> zero-ref single-def "field V05._reference (fldOffset=0x0)" P-INDEP
;* V13 tmp9 [V13 ] ( 0, 0 ) int -> zero-ref single-def "field V05._length (fldOffset=0x8)" P-INDEP
-; V14 tmp10 [V14,T07] ( 3, 2 ) byref -> x3 "field V07._reference (fldOffset=0x0)" P-INDEP
-; V15 tmp11 [V15,T08] ( 3, 2 ) int -> x5 "field V07._length (fldOffset=0x8)" P-INDEP
-; V16 tmp12 [V16,T03] ( 3, 6 ) struct ( 8) [fp+0x30] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
-; V17 tmp13 [V17,T00] ( 4, 8 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
-; V18 tmp14 [V18,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
+; V14 tmp10 [V14,T05] ( 3, 2 ) byref -> x2 "field V07._reference (fldOffset=0x0)" P-INDEP
+; V15 tmp11 [V15,T06] ( 3, 2 ) int -> x3 "field V07._length (fldOffset=0x8)" P-INDEP
+; V16 tmp12 [V16,T01] ( 3, 6 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Buffers.StandardFormat>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M7377_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x38] // [V02 loc0]
- stp xzr, xzr, [fp, #0x10] // [V18 tmp14], [V18 tmp14+0x08]
- ;; size=16 bbWeight=1 PerfScore 3.50
+ str xzr, [fp, #0x18] // [V02 loc0]
+ mov x4, x2
+ ;; size=16 bbWeight=1 PerfScore 3.00
G_M7377_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
- cbnz x0, G_M7377_IG04
+ ldr x5, [x0, #0x08]
+ ; gcrRegs +[x5]
+ cbnz x5, G_M7377_IG04
;; size=8 bbWeight=1 PerfScore 4.00
G_M7377_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x3, xzr
- ; byrRegs +[x3]
- mov w5, wzr
+ ; gcrRegs -[x0 x5]
+ mov x2, xzr
+ ; byrRegs +[x2]
+ mov w3, wzr
b G_M7377_IG05
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x3]
- add x3, x0, #16
- ; byrRegs +[x3]
- ldr w5, [x0, #0x08]
+G_M7377_IG04: ; bbWeight=0.50, gcrefRegs=0020 {x5}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x5]
+ ; byrRegs -[x2]
+ add x2, x5, #16
+ ; byrRegs +[x2]
+ ldr w3, [x5, #0x08]
;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {x3}, byref
- ; gcrRegs -[x0]
- strh w1, [fp, #0x20] // [V17 tmp13]
- str x2, [fp, #0x28] // [V17 tmp13+0x08]
- str x3, [fp, #0x10] // [V18 tmp14]
- str w5, [fp, #0x18] // [V18 tmp14+0x08]
- strb wzr, [fp, #0x30] // [V16 tmp12]
- strb wzr, [fp, #0x31] // [V16 tmp12+0x01]
- ldp x0, x1, [fp, #0x20] // [V17 tmp13], [V17 tmp13+0x08]
- ldp x2, x3, [fp, #0x10] // [V18 tmp14], [V18 tmp14+0x08]
- ; byrRegs -[x3] +[x2]
- ldrh w5, [fp, #0x30] // [V16 tmp12]
- add x4, fp, #56 // [V02 loc0]
+G_M7377_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0004 {x2}, byref
+ ; gcrRegs -[x5]
+ strb wzr, [fp, #0x10] // [V16 tmp12]
+ strb wzr, [fp, #0x11] // [V16 tmp12+0x01]
+ ldrh w5, [fp, #0x10] // [V16 tmp12]
+ mov w0, w1
+ mov x1, x4
+ add x4, fp, #24 // [V02 loc0]
movz x6, #0xD1FFAB1E // code for <unknown method>
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
blr x6
; byrRegs -[x2]
- ;; size=60 bbWeight=1 PerfScore 20.00
+ ;; size=44 bbWeight=1 PerfScore 11.00
G_M7377_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 112, prolog size 16, PerfScore 32.25, instruction count 28, allocated bytes for code 112 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 12, PerfScore 22.75, instruction count 24, allocated bytes for code 96 (MethodHash=d298e32e) for method System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +85,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -99,7 +93,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-16 (-13.33%) : 23614.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
@@ -8,63 +8,57 @@
; 0 inlinees with PGO data; 1 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Span.IndexerBench>
+; V00 this [V00,T02] ( 3, 3 ) ref -> x0 this class-hnd single-def <Span.IndexerBench>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
-; V03 tmp2 [V03,T01] ( 4, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <ubyte[]>
-;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+; V03 tmp2 [V03,T00] ( 4, 6 ) ref -> x2 class-hnd single-def "Inlining Arg" <ubyte[]>
+;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
-; V07 tmp6 [V07,T06] ( 3, 2 ) byref -> x1 "field V04._reference (fldOffset=0x0)" P-INDEP
-; V08 tmp7 [V08,T07] ( 3, 2 ) int -> x2 "field V04._length (fldOffset=0x8)" P-INDEP
-; V09 tmp8 [V09,T02] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V10 tmp9 [V10,T00] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V11 tmp10 [V11,T05] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
-; V12 cse0 [V12,T04] ( 4, 4 ) ref -> x4 "CSE - aggressive"
+; V07 tmp6 [V07,T05] ( 3, 2 ) byref -> x0 "field V04._reference (fldOffset=0x0)" P-INDEP
+; V08 tmp7 [V08,T06] ( 3, 2 ) int -> x1 "field V04._length (fldOffset=0x8)" P-INDEP
+; V09 tmp8 [V09,T01] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V10 tmp9 [V10,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
+; V11 cse0 [V11,T03] ( 4, 4 ) ref -> x4 "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 0
G_M29415_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- str xzr, [fp, #0x10] // [V10 tmp9]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M29415_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
ldr x4, [x0, #0x08]
; gcrRegs +[x4]
- mov x0, x4
- cbnz x0, G_M29415_IG04
+ mov x2, x4
+ ; gcrRegs +[x2]
+ cbnz x2, G_M29415_IG04
;; size=12 bbWeight=1 PerfScore 4.50
G_M29415_IG03: ; bbWeight=0.50, gcrefRegs=0010 {x4}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x1, xzr
- ; byrRegs +[x1]
- mov w2, wzr
+ ; gcrRegs -[x0 x2]
+ mov x0, xzr
+ ; byrRegs +[x0]
+ mov w1, wzr
b G_M29415_IG05
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0011 {x0 x4}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0]
- ; byrRegs -[x1]
- add x1, x0, #16
- ; byrRegs +[x1]
- ldr w2, [x0, #0x08]
- ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, byref, isz
- ; gcrRegs -[x0]
- str x1, [fp, #0x10] // [V10 tmp9]
- str w2, [fp, #0x18] // [V10 tmp9+0x08]
- mov x0, x4
- ; gcrRegs +[x0]
- ldr w1, [x0, #0x08]
- ; byrRegs -[x1]
- cmp w1, #0
- bls G_M29415_IG07
- add x2, x0, #16
- ; byrRegs +[x2]
- ldp x0, x1, [fp, #0x10] // [V10 tmp9], [V10 tmp9+0x08]
- ; gcrRegs -[x0]
+G_M29415_IG04: ; bbWeight=0.50, gcrefRegs=0014 {x2 x4}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2]
+ ; byrRegs -[x0]
+ add x0, x2, #16
; byrRegs +[x0]
+ ldr w1, [x2, #0x08]
+ ;; size=8 bbWeight=0.50 PerfScore 1.75
+G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0001 {x0}, byref, isz
+ ; gcrRegs -[x2]
+ mov x2, x4
+ ; gcrRegs +[x2]
+ ldr w3, [x2, #0x08]
+ cmp w3, #0
+ bls G_M29415_IG07
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
ldr w4, [x4, #0x08]
; gcrRegs -[x4]
mov w3, wzr
@@ -74,9 +68,9 @@ G_M29415_IG05: ; bbWeight=1, gcrefRegs=0010 {x4}, byrefRegs=0002 {x1}, by
ldr x5, [x5]
blr x5
; byrRegs -[x0 x2]
- ;; size=60 bbWeight=1 PerfScore 19.50
+ ;; size=48 bbWeight=1 PerfScore 14.50
G_M29415_IG06: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -84,7 +78,7 @@ G_M29415_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 120, prolog size 12, PerfScore 31.25, instruction count 30, allocated bytes for code 120 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
+; Total bytes of code 104, prolog size 8, PerfScore 25.25, instruction count 26, allocated bytes for code 104 (MethodHash=cb7c8d18) for method Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -95,7 +89,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 30 (0x0001e) Actual length = 120 (0x000078)
+ Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -103,7 +97,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+8 (+1.56%) : 7917.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
+; V00 this [V00,T04] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T22] ( 5, 4 ) byref -> [fp+0x10] EH-live single-def
+; V02 arg2 [V02,T22] ( 5, 4 ) byref -> [fp+0x18] EH-live single-def
; V03 arg3 [V03,T19] ( 3, 10 ) int -> x21 single-def
-; V04 arg4 [V04,T09] ( 6, 32 ) byref -> x20 single-def
+; V04 arg4 [V04,T08] ( 6, 32 ) byref -> x20 single-def
; V05 arg5 [V05,T23] ( 3, 4 ) byref -> x23 single-def
-; V06 loc0 [V06,T10] ( 8, 28 ) int -> [fp+0x24] do-not-enreg[Z] EH-live
-; V07 loc1 [V07,T15] ( 3, 20 ) ubyte -> x25
+; V06 loc0 [V06,T10] ( 7, 24 ) int -> [fp+0x2C] do-not-enreg[Z] EH-live
+; V07 loc1 [V07,T14] ( 3, 20 ) ubyte -> x25
;* V08 loc2 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc3 [V09,T28] ( 3, 2 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 4, 24 ) int -> x2 "Inline return value spill temp"
-; V12 tmp2 [V12,T08] ( 3, 36 ) int -> x0 "Inlining Arg"
+; V11 tmp1 [V11,T11] ( 4, 24 ) int -> x2 "Inline return value spill temp"
+; V12 tmp2 [V12,T07] ( 3, 36 ) int -> x0 "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V14 tmp4 [V14,T25] ( 3, 6 ) int -> x2 "Inline return value spill temp"
; V15 tmp5 [V15,T18] ( 3, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V16 tmp6 [V16,T24] ( 3, 6 ) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V16 tmp6 [V16,T24] ( 3, 6 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T16] ( 4, 16 ) int -> x2 "Inlining Arg"
; V18 tmp8 [V18,T17] ( 3, 14 ) ubyte -> x25 "Inline return value spill temp"
-; V19 tmp9 [V19,T11] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
-; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x1 "Inline stloc first use temp"
-; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V19 tmp9 [V19,T09] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
+; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x5 "Inline stloc first use temp"
+; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V24 tmp14 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -39,30 +39,31 @@
; V28 tmp18 [V28,T20] ( 2, 9 ) int -> x22 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V31 tmp21 [V31,T06] ( 3, 48 ) ref -> x0 "arr expr"
-; V32 tmp22 [V32,T07] ( 3, 48 ) int -> x1 "index expr"
-; V33 tmp23 [V33,T13] ( 3, 24 ) ref -> x1 "arr expr"
-; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x1 "arr expr"
-; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x0 "index expr"
+; V31 tmp21 [V31,T05] ( 3, 48 ) ref -> x0 "arr expr"
+; V32 tmp22 [V32,T06] ( 3, 48 ) int -> x1 "index expr"
+; V33 tmp23 [V33,T12] ( 3, 24 ) ref -> x5 "arr expr"
+; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x5 "arr expr"
+; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x1 "index expr"
; V36 tmp26 [V36,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V37 tmp27 [V37,T04] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V38 PSPSym [V38,T29] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 24 ) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
+; V37 PSPSym [V37,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
+; V38 cse0 [V38,T13] ( 3, 24 ) int -> x1 "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 20 ) int -> x26 "CSE - aggressive"
+; V40 cse2 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M55933_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x30]
- stp x21, x22, [sp, #0x40]
- stp x23, x24, [sp, #0x50]
- stp x25, x26, [sp, #0x60]
+ stp fp, lr, [sp, #-0x80]!
+ stp x19, x20, [sp, #0x38]
+ stp x21, x22, [sp, #0x48]
+ stp x23, x24, [sp, #0x58]
+ stp x25, x26, [sp, #0x68]
+ str x27, [sp, #0x78]
mov fp, sp
- str xzr, [fp, #0x18] // [V21 tmp11]
- add x7, sp, #112
- str x7, [fp, #0x28] // [V38 PSPSym]
- str x3, [fp, #0x10] // [V02 arg2]
+ str xzr, [fp, #0x20] // [V21 tmp11]
+ add x7, sp, #128
+ str x7, [fp, #0x30] // [V37 PSPSym]
+ str x3, [fp, #0x18] // [V02 arg2]
; GC ptr vars +{V02}
mov x19, x0
; gcrRegs +[x19]
@@ -74,11 +75,11 @@ G_M55933_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; byrRegs +[x20]
mov x23, x6
; byrRegs +[x23]
- ;; size=64 bbWeight=1 PerfScore 12.00
+ ;; size=68 bbWeight=1 PerfScore 13.00
G_M55933_IG02: ; bbWeight=1, gcVars=0000000000400000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=1900008 {x3 x20 x23 x24}, gcvars, byref
; byrRegs +[x3]
ldr w0, [x3]
- str w0, [fp, #0x24] // [V06 loc0]
+ str w0, [fp, #0x2C] // [V06 loc0]
;; size=8 bbWeight=1 PerfScore 4.00
G_M55933_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
; byrRegs -[x3]
@@ -92,19 +93,20 @@ G_M55933_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
; gcrRegs -[x0]
; byrRegs +[x0]
ldrb w25, [x0, w1, UXTW #2]
- ldr w0, [fp, #0x24] // [V06 loc0]
+ ldr w0, [fp, #0x2C] // [V06 loc0]
; byrRegs -[x0]
- sub w0, w0, #1
+ sub w26, w0, #1
+ sxtw w0, w26
cmp w0, w22
bhs G_M55933_IG14
- ;; size=44 bbWeight=8 PerfScore 144.00
+ ;; size=48 bbWeight=8 PerfScore 148.00
G_M55933_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
ldrh w2, [x24, w0, UXTW #2]
- ldr x26, [x1, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x08]
+ ldr x27, [x1, #0x08]
+ ; gcrRegs +[x27]
+ ldr w0, [x27, #0x08]
cmp w0, w2
bhi G_M55933_IG13
ldr x0, [x1, #0x10]
@@ -117,7 +119,7 @@ G_M55933_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
ldr x2, [x2]
ldr wzr, [x0]
blr x2
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
sxtw w2, w0
;; size=60 bbWeight=2 PerfScore 52.00
@@ -125,83 +127,80 @@ G_M55933_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
tbz w25, #2, G_M55933_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M55933_IG06: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ldr w0, [fp, #0x24] // [V06 loc0]
- str w0, [x23]
+ ldr w1, [fp, #0x2C] // [V06 loc0]
+ str w1, [x23]
;; size=8 bbWeight=2 PerfScore 6.00
G_M55933_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- ldr w0, [fp, #0x24] // [V06 loc0]
- cmp w0, w21
+ ldr w1, [fp, #0x2C] // [V06 loc0]
+ cmp w1, w21
ble G_M55933_IG17
;; size=12 bbWeight=8 PerfScore 28.00
G_M55933_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
tbnz w25, #1, G_M55933_IG17
- ldr w0, [x20, #0x08]
- ldr w1, [x19, #0xA4]
- lsl w1, w0, w1
- orr w4, w1, w2
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- ldr w5, [x1, #0x08]
- cmp w4, w5
+ ldr w1, [x20, #0x08]
+ ldr w5, [x19, #0xA4]
+ lsl w5, w1, w5
+ orr w4, w5, w2
+ ldr x5, [x19, #0x20]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w4, w0
bhs G_M55933_IG12
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr w1, [x1, w4, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #0
+ add x5, x5, #16
+ ; gcrRegs -[x5]
+ ; byrRegs +[x5]
+ ldr w5, [x5, w4, UXTW #2]
+ ; byrRegs -[x5]
+ cmp w5, #0
ble G_M55933_IG15
;; size=52 bbWeight=4 PerfScore 82.00
G_M55933_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- str w1, [x20, #0x08]
+ str w5, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
G_M55933_IG10: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
mov w25, #1
;; size=4 bbWeight=8 PerfScore 4.00
G_M55933_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- str xzr, [fp, #0x18] // [V21 tmp11]
+ str xzr, [fp, #0x20] // [V21 tmp11]
cbz w25, G_M55933_IG18
- ldr w0, [fp, #0x24] // [V06 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x24] // [V06 loc0]
+ str w26, [fp, #0x2C] // [V06 loc0]
b G_M55933_IG03
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=16 bbWeight=4 PerfScore 16.00
G_M55933_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x23-x24]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55933_IG13: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs +[x19 x26]
+G_M55933_IG13: ; bbWeight=2, gcrefRegs=8080000 {x19 x27}, byrefRegs=1900000 {x20 x23 x24}, byref
+ ; gcrRegs +[x19 x27]
; byrRegs +[x20 x23-x24]
- add x0, x26, #16
- ; byrRegs +[x0]
- ldr w2, [x0, w2, UXTW #2]
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w2, [x1, w2, UXTW #2]
b G_M55933_IG05
;; size=12 bbWeight=2 PerfScore 9.00
G_M55933_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs -[x26]
- ; byrRegs -[x0]
+ ; gcrRegs -[x27]
+ ; byrRegs -[x1]
movn w2, #0
b G_M55933_IG05
;; size=8 bbWeight=2 PerfScore 3.00
G_M55933_IG15: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
- ldr w5, [x1, #0x08]
- cmp w0, w5
+ ldr x5, [x19, #0x10]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w1, w0
bhs G_M55933_IG12
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x1, [x1, w0, UXTW #3]
...
+4 (+1.82%) : 7548.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
@@ -10,7 +10,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ubyte]>
; V01 arg1 [V01 ] ( 3, 3 ) struct ( 8) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Text.Json.JsonDocumentOptions>
-; V02 loc0 [V02,T02] ( 4, 4 ) ref -> x21 class-hnd exact single-def <ubyte[]>
+; V02 loc0 [V02,T01] ( 5, 5 ) ref -> x21 class-hnd exact single-def <ubyte[]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ubyte]>
;* V05 tmp2 [V05 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Memory`1[ubyte]>
@@ -20,11 +20,11 @@
;* V09 tmp6 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
;* V10 tmp7 [V10 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V11 tmp8 [V11 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V12 tmp9 [V12,T04] ( 2, 4 ) long -> x2 "Inlining Arg"
-;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
+; V12 tmp9 [V12,T06] ( 2, 4 ) long -> x2 "Inlining Arg"
+; V13 tmp10 [V13 ] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.Memory`1[ubyte]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Memory`1[ubyte]>
-; V15 tmp12 [V15,T03] ( 2, 2 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V16 tmp13 [V16,T01] ( 4, 4 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T05] ( 2, 2 ) byref -> x20 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp13 [V16,T00] ( 4, 4 ) int -> x19 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;* V17 tmp14 [V17 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V18 tmp15 [V18 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
;* V19 tmp16 [V19 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
@@ -33,21 +33,20 @@
;* V22 tmp19 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) int -> zero-ref "field V06._index (fldOffset=0x8)" P-INDEP
;* V24 tmp21 [V24 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0xc)" P-INDEP
-; V25 tmp22 [V25,T05] ( 2, 4 ) int -> [fp+0x28] do-not-enreg[] "field V07._maxDepth (fldOffset=0x0)" P-DEP
-; V26 tmp23 [V26,T06] ( 2, 4 ) ubyte -> [fp+0x2C] do-not-enreg[] "field V07._commentHandling (fldOffset=0x4)" P-DEP
-; V27 tmp24 [V27,T07] ( 2, 4 ) ubyte -> [fp+0x2D] do-not-enreg[] "field V07.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
-; V28 tmp25 [V28,T10] ( 2, 2 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T11] ( 2, 2 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
+; V25 tmp22 [V25,T07] ( 2, 4 ) int -> [fp+0x28] do-not-enreg[] "field V07._maxDepth (fldOffset=0x0)" P-DEP
+; V26 tmp23 [V26,T08] ( 2, 4 ) ubyte -> [fp+0x2C] do-not-enreg[] "field V07._commentHandling (fldOffset=0x4)" P-DEP
+; V27 tmp24 [V27,T09] ( 2, 4 ) ubyte -> [fp+0x2D] do-not-enreg[] "field V07.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-DEP
+; V28 tmp25 [V28,T11] ( 2, 2 ) byref -> x0 "field V08._reference (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T12] ( 2, 2 ) int -> x1 "field V08._length (fldOffset=0x8)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) byref -> zero-ref single-def "field V09._reference (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V32 tmp29 [V32,T09] ( 3, 3 ) ref -> x21 "field V13._object (fldOffset=0x0)" P-INDEP
-;* V33 tmp30 [V33,T13] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP
-; V34 tmp31 [V34,T12] ( 2, 2 ) int -> x19 "field V13._length (fldOffset=0xc)" P-INDEP
+; V32 tmp29 [V32,T02] ( 3, 5 ) ref -> [fp+0x18] do-not-enreg[] "field V13._object (fldOffset=0x0)" P-DEP
+; V33 tmp30 [V33,T03] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[] "field V13._index (fldOffset=0x8)" P-DEP
+; V34 tmp31 [V34,T04] ( 3, 5 ) int -> [fp+0x24] do-not-enreg[] "field V13._length (fldOffset=0xc)" P-DEP
;* V35 tmp32 [V35 ] ( 0, 0 ) ref -> zero-ref "field V14._object (fldOffset=0x0)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) int -> zero-ref "field V14._index (fldOffset=0x8)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0xc)" P-INDEP
-; V38 tmp35 [V38,T08] ( 2, 4 ) struct ( 8) [fp+0x20] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
-; V39 tmp36 [V39,T00] ( 5, 10 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Memory`1[ubyte]>
+; V38 tmp35 [V38,T10] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.Text.Json.JsonReaderOptions>
;
; Lcl frame size = 40
@@ -56,7 +55,7 @@ G_M33801_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x19, x20, [sp, #0x38]
str x21, [sp, #0x48]
mov fp, sp
- str xzr, [fp, #0x10] // [V39 tmp36]
+ str xzr, [fp, #0x18] // [V13 tmp10]
str x2, [fp, #0x30] // [V01 arg1]
mov x20, x0
; byrRegs +[x20]
@@ -86,29 +85,30 @@ G_M33801_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, b
ldr x3, [x3]
blr x3
; byrRegs -[x0-x1 x20]
- ldr w19, [x21, #0x08]
+ str x21, [fp, #0x18] // [V32 tmp29]
+ str wzr, [fp, #0x20] // [V33 tmp30]
+ ldr w0, [x21, #0x08]
+ str w0, [fp, #0x24] // [V34 tmp31]
add x0, fp, #48 // [V01 arg1]
movz x1, #0xD1FFAB1E // code for System.Text.Json.JsonDocumentOptions:GetReaderOptions():System.Text.Json.JsonReaderOptions:this
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; gcrRegs -[x21]
str x0, [fp, #0x28] // [V07 tmp4]
- str x21, [fp, #0x10] // [V39 tmp36]
- stp wzr, w19, [fp, #0x18] // [V39 tmp36+0x08], [V39 tmp36+0x0c]
- ldr x0, [fp, #0x28] // [V07 tmp4]
- str x0, [fp, #0x20] // [V38 tmp35]
- ldp x0, x1, [fp, #0x10] // [V39 tmp36], [V39 tmp36+0x08]
+ ldr x2, [fp, #0x28] // [V07 tmp4]
+ str x2, [fp, #0x10] // [V38 tmp35]
+ ldp x2, x0, [fp, #0x10] // [V38 tmp35], [V13 tmp10]
; gcrRegs +[x0]
- ldr x2, [fp, #0x20] // [V38 tmp35]
+ ldr x1, [fp, #0x20] // [V13 tmp10+0x08]
mov w3, wzr
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
movk x4, #0xD1FFAB1E LSL #32
ldr x4, [x4]
blr x4
- ; gcrRegs -[x21]
- ;; size=148 bbWeight=1 PerfScore 41.00
+ ;; size=152 bbWeight=1 PerfScore 42.00
G_M33801_IG03: ; bbWeight=1, epilog, nogc, extend
ldr x21, [sp, #0x48]
ldp x19, x20, [sp, #0x38]
@@ -125,7 +125,7 @@ G_M33801_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 20, PerfScore 52.50, instruction count 55, allocated bytes for code 220 (MethodHash=26bd7bf6) for method System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 53.50, instruction count 56, allocated bytes for code 224 (MethodHash=26bd7bf6) for method System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
; ============================================================
Unwind Info:
@@ -136,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+16 (+12.50%) : 908.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 6.50) ref -> [fp+0x18] this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
+; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
; V01 loc0 [V01,T02] ( 3, 2.50) ref -> x1 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T03] ( 3, 2.50) int -> x3
+; V02 loc1 [V02,T03] ( 3, 2.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
-; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x2 single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
+; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x3 single-def "argument with side effect"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 2, 2 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M7274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
+ str x19, [sp, #0x38]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7274_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x18]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M7274_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
- ldr w2, [x0, #0x14]
- sub w3, w2, #1
- ldr w4, [x1, #0x08]
- cmp w4, w3
+ ldr w0, [x19, #0x14]
+ sub w2, w0, #1
+ ldr w3, [x1, #0x08]
+ cmp w3, w2
bls G_M7274_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- add w2, w2, #1
- str w2, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x20]
- ; gcrRegs +[x2]
- ubfiz x3, x3, #5, #32
- add x3, x3, #16
- add x1, x1, x3
+G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ add w0, w0, #1
+ str w0, [x19, #0x14]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ubfiz x0, x2, #5, #32
+ add x0, x0, #16
+ add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ldp q16, q17, [x1]
- stp q16, q17, [fp, #0x20]
- add x1, fp, #32 // [V04 tmp1]
+ ldp x0, x2, [x1]
+ stp x0, x2, [fp, #0x18]
+ ldp x0, x2, [x1, #0x10]
+ stp x0, x2, [fp, #0x28]
+ add x1, fp, #24 // [V04 tmp1]
; byrRegs -[x1]
- ldr x0, [x2, #0x08]
- ldr x2, [x2, #0x18]
- ; gcrRegs -[x2]
- blr x2
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- str d0, [x0, #0x08]
+ ldr x2, [x3, #0x18]
+ blr x2
+ ; gcrRegs -[x0 x3]
+ str d0, [x19, #0x08]
mov w0, #1
- ; gcrRegs -[x0]
- ;; size=64 bbWeight=0.50 PerfScore 11.25
+ ;; size=64 bbWeight=0.50 PerfScore 12.75
G_M7274_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars -{V00}
- str xzr, [x0, #0x08]
- movn w1, #0
- str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ str xzr, [x19, #0x08]
+ movn w0, #0
+ str w0, [x19, #0x14]
mov w0, wzr
- ; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M7274_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 27.25, instruction count 32, allocated bytes for code 128 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 32.25, instruction count 36, allocated bytes for code 144 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +98,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
+ E4 end
benchmarks.run_pgo.windows.arm64.checked.mch
-44 (-26.83%) : 68825.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-44 (-26.83%) : 69246.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-48 (-22.22%) : 68775.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
+16 (+1.02%) : 74203.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object
@@ -12,21 +12,21 @@
; V00 arg0 [V00,T00] ( 35, 16.20) ref -> x19 class-hnd <System.RuntimeType>
; V01 arg1 [V01,T01] ( 18, 8.44) ref -> x20 class-hnd single-def <System.RuntimeType>
; V02 arg2 [V02,T02] ( 3, 3 ) ubyte -> x21 single-def
-; V03 loc0 [V03 ] ( 17, 3.58) struct (24) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Attribute]>
-; V04 loc1 [V04 ] ( 13, 1.24) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Object]>
-; V05 loc2 [V05,T25] ( 3, 0.34) ubyte -> x21
-; V06 loc3 [V06,T19] ( 3, 0.41) ref -> x22 class-hnd single-def <System.Object[]>
+; V03 loc0 [V03 ] ( 17, 3.58) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Attribute]>
+; V04 loc1 [V04 ] ( 13, 1.24) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Object]>
+; V05 loc2 [V05,T23] ( 3, 0.34) ubyte -> x22
+; V06 loc3 [V06,T19] ( 3, 0.41) ref -> x21 class-hnd single-def <System.Object[]>
; V07 loc4 [V07,T15] ( 5, 1.83) ref -> x19 class-hnd single-def <System.Object[]>
-; V08 loc5 [V08,T18] ( 7, 0.41) int -> x22
-; V09 loc6 [V09,T17] ( 8, 0.83) int -> x24
+; V08 loc5 [V08,T18] ( 7, 0.41) int -> x24
+; V09 loc6 [V09,T17] ( 8, 0.83) int -> x25
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T04] ( 2, 3.45) ref -> x23 class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule>
;* V12 tmp2 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp3 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V14 tmp4 [V14,T20] ( 2, 0.41) ref -> x22 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
+; V14 tmp4 [V14,T20] ( 2, 0.41) ref -> x21 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
; V15 tmp5 [V15,T21] ( 2, 0.41) ref -> x19 "CASTCLASS eval op1"
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
-; V17 tmp7 [V17,T27] ( 2, 0.28) ref -> x19 single-def "CASTCLASS eval op1"
+; V17 tmp7 [V17,T25] ( 2, 0.28) ref -> x19 single-def "CASTCLASS eval op1"
;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
;* V19 tmp9 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -50,40 +50,38 @@
;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V39 tmp29 [V39,T08] ( 2, 2.91) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.AttributeUsageAttribute>
-; V41 tmp31 [V41,T28] ( 3, 0.21) int -> x3 "Inlining Arg"
-; V42 tmp32 [V42,T30] ( 3, 0.14) ref -> x2 class-hnd "Inline return value spill temp" <System.Attribute>
-; V43 tmp33 [V43,T26] ( 3, 0.28) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V41 tmp31 [V41,T26] ( 3, 0.21) int -> x3 "Inlining Arg"
+; V42 tmp32 [V42,T27] ( 3, 0.14) ref -> x2 class-hnd "Inline return value spill temp" <System.Attribute>
+; V43 tmp33 [V43,T24] ( 3, 0.28) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
;* V44 tmp34 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V45 tmp35 [V45 ] ( 7, 1.38) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
-; V46 tmp36 [V46 ] ( 5, 1.38) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._item (fldOffset=0x8)" P-DEP
-; V47 tmp37 [V47 ] ( 11, 3.38) int -> [fp+0x58] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x10)" P-DEP
-; V48 tmp38 [V48 ] ( 3, 1.27) int -> [fp+0x5C] do-not-enreg[X] addr-exposed "field V03._capacity (fldOffset=0x14)" P-DEP
-; V49 tmp39 [V49 ] ( 8, 0.55) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
-; V50 tmp40 [V50 ] ( 5, 0.55) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V04._item (fldOffset=0x8)" P-DEP
-; V51 tmp41 [V51 ] ( 8, 0.97) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x10)" P-DEP
-; V52 tmp42 [V52 ] ( 4, 0.41) int -> [fp+0x44] do-not-enreg[X] addr-exposed "field V04._capacity (fldOffset=0x14)" P-DEP
+; V45 tmp35 [V45 ] ( 7, 1.38) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
+; V46 tmp36 [V46 ] ( 5, 1.38) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._item (fldOffset=0x8)" P-DEP
+; V47 tmp37 [V47 ] ( 11, 3.38) int -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x10)" P-DEP
+; V48 tmp38 [V48 ] ( 3, 1.27) int -> [fp+0x54] do-not-enreg[X] addr-exposed "field V03._capacity (fldOffset=0x14)" P-DEP
+; V49 tmp39 [V49 ] ( 8, 0.55) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
+; V50 tmp40 [V50 ] ( 5, 0.55) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._item (fldOffset=0x8)" P-DEP
+; V51 tmp41 [V51 ] ( 8, 0.97) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x10)" P-DEP
+; V52 tmp42 [V52 ] ( 4, 0.41) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V04._capacity (fldOffset=0x14)" P-DEP
;* V53 tmp43 [V53 ] ( 0, 0 ) long -> zero-ref "field V23.m_asTAddr (fldOffset=0x0)" P-INDEP
; V54 tmp44 [V54,T06] ( 3, 3 ) long -> x0 "field V26.m_asTAddr (fldOffset=0x0)" P-INDEP
; V55 tmp45 [V55,T16] ( 2, 1.09) ref -> x2 single-def "argument with side effect"
-; V56 tmp46 [V56,T31] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V57 tmp47 [V57 ] ( 2, 0.41) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.RuntimeType+ListBuilder`1[System.Object]>
-; V58 tmp48 [V58,T23] ( 2, 0.41) int -> x2 "argument with side effect"
-; V59 tmp49 [V59,T22] ( 2, 0.41) ref -> x22 "argument with side effect"
-;* V60 tmp50 [V60,T29] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V61 tmp51 [V61,T24] ( 2, 0.41) int -> x4 "argument with side effect"
-; V62 tmp52 [V62,T05] ( 2, 3.45) int -> x1 "argument with side effect"
-; V63 cse0 [V63,T10] ( 3, 5.45) ref -> x23 "CSE - aggressive"
-; V64 cse1 [V64,T07] ( 3, 3 ) int -> x0 "CSE - aggressive"
+; V56 tmp46 [V56,T28] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V57 tmp47 [V57 ] ( 2, 0.41) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.RuntimeType+ListBuilder`1[System.Object]>
+; V58 tmp48 [V58,T22] ( 2, 0.41) int -> x2 "argument with side effect"
+; V59 tmp49 [V59,T05] ( 2, 3.45) int -> x1 "argument with side effect"
+; V60 cse0 [V60,T10] ( 3, 5.45) ref -> x23 "CSE - aggressive"
+; V61 cse1 [V61,T07] ( 3, 3 ) int -> x0 "CSE - aggressive"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M13659_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x90]!
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
- stp x23, x24, [sp, #0x80]
+ stp x19, x20, [sp, #0x58]
+ stp x21, x22, [sp, #0x68]
+ stp x23, x24, [sp, #0x78]
+ str x25, [sp, #0x88]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
@@ -93,7 +91,7 @@ G_M13659_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
mov w21, w2
- ;; size=52 bbWeight=1 PerfScore 10.00
+ ;; size=56 bbWeight=1 PerfScore 11.00
G_M13659_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M13659_IG43
cbz x20, G_M13659_IG44
@@ -121,8 +119,8 @@ G_M13659_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbnz w0, G_M13659_IG24
;; size=8 bbWeight=1 PerfScore 1.50
G_M13659_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- stp xzr, xzr, [fp, #0x48]
- str xzr, [fp, #0x58]
+ stp xzr, xzr, [fp, #0x40]
+ str xzr, [fp, #0x50]
cbz x19, G_M13659_IG49
cbz x20, G_M13659_IG50
;; size=16 bbWeight=1 PerfScore 4.00
@@ -185,7 +183,7 @@ G_M13659_IG12: ; bbWeight=0.27, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- add x0, fp, #72 // [V03 loc0]
+ add x0, fp, #64 // [V03 loc0]
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -228,7 +226,7 @@ G_M13659_IG15: ; bbWeight=0.86, gcrefRegs=180000 {x19 x20}, byrefRegs=000
sxtw w1, w0
mov x0, x23
; gcrRegs +[x0]
- ldr w2, [fp, #0x58] // [V47 tmp37]
+ ldr w2, [fp, #0x50] // [V47 tmp37]
mov x3, x20
; gcrRegs +[x3]
movz x4, #0xD1FFAB1E // code for System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeModule,int,int,System.RuntimeType):System.Object[]
@@ -240,7 +238,7 @@ G_M13659_IG15: ; bbWeight=0.86, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
mov x19, x0
; gcrRegs +[x19]
- ldr w1, [fp, #0x58] // [V47 tmp37]
+ ldr w1, [fp, #0x50] // [V47 tmp37]
cmp w1, #0
bgt G_M13659_IG21
;; size=76 bbWeight=0.86 PerfScore 16.81
@@ -250,15 +248,16 @@ G_M13659_IG16: ; bbWeight=0.86, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
; gcrRegs +[x0]
;; size=4 bbWeight=0.86 PerfScore 0.43
G_M13659_IG17: ; bbWeight=0.86, epilog, nogc, extend
- ldp x23, x24, [sp, #0x80]
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x25, [sp, #0x88]
+ ldp x23, x24, [sp, #0x78]
+ ldp x21, x22, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp], #0x90
ret lr
- ;; size=20 bbWeight=0.86 PerfScore 4.31
+ ;; size=24 bbWeight=0.86 PerfScore 6.03
G_M13659_IG18: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0] +[x2 x20 x23]
- add x0, fp, #48 // [V04 loc1]
+ add x0, fp, #40 // [V04 loc1]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -269,9 +268,9 @@ G_M13659_IG18: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=980
blr x3
; gcrRegs -[x2]
; gcr arg pop 0
- add w22, w22, #1
- ldr w0, [fp, #0x58] // [V47 tmp37]
- cmp w22, w0
+ add w24, w24, #1
+ ldr w0, [fp, #0x50] // [V47 tmp37]
+ cmp w24, w0
blt G_M13659_IG29
;; size=52 bbWeight=0.07 PerfScore 0.79
G_M13659_IG19: ; bbWeight=3.45, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
@@ -285,15 +284,15 @@ G_M13659_IG20: ; bbWeight=0.14, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
G_M13659_IG21: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] +[x19]
ldr w1, [x19, #0x08]
- ldr w0, [fp, #0x58] // [V47 tmp37]
+ ldr w0, [fp, #0x50] // [V47 tmp37]
sub w3, w1, w0
- ldr w1, [fp, #0x58] // [V47 tmp37]
+ ldr w1, [fp, #0x50] // [V47 tmp37]
cmp w1, #1
bne G_M13659_IG27
sxtw x1, w3
mov x0, x19
; gcrRegs +[x0]
- ldr x2, [fp, #0x50] // [V46 tmp36]
+ ldr x2, [fp, #0x48] // [V46 tmp36]
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
@@ -366,9 +365,9 @@ G_M13659_IG26: ; bbWeight=0.18, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
;; size=8 bbWeight=0.18 PerfScore 0.27
G_M13659_IG27: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x20 x23]
- ldr x0, [fp, #0x48] // [V45 tmp35]
+ ldr x0, [fp, #0x40] // [V45 tmp35]
; gcrRegs +[x0]
- ldr w4, [fp, #0x58] // [V47 tmp37]
+ ldr w4, [fp, #0x50] // [V47 tmp37]
mov x2, x19
; gcrRegs +[x2]
mov w1, wzr
@@ -383,17 +382,17 @@ G_M13659_IG27: ; bbWeight=0.03, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
;; size=40 bbWeight=0.03 PerfScore 0.40
G_M13659_IG28: ; bbWeight=0.14, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20 x23]
- stp xzr, xzr, [fp, #0x30]
- str xzr, [fp, #0x40]
- mov w21, wzr
+ stp xzr, xzr, [fp, #0x28]
+ str xzr, [fp, #0x38]
mov w22, wzr
- ldr w0, [fp, #0x58] // [V47 tmp37]
+ mov w24, wzr
+ ldr w0, [fp, #0x50] // [V47 tmp37]
cmp w0, #0
ble G_M13659_IG19
;; size=28 bbWeight=0.14 PerfScore 0.90
G_M13659_IG29: ; bbWeight=0.07, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr w0, [fp, #0x58] // [V47 tmp37]
- cmp w22, w0
+ ldr w0, [fp, #0x50] // [V47 tmp37]
+ cmp w24, w0
cset x0, lt
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
movk x1, #0xD1FFAB1E LSL #16
@@ -401,10 +400,10 @@ G_M13659_IG29: ; bbWeight=0.07, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
ldr x1, [x1]
blr x1
; gcr arg pop 0
- ldr x0, [fp, #0x48] // [V45 tmp35]
+ ldr x0, [fp, #0x40] // [V45 tmp35]
; gcrRegs +[x0]
cbnz x0, G_M13659_IG53
- ldr x2, [fp, #0x50] // [V46 tmp36]
+ ldr x2, [fp, #0x48] // [V46 tmp36]
; gcrRegs +[x2]
b G_M13659_IG18
;; size=48 bbWeight=0.07 PerfScore 1.00
@@ -414,36 +413,36 @@ G_M13659_IG30: ; bbWeight=0.10, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
; gcrRegs +[x0]
bl <unknown method>
; gcr arg pop 0
- mov x22, x0
- ; gcrRegs +[x22]
...
+16 (+1.03%) : 81708.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object
@@ -12,18 +12,18 @@
; V00 arg0 [V00,T00] ( 35, 15.02) ref -> x19 class-hnd <System.RuntimeType>
; V01 arg1 [V01,T01] ( 18, 7.77) ref -> x20 class-hnd single-def <System.RuntimeType>
; V02 arg2 [V02,T02] ( 3, 3 ) ubyte -> x21 single-def
-; V03 loc0 [V03 ] ( 14, 3.59) struct (24) [fp+0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Attribute]>
-; V04 loc1 [V04 ] ( 12, 1.05) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Object]>
-; V05 loc2 [V05,T27] ( 3, 0.27) ubyte -> x21
-; V06 loc3 [V06,T24] ( 3, 0.32) ref -> x25 class-hnd single-def <System.Object[]>
+; V03 loc0 [V03 ] ( 14, 3.59) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Attribute]>
+; V04 loc1 [V04 ] ( 12, 1.05) struct (24) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.RuntimeType+ListBuilder`1[System.Object]>
+; V05 loc2 [V05,T25] ( 3, 0.27) ubyte -> x24
+; V06 loc3 [V06,T22] ( 3, 0.32) ref -> x26 class-hnd single-def <System.Object[]>
; V07 loc4 [V07,T16] ( 4, 1.82) ref -> x22 class-hnd single-def <System.Object[]>
-; V08 loc5 [V08,T25] ( 7, 0.27) int -> x24
-; V09 loc6 [V09,T18] ( 8, 0.77) int -> x26
+; V08 loc5 [V08,T23] ( 7, 0.27) int -> x25
+; V09 loc6 [V09,T18] ( 8, 0.77) int -> x27
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T04] ( 2, 3.64) ref -> x23 class-hnd exact single-def "impAppendStmt" <System.Reflection.RuntimeModule>
;* V12 tmp2 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp3 [V13 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V14 tmp4 [V14,T19] ( 2, 0.36) ref -> x22 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
+; V14 tmp4 [V14,T19] ( 2, 0.36) ref -> x21 class-hnd exact "impAppendStmt" <System.Reflection.RuntimeModule>
; V15 tmp5 [V15,T20] ( 2, 0.36) ref -> x19 "CASTCLASS eval op1"
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
; V17 tmp7 [V17,T17] ( 2, 1.09) ref -> x19 single-def "CASTCLASS eval op1"
@@ -50,40 +50,38 @@
;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V39 tmp29 [V39,T13] ( 2, 2 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>>
;* V40 tmp30 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.AttributeUsageAttribute>
-; V41 tmp31 [V41,T29] ( 3, 0.09) ref -> x2 class-hnd "Inline return value spill temp" <System.Attribute>
-; V42 tmp32 [V42,T26] ( 3, 0.27) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
+; V41 tmp31 [V41,T26] ( 3, 0.09) ref -> x2 class-hnd "Inline return value spill temp" <System.Attribute>
+; V42 tmp32 [V42,T24] ( 3, 0.27) ref -> x2 class-hnd "Inline return value spill temp" <System.Object>
;* V43 tmp33 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp34 [V44 ] ( 7, 1.55) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
-; V45 tmp35 [V45 ] ( 5, 1.55) ref -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._item (fldOffset=0x8)" P-DEP
-; V46 tmp36 [V46 ] ( 10, 3.50) int -> [fp+0x58] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x10)" P-DEP
-; V47 tmp37 [V47 ] ( 4, 1.50) int -> [fp+0x5C] do-not-enreg[X] addr-exposed "field V03._capacity (fldOffset=0x14)" P-DEP
-; V48 tmp38 [V48 ] ( 7, 0.45) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
-; V49 tmp39 [V49 ] ( 5, 0.45) ref -> [fp+0x38] do-not-enreg[X] addr-exposed "field V04._item (fldOffset=0x8)" P-DEP
-; V50 tmp40 [V50 ] ( 8, 0.77) int -> [fp+0x40] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x10)" P-DEP
-; V51 tmp41 [V51 ] ( 4, 0.32) int -> [fp+0x44] do-not-enreg[X] addr-exposed "field V04._capacity (fldOffset=0x14)" P-DEP
+; V44 tmp34 [V44 ] ( 7, 1.55) ref -> [fp+0x40] do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
+; V45 tmp35 [V45 ] ( 5, 1.55) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V03._item (fldOffset=0x8)" P-DEP
+; V46 tmp36 [V46 ] ( 10, 3.50) int -> [fp+0x50] do-not-enreg[X] addr-exposed "field V03._count (fldOffset=0x10)" P-DEP
+; V47 tmp37 [V47 ] ( 4, 1.50) int -> [fp+0x54] do-not-enreg[X] addr-exposed "field V03._capacity (fldOffset=0x14)" P-DEP
+; V48 tmp38 [V48 ] ( 7, 0.45) ref -> [fp+0x28] do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
+; V49 tmp39 [V49 ] ( 5, 0.45) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V04._item (fldOffset=0x8)" P-DEP
+; V50 tmp40 [V50 ] ( 8, 0.77) int -> [fp+0x38] do-not-enreg[X] addr-exposed "field V04._count (fldOffset=0x10)" P-DEP
+; V51 tmp41 [V51 ] ( 4, 0.32) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V04._capacity (fldOffset=0x14)" P-DEP
;* V52 tmp42 [V52 ] ( 0, 0 ) long -> zero-ref "field V23.m_asTAddr (fldOffset=0x0)" P-INDEP
; V53 tmp43 [V53,T06] ( 3, 3 ) long -> x0 "field V26.m_asTAddr (fldOffset=0x0)" P-INDEP
; V54 tmp44 [V54,T14] ( 2, 2 ) ref -> x2 single-def "argument with side effect"
-; V55 tmp45 [V55,T30] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V56 tmp46 [V56 ] ( 2, 0.36) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.RuntimeType+ListBuilder`1[System.Object]>
-; V57 tmp47 [V57,T22] ( 2, 0.36) int -> x2 "argument with side effect"
-; V58 tmp48 [V58,T21] ( 2, 0.36) ref -> x22 "argument with side effect"
-;* V59 tmp49 [V59,T28] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V60 tmp50 [V60,T23] ( 2, 0.36) int -> x4 "argument with side effect"
-; V61 tmp51 [V61,T05] ( 2, 3.64) int -> x1 "argument with side effect"
-; V62 cse0 [V62,T09] ( 3, 2.18) ref -> x23 "CSE - aggressive"
-; V63 cse1 [V63,T07] ( 3, 3 ) int -> x0 "CSE - moderate"
+; V55 tmp45 [V55,T27] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
+; V56 tmp46 [V56 ] ( 2, 0.36) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.RuntimeType+ListBuilder`1[System.Object]>
+; V57 tmp47 [V57,T21] ( 2, 0.36) int -> x2 "argument with side effect"
+; V58 tmp48 [V58,T05] ( 2, 3.64) int -> x1 "argument with side effect"
+; V59 cse0 [V59,T09] ( 3, 2.18) ref -> x23 "CSE - aggressive"
+; V60 cse1 [V60,T07] ( 3, 3 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M13659_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
- stp x23, x24, [sp, #0x80]
- stp x25, x26, [sp, #0x90]
+ stp x19, x20, [sp, #0x58]
+ stp x21, x22, [sp, #0x68]
+ stp x23, x24, [sp, #0x78]
+ stp x25, x26, [sp, #0x88]
+ str x27, [sp, #0x98]
mov fp, sp
- add x9, fp, #24
+ add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
stp q16, q16, [x9, #0x20]
@@ -93,7 +91,7 @@ G_M13659_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x20, x1
; gcrRegs +[x20]
mov w21, w2
- ;; size=56 bbWeight=1 PerfScore 11.00
+ ;; size=60 bbWeight=1 PerfScore 12.00
G_M13659_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbz x19, G_M13659_IG40
cbz x20, G_M13659_IG41
@@ -121,8 +119,8 @@ G_M13659_IG05: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbnz w0, G_M13659_IG09
;; size=8 bbWeight=1 PerfScore 1.50
G_M13659_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- stp xzr, xzr, [fp, #0x48]
- str xzr, [fp, #0x58]
+ stp xzr, xzr, [fp, #0x40]
+ str xzr, [fp, #0x50]
cbz x19, G_M13659_IG46
cbz x20, G_M13659_IG47
;; size=16 bbWeight=1 PerfScore 4.00
@@ -179,7 +177,7 @@ G_M13659_IG10: ; bbWeight=0.14, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=28 bbWeight=0.14 PerfScore 0.89
G_M13659_IG11: ; bbWeight=0.05, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x2 x23]
- add x0, fp, #48 // [V04 loc1]
+ add x0, fp, #40 // [V04 loc1]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -190,9 +188,9 @@ G_M13659_IG11: ; bbWeight=0.05, gcrefRegs=980004 {x2 x19 x20 x23}, byrefR
blr x3
; gcrRegs -[x2]
; gcr arg pop 0
- add w24, w24, #1
- ldr w0, [fp, #0x58] // [V46 tmp36]
- cmp w24, w0
+ add w25, w25, #1
+ ldr w0, [fp, #0x50] // [V46 tmp36]
+ cmp w25, w0
blt G_M13659_IG30
;; size=52 bbWeight=0.05 PerfScore 0.52
G_M13659_IG12: ; bbWeight=4.55, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
@@ -243,7 +241,7 @@ G_M13659_IG16: ; bbWeight=0.50, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
; gcr arg pop 0
mov x2, x0
; gcrRegs +[x2]
- add x0, fp, #72 // [V03 loc0]
+ add x0, fp, #64 // [V03 loc0]
; gcrRegs -[x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -286,7 +284,7 @@ G_M13659_IG19: ; bbWeight=0.91, gcrefRegs=180000 {x19 x20}, byrefRegs=000
sxtw w1, w0
mov x0, x23
; gcrRegs +[x0]
- ldr w2, [fp, #0x58] // [V46 tmp36]
+ ldr w2, [fp, #0x50] // [V46 tmp36]
mov x3, x20
; gcrRegs +[x3]
movz x4, #0xD1FFAB1E // code for System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeModule,int,int,System.RuntimeType):System.Object[]
@@ -298,7 +296,7 @@ G_M13659_IG19: ; bbWeight=0.91, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcr arg pop 0
mov x22, x0
; gcrRegs +[x22]
- ldr w0, [fp, #0x58] // [V46 tmp36]
+ ldr w0, [fp, #0x50] // [V46 tmp36]
; gcrRegs -[x0]
cmp w0, #0
bgt G_M13659_IG50
@@ -308,13 +306,14 @@ G_M13659_IG20: ; bbWeight=0.91, gcrefRegs=400000 {x22}, byrefRegs=0000 {}
; gcrRegs +[x0]
;; size=4 bbWeight=0.91 PerfScore 0.45
G_M13659_IG21: ; bbWeight=0.91, epilog, nogc, extend
- ldp x25, x26, [sp, #0x90]
- ldp x23, x24, [sp, #0x80]
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x27, [sp, #0x98]
+ ldp x25, x26, [sp, #0x88]
+ ldp x23, x24, [sp, #0x78]
+ ldp x21, x22, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp], #0xA0
ret lr
- ;; size=24 bbWeight=0.91 PerfScore 5.45
+ ;; size=28 bbWeight=0.91 PerfScore 7.27
G_M13659_IG22: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0 x22] +[x19-x20 x23]
cmp x19, x23
@@ -324,7 +323,7 @@ G_M13659_IG23: ; bbWeight=0.09, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
; gcrRegs -[x19 x23]
mov x0, x20
; gcrRegs +[x0]
- ldr w1, [fp, #0x40] // [V50 tmp40]
+ ldr w1, [fp, #0x38] // [V50 tmp40]
movz x2, #0xD1FFAB1E // code for System.Reflection.CustomAttribute:CreateAttributeArrayHelper(System.RuntimeType,int):System.Object[]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
@@ -332,44 +331,44 @@ G_M13659_IG23: ; bbWeight=0.09, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
blr x2
; gcrRegs -[x20]
; gcr arg pop 0
- mov x25, x0
- ; gcrRegs +[x25]
- mov w26, wzr
- ldr w1, [fp, #0x40] // [V50 tmp40]
+ mov x26, x0
+ ; gcrRegs +[x26]
+ mov w27, wzr
+ ldr w1, [fp, #0x38] // [V50 tmp40]
cmp w1, #0
ble G_M13659_IG37
;; size=48 bbWeight=0.09 PerfScore 1.14
-G_M13659_IG24: ; bbWeight=0.14, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref, isz
+G_M13659_IG24: ; bbWeight=0.14, gcrefRegs=4000000 {x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr w1, [fp, #0x40] // [V50 tmp40]
- cmp w26, w1
+ ldr w1, [fp, #0x38] // [V50 tmp40]
+ cmp w27, w1
bge G_M13659_IG51
;; size=12 bbWeight=0.14 PerfScore 0.48
-G_M13659_IG25: ; bbWeight=0.14, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref, isz
- ldr x1, [fp, #0x30] // [V48 tmp38]
+G_M13659_IG25: ; bbWeight=0.14, gcrefRegs=4000000 {x26}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x28] // [V48 tmp38]
; gcrRegs +[x1]
cbnz x1, G_M13659_IG54
- ldr x2, [fp, #0x38] // [V49 tmp39]
+ ldr x2, [fp, #0x30] // [V49 tmp39]
; gcrRegs +[x2]
;; size=12 bbWeight=0.14 PerfScore 0.68
-G_M13659_IG26: ; bbWeight=0.14, gcrefRegs=2000004 {x2 x25}, byrefRegs=0000 {}, byref, isz
+G_M13659_IG26: ; bbWeight=0.14, gcrefRegs=4000004 {x2 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
- sxtw x1, w26
- mov x0, x25
+ sxtw x1, w27
+ mov x0, x26
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
; gcr arg pop 0
- add w26, w26, #1
- ldr w0, [fp, #0x40] // [V50 tmp40]
- cmp w26, w0
+ add w27, w27, #1
+ ldr w0, [fp, #0x38] // [V50 tmp40]
+ cmp w27, w0
blt G_M13659_IG24
;; size=28 bbWeight=0.14 PerfScore 0.82
-G_M13659_IG27: ; bbWeight=0.09, gcrefRegs=2000000 {x25}, byrefRegs=0000 {}, byref
+G_M13659_IG27: ; bbWeight=0.09, gcrefRegs=4000000 {x26}, byrefRegs=0000 {}, byref
b G_M13659_IG37
;; size=4 bbWeight=0.09 PerfScore 0.09
G_M13659_IG28: ; bbWeight=0.09, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x25] +[x19-x20 x23]
+ ; gcrRegs -[x26] +[x19-x20 x23]
ldrsb wzr, [x20]
mov x0, x20
...
+4 (+5.88%) : 69638.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5.00) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5.00) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6.00) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4.00) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M44302_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1.00 PerfScore 1.50
-G_M44302_IG02: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1.00 PerfScore 2.00
+G_M44302_IG02: ; bbWeight=1.00, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M44302_IG03: ; bbWeight=1.00, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1.00 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
benchmarks.run_tiered.windows.arm64.checked.mch
-44 (-26.83%) : 41014.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-48 (-22.22%) : 40963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
-28 (-21.88%) : 7158.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
@@ -5,49 +5,37 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <System.String>
-; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [fp+0x44] do-not-enreg[]
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [fp+0x40] do-not-enreg[]
-; V03 arg3 [V03 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V00 arg0 [V00 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <System.String>
+; V01 arg1 [V01 ] ( 1, 1 ) ushort -> [fp+0x34] do-not-enreg[]
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [fp+0x30] do-not-enreg[]
+; V03 arg3 [V03 ] ( 1, 1 ) byref -> [fp+0x28] do-not-enreg[]
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[] "Cast away GC"
-; V06 tmp2 [V06 ] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) int -> [fp+0x18] do-not-enreg[] "argument with side effect"
+; V05 tmp1 [V05 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[] "Cast away GC"
+; V06 tmp2 [V06 ] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M56677_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x40]!
mov fp, sp
- str xzr, [fp, #0x20] // [V07 tmp3]
- str x0, [fp, #0x48] // [V00 arg0]
- str w1, [fp, #0x44] // [V01 arg1]
- str w2, [fp, #0x40] // [V02 arg2]
- str x3, [fp, #0x38] // [V03 arg3]
- ;; size=28 bbWeight=1 PerfScore 6.50
+ str x0, [fp, #0x38] // [V00 arg0]
+ str w1, [fp, #0x34] // [V01 arg1]
+ str w2, [fp, #0x30] // [V02 arg2]
+ str x3, [fp, #0x28] // [V03 arg3]
+ ;; size=24 bbWeight=1 PerfScore 5.50
G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x4, [fp, #0x48] // [V00 arg0]
- ; gcrRegs +[x4]
- str x4, [fp, #0x20] // [V07 tmp3]
- ldr w4, [fp, #0x44] // [V01 arg1]
- ; gcrRegs -[x4]
- uxth w4, w4
- str w4, [fp, #0x1C] // [V08 tmp4]
- ldr w4, [fp, #0x40] // [V02 arg2]
- str w4, [fp, #0x18] // [V09 tmp5]
- ldr x4, [fp, #0x38] // [V03 arg3]
+ ldr x4, [fp, #0x28] // [V03 arg3]
; byrRegs +[x4]
- str x4, [fp, #0x30] // [V05 tmp1]
- ldr x4, [fp, #0x30] // [V05 tmp1]
+ str x4, [fp, #0x20] // [V05 tmp1]
+ ldr x4, [fp, #0x20] // [V05 tmp1]
; byrRegs -[x4]
- str x4, [fp, #0x28] // [V06 tmp2]
- ldr x4, [fp, #0x28] // [V06 tmp2]
- ldr x1, [fp, #0x20] // [V07 tmp3]
+ str x4, [fp, #0x18] // [V06 tmp2]
+ ldr x4, [fp, #0x18] // [V06 tmp2]
+ ldr w2, [fp, #0x34] // [V01 arg1]
+ uxth w2, w2
+ ldr x1, [fp, #0x38] // [V00 arg0]
; gcrRegs +[x1]
- ldr w2, [fp, #0x1C] // [V08 tmp4]
- ldr w3, [fp, #0x18] // [V09 tmp5]
+ ldr w3, [fp, #0x30] // [V02 arg2]
movz x0, #0xD1FFAB1E // code for <unknown method>
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -57,13 +45,13 @@ G_M56677_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x5, [x5]
blr x5
; gcrRegs -[x1]
- ;; size=92 bbWeight=1 PerfScore 30.50
+ ;; size=68 bbWeight=1 PerfScore 21.50
G_M56677_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x40
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 128, prolog size 12, PerfScore 39.00, instruction count 32, allocated bytes for code 128 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
+; Total bytes of code 100, prolog size 8, PerfScore 29.00, instruction count 25, allocated bytes for code 100 (MethodHash=eeac229a) for method System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
; ============================================================
Unwind Info:
@@ -74,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ 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)
@@ -82,7 +70,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
+ 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+8 (+1.57%) : 19052.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher
1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)@@ -9,28 +9,28 @@
; 0 inlinees with PGO data; 9 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T05] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
+; V00 this [V00,T04] ( 8, 52 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
-; V02 arg2 [V02,T25] ( 4, 3 ) byref -> [fp+0xA8] EH-live single-def tier0-frame
+; V02 arg2 [V02,T25] ( 4, 3 ) byref -> [fp+0xB8] EH-live single-def tier0-frame
; V03 arg3 [V03,T19] ( 3, 10 ) int -> x21 single-def
-; V04 arg4 [V04,T09] ( 6, 32 ) byref -> x20 single-def
+; V04 arg4 [V04,T08] ( 6, 32 ) byref -> x20 single-def
; V05 arg5 [V05,T22] ( 3, 4 ) byref -> x23 single-def
-; V06 loc0 [V06,T11] ( 7, 27 ) int -> [fp+0x8C] do-not-enreg[Z] EH-live tier0-frame
-; V07 loc1 [V07,T15] ( 3, 20 ) ubyte -> x25
+; V06 loc0 [V06,T13] ( 6, 23 ) int -> [fp+0x9C] do-not-enreg[Z] EH-live tier0-frame
+; V07 loc1 [V07,T14] ( 3, 20 ) ubyte -> x25
;* V08 loc2 [V08 ] ( 0, 0 ) int -> zero-ref
; V09 loc3 [V09,T28] ( 3, 2 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T12] ( 4, 24 ) int -> x2 "Inline return value spill temp"
-; V12 tmp2 [V12,T08] ( 3, 36 ) int -> x0 "Inlining Arg"
+; V11 tmp1 [V11,T10] ( 4, 24 ) int -> x2 "Inline return value spill temp"
+; V12 tmp2 [V12,T07] ( 3, 36 ) int -> x0 "Inlining Arg"
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
; V14 tmp4 [V14,T24] ( 3, 6 ) int -> x2 "Inline return value spill temp"
; V15 tmp5 [V15,T18] ( 3, 12 ) ref -> x1 class-hnd exact "Inlining Arg" <System.Text.RegularExpressions.Symbolic.MintermClassifier>
-; V16 tmp6 [V16,T23] ( 3, 6 ) ref -> x26 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V16 tmp6 [V16,T23] ( 3, 6 ) ref -> x27 class-hnd "Inline stloc first use temp" <<unknown class>>
; V17 tmp7 [V17,T16] ( 4, 16 ) int -> x2 "Inlining Arg"
; V18 tmp8 [V18,T17] ( 3, 14 ) ubyte -> x25 "Inline return value spill temp"
-; V19 tmp9 [V19,T10] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
-; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x1 "Inline stloc first use temp"
-; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
+; V19 tmp9 [V19,T09] ( 4, 28 ) int -> x4 "Inline stloc first use temp"
+; V20 tmp10 [V20,T21] ( 3, 10 ) int -> x5 "Inline stloc first use temp"
+; V21 tmp11 [V21 ] ( 3, 36 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]>
;* V24 tmp14 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
@@ -40,38 +40,39 @@
; V28 tmp18 [V28,T20] ( 2, 9 ) int -> x22 single-def "field V01._length (fldOffset=0x8)" P-INDEP
;* V29 tmp19 [V29 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V31 tmp21 [V31,T06] ( 3, 48 ) ref -> x0 "arr expr"
-; V32 tmp22 [V32,T07] ( 3, 48 ) int -> x1 "index expr"
-; V33 tmp23 [V33,T13] ( 3, 24 ) ref -> x1 "arr expr"
-; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x1 "arr expr"
-; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x0 "index expr"
+; V31 tmp21 [V31,T05] ( 3, 48 ) ref -> x0 "arr expr"
+; V32 tmp22 [V32,T06] ( 3, 48 ) int -> x1 "index expr"
+; V33 tmp23 [V33,T11] ( 3, 24 ) ref -> x5 "arr expr"
+; V34 tmp24 [V34,T00] ( 3, 96 ) ref -> x5 "arr expr"
+; V35 tmp25 [V35,T01] ( 3, 96 ) int -> x1 "index expr"
; V36 tmp26 [V36,T03] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V37 tmp27 [V37,T04] ( 2, 64 ) ref -> x1 "argument with side effect"
-; V38 PSPSym [V38,T29] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V39 cse0 [V39,T14] ( 3, 24 ) int -> x0 "CSE - aggressive"
-; V40 cse1 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
+; V37 PSPSym [V37,T29] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V38 cse0 [V38,T12] ( 3, 24 ) int -> x1 "CSE - aggressive"
+; V39 cse1 [V39,T15] ( 3, 20 ) int -> x26 "CSE - aggressive"
+; V40 cse2 [V40,T27] ( 2, 4 ) int -> x0 "CSE - moderate"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M55933_IG01: ; bbWeight=8, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
- stp x25, x26, [sp, #0x50]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ stp x25, x26, [sp, #0x58]
+ str x27, [sp, #0x68]
mov fp, sp
- str xzr, [fp, #0x10] // [V21 tmp11]
- add xip1, sp, #208
- str xip1, [fp, #0x18] // [V38 PSPSym]
- ldr x19, [fp, #0xC0]
+ str xzr, [fp, #0x18] // [V21 tmp11]
+ add xip1, sp, #224
+ str xip1, [fp, #0x20] // [V37 PSPSym]
+ ldr x19, [fp, #0xD0]
; gcrRegs +[x19]
- ldr w21, [fp, #0xA4]
- ldp x23, x20, [fp, #0x90]
+ ldr w21, [fp, #0xB4]
+ ldp x23, x20, [fp, #0xA0]
; byrRegs +[x20 x23]
- ldr x24, [fp, #0xB0]
+ ldr x24, [fp, #0xC0]
; byrRegs +[x24]
- ldr w22, [fp, #0xB8]
- ;; size=56 bbWeight=8 PerfScore 152.00
+ ldr w22, [fp, #0xC8]
+ ;; size=60 bbWeight=8 PerfScore 160.00
G_M55933_IG02: ; bbWeight=8, gcVars=0000000002000000 {V02}, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, gcvars, byref, isz
; GC ptr vars +{V02}
ldr x0, [x19, #0x18]
@@ -84,19 +85,20 @@ G_M55933_IG02: ; bbWeight=8, gcVars=0000000002000000 {V02}, gcrefRegs=800
; gcrRegs -[x0]
; byrRegs +[x0]
ldrb w25, [x0, w1, UXTW #2]
- ldr w0, [fp, #0x8C] // [V06 loc0]
+ ldr w0, [fp, #0x9C] // [V06 loc0]
; byrRegs -[x0]
- sub w0, w0, #1
+ sub w26, w0, #1
+ sxtw w0, w26
cmp w0, w22
bhs G_M55933_IG13
- ;; size=44 bbWeight=8 PerfScore 144.00
+ ;; size=48 bbWeight=8 PerfScore 148.00
G_M55933_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
ldr x1, [x19, #0x50]
; gcrRegs +[x1]
ldrh w2, [x24, w0, UXTW #2]
- ldr x26, [x1, #0x08]
- ; gcrRegs +[x26]
- ldr w0, [x26, #0x08]
+ ldr x27, [x1, #0x08]
+ ; gcrRegs +[x27]
+ ldr w0, [x27, #0x08]
cmp w0, w2
bhi G_M55933_IG12
ldr x0, [x1, #0x10]
@@ -109,7 +111,7 @@ G_M55933_IG03: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
ldr x2, [x2]
ldr wzr, [x0]
blr x2
- ; gcrRegs -[x0 x26]
+ ; gcrRegs -[x0 x27]
; gcr arg pop 0
sxtw w2, w0
;; size=60 bbWeight=2 PerfScore 52.00
@@ -117,83 +119,80 @@ G_M55933_IG04: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x2
tbz w25, #2, G_M55933_IG06
;; size=4 bbWeight=8 PerfScore 8.00
G_M55933_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ldr w0, [fp, #0x8C] // [V06 loc0]
- str w0, [x23]
+ ldr w1, [fp, #0x9C] // [V06 loc0]
+ str w1, [x23]
;; size=8 bbWeight=2 PerfScore 6.00
G_M55933_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- ldr w0, [fp, #0x8C] // [V06 loc0]
- cmp w0, w21
+ ldr w1, [fp, #0x9C] // [V06 loc0]
+ cmp w1, w21
ble G_M55933_IG16
;; size=12 bbWeight=8 PerfScore 28.00
G_M55933_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
tbnz w25, #1, G_M55933_IG16
- ldr w0, [x20, #0x08]
- ldr w1, [x19, #0xA4]
- lsl w1, w0, w1
- orr w4, w1, w2
- ldr x1, [x19, #0x20]
- ; gcrRegs +[x1]
- ldr w5, [x1, #0x08]
- cmp w4, w5
+ ldr w1, [x20, #0x08]
+ ldr w5, [x19, #0xA4]
+ lsl w5, w1, w5
+ orr w4, w5, w2
+ ldr x5, [x19, #0x20]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w4, w0
bhs G_M55933_IG11
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr w1, [x1, w4, UXTW #2]
- ; byrRegs -[x1]
- cmp w1, #0
+ add x5, x5, #16
+ ; gcrRegs -[x5]
+ ; byrRegs +[x5]
+ ldr w5, [x5, w4, UXTW #2]
+ ; byrRegs -[x5]
+ cmp w5, #0
ble G_M55933_IG14
;; size=52 bbWeight=4 PerfScore 82.00
G_M55933_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- str w1, [x20, #0x08]
+ str w5, [x20, #0x08]
;; size=4 bbWeight=2 PerfScore 2.00
G_M55933_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
mov w25, #1
;; size=4 bbWeight=8 PerfScore 4.00
G_M55933_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- str xzr, [fp, #0x10] // [V21 tmp11]
+ str xzr, [fp, #0x18] // [V21 tmp11]
cbz w25, G_M55933_IG17
- ldr w0, [fp, #0x8C] // [V06 loc0]
- sub w0, w0, #1
- str w0, [fp, #0x8C] // [V06 loc0]
+ str w26, [fp, #0x9C] // [V06 loc0]
b G_M55933_IG02
- ;; size=24 bbWeight=4 PerfScore 26.00
+ ;; size=16 bbWeight=4 PerfScore 16.00
G_M55933_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x20 x23-x24]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M55933_IG12: ; bbWeight=2, gcrefRegs=4080000 {x19 x26}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs +[x19 x26]
+G_M55933_IG12: ; bbWeight=2, gcrefRegs=8080000 {x19 x27}, byrefRegs=1900000 {x20 x23 x24}, byref
+ ; gcrRegs +[x19 x27]
; byrRegs +[x20 x23-x24]
- add x0, x26, #16
- ; byrRegs +[x0]
- ldr w2, [x0, w2, UXTW #2]
+ add x1, x27, #16
+ ; byrRegs +[x1]
+ ldr w2, [x1, w2, UXTW #2]
b G_M55933_IG04
;; size=12 bbWeight=2 PerfScore 9.00
G_M55933_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref
- ; gcrRegs -[x26]
- ; byrRegs -[x0]
+ ; gcrRegs -[x27]
+ ; byrRegs -[x1]
movn w2, #0
b G_M55933_IG04
;; size=8 bbWeight=2 PerfScore 3.00
G_M55933_IG14: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=1900000 {x20 x23 x24}, byref, isz
- mov x1, x19
- ; gcrRegs +[x1]
- ldr x1, [x1, #0x10]
- ldr w5, [x1, #0x08]
- cmp w0, w5
+ ldr x5, [x19, #0x10]
+ ; gcrRegs +[x5]
+ ldr w0, [x5, #0x08]
+ cmp w1, w0
bhs G_M55933_IG11
- add x1, x1, #16
- ; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x1, [x1, w0, UXTW #3]
+ add x5, x5, #16
...
+12 (+2.86%) : 15664.dasm - System.Globalization.TextInfo:ChangeCaseCommonSystem.Globalization.TextInfo+ToUpperConversion:this (Tier1)
@@ -8,10 +8,10 @@
; 0 inlinees with PGO data; 26 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 7, 4.50) ref -> x19 this class-hnd single-def <System.Globalization.TextInfo>
+; V00 this [V00,T01] ( 7, 4.50) ref -> x20 this class-hnd single-def <System.Globalization.TextInfo>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-;* V03 loc0 [V03,T22] ( 0, 0 ) ubyte -> zero-ref
+;* V03 loc0 [V03,T21] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04 ] ( 5, 2.50) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
@@ -60,7 +60,7 @@
;* V49 tmp39 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp40 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp41 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V52 tmp42 [V52,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V52 tmp42 [V52,T22] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V53 tmp43 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp44 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp45 [V55 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
@@ -69,13 +69,13 @@
;* V58 tmp48 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V59 tmp49 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V60 tmp50 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V61 tmp51 [V61,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V61 tmp51 [V61,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp52 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V63 tmp53 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V64 tmp54 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V65 tmp55 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V66 tmp56 [V66,T02] ( 4, 2.50) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V67 tmp57 [V67,T01] ( 5, 3.50) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V67 tmp57 [V67,T00] ( 5, 3.50) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V68 tmp58 [V68,T03] ( 4, 2.50) byref -> x22 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V69 tmp59 [V69,T04] ( 4, 2.50) int -> x23 single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V70 tmp60 [V70 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP
@@ -98,35 +98,34 @@
;* V87 tmp77 [V87 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V88 tmp78 [V88 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
;* V89 tmp79 [V89 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-;* V90 tmp80 [V90,T16] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
-;* V91 tmp81 [V91,T25] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
-;* V92 tmp82 [V92,T17] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
-;* V93 tmp83 [V93,T26] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
+;* V90 tmp80 [V90,T15] ( 0, 0 ) byref -> zero-ref single-def "field V44._reference (fldOffset=0x0)" P-INDEP
+;* V91 tmp81 [V91,T24] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
+;* V92 tmp82 [V92,T16] ( 0, 0 ) byref -> zero-ref single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V93 tmp83 [V93,T25] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
;* V94 tmp84 [V94 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp85 [V95 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-;* V96 tmp86 [V96,T18] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;* V96 tmp86 [V96,T17] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp87 [V97 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-;* V98 tmp88 [V98,T19] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
-;* V99 tmp89 [V99,T27] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
+;* V98 tmp88 [V98,T18] ( 0, 0 ) byref -> zero-ref single-def "field V53._reference (fldOffset=0x0)" P-INDEP
+;* V99 tmp89 [V99,T26] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
;* V100 tmp90 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp91 [V101 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
-;* V102 tmp92 [V102,T20] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+;* V102 tmp92 [V102,T19] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V103 tmp93 [V103 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-;* V104 tmp94 [V104,T21] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
-;* V105 tmp95 [V105,T28] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+;* V104 tmp94 [V104,T20] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V105 tmp95 [V105,T27] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
;* V106 tmp96 [V106 ] ( 0, 0 ) byref -> zero-ref single-def "field V64._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp97 [V107 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP
;* V108 tmp98 [V108 ] ( 0, 0 ) byref -> zero-ref single-def "field V65._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp99 [V109 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
; V110 tmp100 [V110,T05] ( 2, 2 ) long -> x21 "Cast away GC"
; V111 tmp101 [V111,T06] ( 2, 2 ) long -> x22 "Cast away GC"
-;* V112 tmp102 [V112,T15] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V113 tmp103 [V113,T07] ( 2, 2 ) long -> x1 "argument with side effect"
-; V114 tmp104 [V114,T08] ( 2, 2 ) int -> x2 "argument with side effect"
-; V115 tmp105 [V115,T09] ( 2, 2 ) long -> x3 "argument with side effect"
-; V116 cse0 [V116,T13] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V117 cse1 [V117,T14] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V118 cse2 [V118,T10] ( 3, 1.50) ref -> x1 "CSE - moderate"
+; V112 tmp102 [V112,T07] ( 2, 2 ) long -> x2 "argument with side effect"
+; V113 tmp103 [V113,T08] ( 2, 2 ) int -> x3 "argument with side effect"
+; V114 tmp104 [V114,T09] ( 2, 2 ) long -> x4 "argument with side effect"
+; V115 cse0 [V115,T13] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V116 cse1 [V116,T14] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V117 cse2 [V117,T10] ( 3, 1.50) ref -> x1 "CSE - moderate"
;
; Lcl frame size = 24
@@ -137,20 +136,20 @@ G_M14148_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
str x23, [sp, #0x48]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V09 loc6], [V07 loc4]
- mov x19, x0
- ; gcrRegs +[x19]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov x21, x1
; byrRegs +[x21]
- mov w20, w2
+ mov w19, w2
mov x22, x3
; byrRegs +[x22]
mov w23, w4
;; size=44 bbWeight=1 PerfScore 8.00
-G_M14148_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- cbnz w20, G_M14148_IG04
+G_M14148_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ cbnz w19, G_M14148_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M14148_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -158,13 +157,13 @@ G_M14148_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
str wzr, [fp, #0x20] // [V04 loc1]
- ldrb w0, [x19, #0x31]
+ ldrb w0, [x20, #0x31]
cbnz w0, G_M14148_IG05
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for <unknown method>
movk x1, #0xD1FFAB1E LSL #16
@@ -173,8 +172,8 @@ G_M14148_IG04: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800
blr x1
; gcrRegs -[x0]
;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x31]
+G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x31]
cmp w0, #2
beq G_M14148_IG06
cmp w0, #1
@@ -193,11 +192,11 @@ G_M14148_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
blr x2
; gcrRegs -[x0]
;; size=64 bbWeight=0.50 PerfScore 7.25
-G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x31]
+G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x31]
cmp w0, #2
bne G_M14148_IG08
- cmp w20, #0
+ cmp w19, #0
cset x0, ge
movz x1, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte)
movk x1, #0xD1FFAB1E LSL #16
@@ -213,7 +212,7 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
blr x1
mov x0, x21
; byrRegs +[x0]
- mov w1, w20
+ mov w1, w19
mov x2, x22
; byrRegs +[x2]
mov w3, w23
@@ -233,7 +232,7 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
;; size=144 bbWeight=0.50 PerfScore 16.75
G_M14148_IG07: ; bbWeight=0.50, epilog, nogc, extend
@@ -243,30 +242,33 @@ G_M14148_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M14148_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref
- ; gcrRegs +[x19]
+G_M14148_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
stp x22, x21, [fp, #0x10] // [V09 loc6], [V07 loc4]
- ldr w0, [fp, #0x20] // [V04 loc1]
- sbfiz x0, x0, #1, #32
- add x1, x21, x0
- ldr w2, [fp, #0x20] // [V04 loc1]
- sub w2, w20, w2
- add x3, x22, x0
- mov x0, x19
- ; gcrRegs +[x0]
+ ldr w1, [fp, #0x20] // [V04 loc1]
+ sbfiz x1, x1, #1, #32
+ add x2, x21, x1
+ ldr w3, [fp, #0x20] // [V04 loc1]
+ sub w3, w19, w3
+ add x4, x22, x1
+ mov x1, x2
+ mov w2, w3
+ mov x3, x4
ldr w4, [fp, #0x20] // [V04 loc1]
sub w4, w23, w4
+ mov x0, x20
+ ; gcrRegs +[x0]
mov w5, #1
movz x6, #0xD1FFAB1E // code for System.Globalization.TextInfo:ChangeCaseCore(ulong,int,ulong,int,ubyte):this
movk x6, #0xD1FFAB1E LSL #16
movk x6, #0xD1FFAB1E LSL #32
ldr x6, [x6]
blr x6
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0 x20]
; byrRegs -[x21-x22]
stp xzr, xzr, [fp, #0x10] // [V09 loc6], [V07 loc4]
- ;; size=68 bbWeight=0.50 PerfScore 8.75
+ ;; size=80 bbWeight=0.50 PerfScore 9.50
G_M14148_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -275,7 +277,7 @@ G_M14148_IG09: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 420, prolog size 24, PerfScore 56.25, instruction count 105, allocated bytes for code 420 (MethodHash=53d9c8bb) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
+; Total bytes of code 432, prolog size 24, PerfScore 57.00, instruction count 108, allocated bytes for code 432 (MethodHash=53d9c8bb) for method System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -286,7 +288,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 105 (0x00069) Actual length = 420 (0x0001a4)
+ Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+4 (+5.88%) : 41468.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M44302_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M44302_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M44302_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M44302_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=a56c52f1) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
coreclr_tests.run.windows.arm64.checked.mch
-44 (-26.83%) : 249914.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
@@ -5,69 +5,52 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
-; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x60] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.BoundTypeExpression>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.SyntaxNode>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol>
+; V03 arg3 [V03 ] ( 1, 1 ) struct ( 8) [fp+0x40] do-not-enreg[S] <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V08 tmp2 [V08 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp3 [V09 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp4 [V10 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp5 [V11 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp1 [V07 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M19554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp xzr, xzr, [x9, #0x20]
- str xzr, [x9, #0x30]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- str x4, [fp, #0x58] // [V04 arg4]
- str w5, [fp, #0x54] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x18] // [V07 tmp1]
+ str xzr, [fp, #0x20] // [V07 tmp1+0x08]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ str x4, [fp, #0x38] // [V04 arg4]
+ str w5, [fp, #0x34] // [V05 arg5]
+ ;; size=40 bbWeight=1 PerfScore 9.50
G_M19554_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V08 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x28] // [V09 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x20] // [V10 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x18] // [V11 tmp5]
- ldr x0, [fp, #0x58] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=36 bbWeight=1 PerfScore 14.00
+ ldr x5, [fp, #0x38] // [V04 arg4]
+ ; byrRegs +[x5]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M19554_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x1, x6, [x5]
+ stp x1, x6, [fp, #0x18]
+ ldr x1, [x5, #0x10]
+ str x1, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M19554_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V08 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V09 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V10 tmp4]
- ; gcrRegs +[x2]
- ldr x4, [fp, #0x18] // [V11 tmp5]
- ; gcrRegs +[x4]
- add x5, fp, #56 // [V07 tmp1]
- ldr w6, [fp, #0x54] // [V05 arg5]
+ add x5, fp, #24 // [V07 tmp1]
+ ; byrRegs -[x5]
+ ldr w6, [fp, #0x34] // [V05 arg5]
uxtb w6, w6
+ ldr x1, [fp, #0x50] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x48] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x4, [fp, #0x40] // [V03 arg3]
+ ; gcrRegs +[x4]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
mov x3, xzr
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -77,11 +60,11 @@ G_M19554_IG04: ; bbWeight=1, extend
; gcrRegs -[x0-x2 x4]
;; size=52 bbWeight=1 PerfScore 17.00
G_M19554_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 164, prolog size 28, PerfScore 53.50, instruction count 41, allocated bytes for code 164 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
+; Total bytes of code 120, prolog size 16, PerfScore 39.50, instruction count 30, allocated bytes for code 120 (MethodHash=3db3b39d) for method Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -92,7 +75,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)
@@ -100,7 +83,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-48 (-22.22%) : 249862.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
@@ -5,80 +5,59 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x80] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
-; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x68] do-not-enreg[]
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
-; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
-; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x54] do-not-enreg[]
-; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x90] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Symbol>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax>
+; V04 arg4 [V04 ] ( 1, 1 ) byref -> [fp+0x48] do-not-enreg[]
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax>
+; V06 arg6 [V06 ] ( 1, 1 ) ref -> [fp+0x38] do-not-enreg[] class-hnd <Microsoft.CodeAnalysis.CSharp.Binder>
+; V07 arg7 [V07 ] ( 1, 1 ) ubyte -> [fp+0x34] do-not-enreg[]
+; V08 arg8 [V08 ] ( 1, 1 ) ubyte -> [fp+0x70] do-not-enreg[]
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [fp+0x1C] do-not-enreg[] "argument with side effect"
-; V15 tmp6 [V15 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V10 tmp1 [V10 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.SyntaxToken>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M62552_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str x0, [fp, #0x88] // [V00 this]
- str x1, [fp, #0x80] // [V01 arg1]
- str x2, [fp, #0x78] // [V02 arg2]
- str x3, [fp, #0x70] // [V03 arg3]
- str x4, [fp, #0x68] // [V04 arg4]
- str x5, [fp, #0x60] // [V05 arg5]
- str x6, [fp, #0x58] // [V06 arg6]
- str w7, [fp, #0x54] // [V07 arg7]
- ;; size=56 bbWeight=1 PerfScore 12.50
+ str xzr, [fp, #0x18] // [V10 tmp1]
+ str xzr, [fp, #0x20] // [V10 tmp1+0x08]
+ str x0, [fp, #0x68] // [V00 this]
+ str x1, [fp, #0x60] // [V01 arg1]
+ str x2, [fp, #0x58] // [V02 arg2]
+ str x3, [fp, #0x50] // [V03 arg3]
+ str x4, [fp, #0x48] // [V04 arg4]
+ str x5, [fp, #0x40] // [V05 arg5]
+ str x6, [fp, #0x38] // [V06 arg6]
+ str w7, [fp, #0x34] // [V07 arg7]
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M62552_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V11 tmp2]
- ldr x0, [fp, #0x80] // [V01 arg1]
- str x0, [fp, #0x28] // [V12 tmp3]
- ldr x0, [fp, #0x78] // [V02 arg2]
- str x0, [fp, #0x20] // [V13 tmp4]
- ldr w0, [fp, #0x90] // [V08 arg8]
- ; gcrRegs -[x0]
- uxtb w0, w0
- str w0, [fp, #0x1C] // [V14 tmp5]
- ldr x0, [fp, #0x70] // [V03 arg3]
- ; gcrRegs +[x0]
- str x0, [fp, #0x10] // [V15 tmp6]
- ldr x0, [fp, #0x68] // [V04 arg4]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 17.50
+ ldr x6, [fp, #0x48] // [V04 arg4]
+ ; byrRegs +[x6]
+ ;; size=4 bbWeight=1 PerfScore 2.00
G_M62552_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x38]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x48]
+ ldp x4, x7, [x6]
+ stp x4, x7, [fp, #0x18]
+ ldr x4, [x6, #0x10]
+ str x4, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M62552_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x30] // [V11 tmp2]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x28] // [V12 tmp3]
- ; gcrRegs +[x1]
- ldr x2, [fp, #0x20] // [V13 tmp4]
- ; gcrRegs +[x2]
- ldr w4, [fp, #0x1C] // [V14 tmp5]
- ldr x5, [fp, #0x10] // [V15 tmp6]
- ; gcrRegs +[x5]
- add x6, fp, #56 // [V10 tmp1]
- ldr w7, [fp, #0x54] // [V07 arg7]
+ add x6, fp, #24 // [V10 tmp1]
+ ; byrRegs -[x6]
+ ldr w7, [fp, #0x34] // [V07 arg7]
uxtb w7, w7
+ ldr w4, [fp, #0x70] // [V08 arg8]
+ uxtb w4, w4
+ ldr x1, [fp, #0x60] // [V01 arg1]
+ ; gcrRegs +[x1]
+ ldr x2, [fp, #0x58] // [V02 arg2]
+ ; gcrRegs +[x2]
+ ldr x5, [fp, #0x50] // [V03 arg3]
+ ; gcrRegs +[x5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
mov w3, #1
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
@@ -86,33 +65,33 @@ G_M62552_IG04: ; bbWeight=1, extend
ldr x8, [x8]
blr x8
; gcrRegs -[x0-x2 x5]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #80
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x60] // [V05 arg5]
+ ldr x15, [fp, #0x40] // [V05 arg5]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ldr x14, [fp, #0x88] // [V00 this]
+ ldr x14, [fp, #0x68] // [V00 this]
; gcrRegs +[x14]
add x14, x14, #88
; gcrRegs -[x14]
; byrRegs +[x14]
- ldr x15, [fp, #0x58] // [V06 arg6]
+ ldr x15, [fp, #0x38] // [V06 arg6]
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x14]
- ;; size=88 bbWeight=1 PerfScore 30.00
+ ;; size=92 bbWeight=1 PerfScore 30.50
G_M62552_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 216, prolog size 24, PerfScore 71.00, instruction count 54, allocated bytes for code 216 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
+; Total bytes of code 168, prolog size 16, PerfScore 55.00, instruction count 42, allocated bytes for code 168 (MethodHash=9edc0ba7) for method Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
; ============================================================
Unwind Info:
@@ -123,7 +102,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ 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)
@@ -131,7 +110,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
-36 (-18.75%) : 245916.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo
1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo1[System.__Canon]):this (Tier0)@@ -5,83 +5,66 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) byref -> [fp+0x70] do-not-enreg[] this
-; V01 TypeCtx [V01 ] ( 1, 1 ) long -> [fp+0x68] do-not-enreg[]
-; V02 arg1 [V02 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.__Canon>
-; V03 arg2 [V03 ] ( 1, 1 ) byref -> [fp+0x58] do-not-enreg[]
+; V00 this [V00 ] ( 1, 1 ) byref -> [fp+0x50] do-not-enreg[] this
+; V01 TypeCtx [V01 ] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[]
+; V02 arg1 [V02 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.__Canon>
+; V03 arg2 [V03 ] ( 1, 1 ) byref -> [fp+0x38] do-not-enreg[]
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05 ] ( 1, 1 ) struct (24) [fp+0x40] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]>
-; V06 tmp2 [V06 ] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[] "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[] "argument with side effect"
-; V10 tmp6 [V10 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V11 tmp7 [V11 ] ( 1, 1 ) byref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V05 tmp1 [V05 ] ( 1, 1 ) struct (24) [fp+0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]>
+; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M24759_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
add x9, fp, #16
movi v16.16b, #0
stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- str xzr, [x9, #0x40]
- str x1, [fp, #0x78]
- str x0, [fp, #0x70] // [V00 this]
- str x1, [fp, #0x68] // [V01 TypeCtx]
- str x2, [fp, #0x60] // [V02 arg1]
- str x3, [fp, #0x58] // [V03 arg2]
- ;; size=48 bbWeight=1 PerfScore 10.50
+ str xzr, [x9, #0x20]
+ str x1, [fp, #0x58]
+ str x0, [fp, #0x50] // [V00 this]
+ str x1, [fp, #0x48] // [V01 TypeCtx]
+ str x2, [fp, #0x40] // [V02 arg1]
+ str x3, [fp, #0x38] // [V03 arg2]
+ ;; size=44 bbWeight=1 PerfScore 9.50
G_M24759_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x70] // [V00 this]
- ; byrRegs +[x0]
- str x0, [fp, #0x10] // [V11 tmp7]
- ldr x0, [fp, #0x68] // [V01 TypeCtx]
- ; byrRegs -[x0]
- str x0, [fp, #0x20] // [V09 tmp5]
- ldr x0, [fp, #0x58] // [V03 arg2]
- ; byrRegs +[x0]
- ldr x0, [x0]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- str x0, [fp, #0x18] // [V10 tmp6]
- ldr x0, [fp, #0x68] // [V01 TypeCtx]
- ; gcrRegs -[x0]
- str x0, [fp, #0x38] // [V06 tmp2]
- ldr x0, [fp, #0x60] // [V02 arg1]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V07 tmp3]
- ldr x0, [fp, #0x58] // [V03 arg2]
- ; gcrRegs -[x0]
- ; byrRegs +[x0]
- ;; size=48 bbWeight=1 PerfScore 20.00
+ ldr x2, [fp, #0x38] // [V03 arg2]
+ ; byrRegs +[x2]
+ ldr x2, [x2]
+ ; gcrRegs +[x2]
+ ; byrRegs -[x2]
+ str x2, [fp, #0x10] // [V07 tmp3]
+ ldr x2, [fp, #0x38] // [V03 arg2]
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ;; size=16 bbWeight=1 PerfScore 8.00
G_M24759_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x2, [x0]
- stp x1, x2, [fp, #0x40]
- ldr x1, [x0, #0x10]
- str x1, [fp, #0x50]
+ ldp x0, x1, [x2]
+ stp x0, x1, [fp, #0x20]
+ ldr x0, [x2, #0x10]
+ str x0, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 9.00
G_M24759_IG04: ; bbWeight=1, extend
- ldr x0, [fp, #0x38] // [V06 tmp2]
- ; byrRegs -[x0]
- ldr x1, [fp, #0x30] // [V07 tmp3]
+ add x2, fp, #32 // [V05 tmp1]
+ ; byrRegs -[x2]
+ ldr x1, [fp, #0x40] // [V02 arg1]
; gcrRegs +[x1]
- add x2, fp, #64 // [V05 tmp1]
+ ldr x0, [fp, #0x48] // [V01 TypeCtx]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs -[x1] +[x0]
- str x0, [fp, #0x28] // [V08 tmp4]
- ldr x3, [fp, #0x28] // [V08 tmp4]
+ str x0, [fp, #0x18] // [V06 tmp2]
+ ldr x3, [fp, #0x18] // [V06 tmp2]
; gcrRegs +[x3]
- ldr x1, [fp, #0x20] // [V09 tmp5]
- ldr x2, [fp, #0x18] // [V10 tmp6]
+ ldr x2, [fp, #0x10] // [V07 tmp3]
; gcrRegs +[x2]
- ldr x0, [fp, #0x10] // [V11 tmp7]
+ ldr x1, [fp, #0x48] // [V01 TypeCtx]
+ ldr x0, [fp, #0x50] // [V00 this]
; gcrRegs -[x0]
; byrRegs +[x0]
movz x4, #0xD1FFAB1E // code for <unknown method>
@@ -93,11 +76,11 @@ G_M24759_IG04: ; bbWeight=1, extend
; byrRegs -[x0]
;; size=72 bbWeight=1 PerfScore 24.50
G_M24759_IG05: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 192, prolog size 32, PerfScore 66.00, instruction count 48, allocated bytes for code 192 (MethodHash=6e259f48) for method Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
+; Total bytes of code 156, prolog size 28, PerfScore 53.00, instruction count 39, allocated bytes for code 156 (MethodHash=6e259f48) for method Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
; ============================================================
Unwind Info:
@@ -108,7 +91,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -116,7 +99,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
+4 (+9.09%) : 515246.dasm - (dynamicClass):ABIStress_TailCaller940(short,ubyte,ABIStress.S2P,float,double,ABIStress.S4P,ABIStress.S1P,int):int (FullOpts)
@@ -18,31 +18,30 @@
;* V07 arg7 [V07 ] ( 0, 0 ) int -> zero-ref single-def
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V10 tmp2 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V11 tmp3 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V12 tmp4 [V12,T02] ( 2, 2 ) short -> x2 single-def "field V02.F0 (fldOffset=0x0)" P-INDEP
-; V13 tmp5 [V13,T05] ( 1, 1 ) int -> x3 single-def "field V05.F0 (fldOffset=0x0)" P-INDEP
-; V14 tmp6 [V14,T06] ( 1, 1 ) ubyte -> x4 single-def "field V06.F0 (fldOffset=0x0)" P-INDEP
-;* V15 tmp7 [V15,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V09.F0 (fldOffset=0x0)" P-INDEP
-;* V16 tmp8 [V16,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V09.F1 (fldOffset=0x1)" P-INDEP
+;* V10 tmp2 [V10,T05] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V11 tmp3 [V11,T06] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V12 tmp4 [V12,T02] ( 2, 2 ) short -> x0 single-def "field V02.F0 (fldOffset=0x0)" P-INDEP
+; V13 tmp5 [V13,T03] ( 1, 1 ) int -> x3 single-def "field V05.F0 (fldOffset=0x0)" P-INDEP
+; V14 tmp6 [V14,T04] ( 1, 1 ) ubyte -> x4 single-def "field V06.F0 (fldOffset=0x0)" P-INDEP
+;* V15 tmp7 [V15,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V09.F0 (fldOffset=0x0)" P-INDEP
+;* V16 tmp8 [V16,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V09.F1 (fldOffset=0x1)" P-INDEP
; V17 tmp9 [V17,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V18 tmp10 [V18,T03] ( 2, 4 ) int -> x0 "argument with side effect"
-; V19 tmp11 [V19,T04] ( 2, 4 ) int -> x1 "argument with side effect"
;
; Lcl frame size = 16
G_M24152_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w0, w2
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M24152_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- sxth w0, w2
- uxtb w1, w1
mov w2, #125
strb w2, [fp, #0x18] // [V17 tmp9]
mov w2, #152
strb w2, [fp, #0x19] // [V17 tmp9+0x01]
ldrh w2, [fp, #0x18] // [V17 tmp9]
+ uxtb w1, w1
+ sxth w0, w0
;; size=28 bbWeight=1 PerfScore 6.00
G_M24152_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
@@ -50,7 +49,7 @@ G_M24152_IG03: ; bbWeight=1, epilog, nogc, extend
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 44, prolog size 8, PerfScore 9.50, instruction count 11, allocated bytes for code 44 (MethodHash=9486a1a7) for method (dynamicClass):ABIStress_TailCaller940(short,ubyte,ABIStress.S2P,float,double,ABIStress.S4P,ABIStress.S1P,int):int (FullOpts)
+; Total bytes of code 48, prolog size 12, PerfScore 10.00, instruction count 12, allocated bytes for code 48 (MethodHash=9486a1a7) for method (dynamicClass):ABIStress_TailCaller940(short,ubyte,ABIStress.S2P,float,double,ABIStress.S4P,ABIStress.S1P,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -61,7 +60,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+20 (+9.26%) : 486609.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.DynamicVariantExtensions:SetAsByrefVariantIndirect(byref,byref) (FullOpts)
@@ -8,30 +8,26 @@
; 4 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 6, 4 ) byref -> x8 single-def
-; V01 arg1 [V01,T00] ( 8, 5.50) byref -> x2 single-def
+; V00 arg0 [V00,T01] ( 6, 4 ) byref -> [fp+0x10] single-def
+; V01 arg1 [V01,T00] ( 8, 5.50) byref -> x8 single-def
; V02 loc0 [V02,T03] ( 4, 3 ) int -> x1
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T07] ( 2, 2 ) int -> x0 "impAppendStmt"
-; V05 tmp2 [V05,T08] ( 2, 2 ) int -> x0 "impAppendStmt"
-;* V06 tmp3 [V06,T17] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V07 tmp4 [V07,T19] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-;* V08 tmp5 [V08,T18] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V09 tmp6 [V09,T20] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp7 [V10,T09] ( 2, 2 ) long -> x1 "Cast away GC"
-; V11 tmp8 [V11,T04] ( 2, 2 ) byref -> x8 single-def "argument with side effect"
-; V12 tmp9 [V12,T10] ( 2, 2 ) long -> x1 "argument with side effect"
-; V13 tmp10 [V13,T11] ( 2, 2 ) long -> x1 "Cast away GC"
-; V14 tmp11 [V14,T05] ( 2, 2 ) byref -> x8 single-def "argument with side effect"
-; V15 tmp12 [V15,T12] ( 2, 2 ) int -> x0 "argument with side effect"
-; V16 tmp13 [V16,T13] ( 2, 2 ) long -> x1 "argument with side effect"
-;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-;* V18 tmp15 [V18 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V19 tmp16 [V19,T14] ( 2, 2 ) long -> x1 "Cast away GC"
-; V20 tmp17 [V20,T06] ( 2, 2 ) byref -> x8 single-def "argument with side effect"
-; V21 tmp18 [V21,T15] ( 2, 2 ) int -> x0 "argument with side effect"
-; V22 tmp19 [V22,T16] ( 2, 2 ) long -> x1 "argument with side effect"
-; V23 cse0 [V23,T02] ( 5, 3.50) int -> x19 "CSE - aggressive"
+; V04 tmp1 [V04,T04] ( 2, 2 ) int -> x0 "impAppendStmt"
+; V05 tmp2 [V05,T05] ( 2, 2 ) int -> x0 "impAppendStmt"
+;* V06 tmp3 [V06,T13] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V07 tmp4 [V07,T15] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V08 tmp5 [V08,T14] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V09 tmp6 [V09,T16] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+; V10 tmp7 [V10,T06] ( 2, 2 ) long -> x1 "Cast away GC"
+; V11 tmp8 [V11,T07] ( 2, 2 ) long -> x1 "argument with side effect"
+; V12 tmp9 [V12,T08] ( 2, 2 ) long -> x1 "Cast away GC"
+; V13 tmp10 [V13,T09] ( 2, 2 ) int -> x0 "argument with side effect"
+; V14 tmp11 [V14,T10] ( 2, 2 ) long -> x1 "argument with side effect"
+;* V15 tmp12 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+;* V16 tmp13 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
+; V17 tmp14 [V17,T11] ( 2, 2 ) long -> x1 "Cast away GC"
+; V18 tmp15 [V18,T12] ( 2, 2 ) long -> x1 "argument with side effect"
+; V19 cse0 [V19,T02] ( 5, 3.50) int -> x19 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -39,13 +35,13 @@ G_M63773_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
stp fp, lr, [sp, #-0x20]!
str x19, [sp, #0x18]
mov fp, sp
- mov x8, x0
- ; byrRegs +[x8]
- mov x2, x1
+ mov x2, x0
; byrRegs +[x2]
+ mov x8, x1
+ ; byrRegs +[x8]
;; size=20 bbWeight=1 PerfScore 3.50
G_M63773_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}, byref, isz
- ldrh w19, [x2]
+ ldrh w19, [x8]
sxtw w1, w19
cmp w1, #1
bls G_M63773_IG04
@@ -58,7 +54,8 @@ G_M63773_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}
b G_M63773_IG10
;; size=20 bbWeight=0.50 PerfScore 2.00
G_M63773_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}, byref
- mov x1, x2
+ mov x1, x8
+ mov x8, x2
mov w0, #0xD1FFAB1E
movz x2, #0xD1FFAB1E // code for <unknown method>
; byrRegs -[x2]
@@ -67,7 +64,7 @@ G_M63773_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}
ldr x2, [x2]
blr x2
; byrRegs -[x8]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M63773_IG05: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -75,16 +72,20 @@ G_M63773_IG05: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M63773_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}, gcvars, byref
; byrRegs +[x2 x8]
+ str x2, [fp, #0x10] // [V00 arg0]
+ ; GC ptr vars +{V00}
orr w0, w19, #0xD1FFAB1E
- ldp x1, x2, [x2, #0x08]
+ ldp x1, x2, [x8, #0x08]
; byrRegs -[x2]
+ ldr x8, [fp, #0x10] // [V00 arg0]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
+ ; GC ptr vars -{V00}
blr x3
; byrRegs -[x8]
- ;; size=28 bbWeight=0.50 PerfScore 5.00
+ ;; size=36 bbWeight=0.50 PerfScore 6.50
G_M63773_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -93,7 +94,8 @@ G_M63773_IG07: ; bbWeight=0.50, epilog, nogc, extend
G_M63773_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}, gcvars, byref
; byrRegs +[x2 x8]
orr w0, w19, #0xD1FFAB1E
- mov x1, x2
+ mov x1, x8
+ mov x8, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
; byrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
@@ -101,7 +103,7 @@ G_M63773_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x2, [x2]
blr x2
; byrRegs -[x8]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M63773_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
@@ -110,8 +112,9 @@ G_M63773_IG09: ; bbWeight=0.50, epilog, nogc, extend
G_M63773_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0104 {x2 x8}, gcvars, byref
; byrRegs +[x2 x8]
orr w0, w19, #0xD1FFAB1E
- add x1, x2, #8
+ add x1, x8, #8
; byrRegs +[x1]
+ mov x8, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
; byrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
@@ -119,14 +122,14 @@ G_M63773_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
ldr x2, [x2]
blr x2
; byrRegs -[x1 x8]
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=32 bbWeight=0.50 PerfScore 3.50
G_M63773_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 216, prolog size 12, PerfScore 33.25, instruction count 54, allocated bytes for code 216 (MethodHash=802506e2) for method Microsoft.CSharp.RuntimeBinder.ComInterop.DynamicVariantExtensions:SetAsByrefVariantIndirect(byref,byref) (FullOpts)
+; Total bytes of code 236, prolog size 12, PerfScore 35.50, instruction count 59, allocated bytes for code 236 (MethodHash=802506e2) for method Microsoft.CSharp.RuntimeBinder.ComInterop.DynamicVariantExtensions:SetAsByrefVariantIndirect(byref,byref) (FullOpts)
; ============================================================
Unwind Info:
@@ -137,7 +140,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 54 (0x00036) Actual length = 216 (0x0000d8)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+12.00%) : 515313.dasm - (dynamicClass):ABIStress_TailCaller978(short,ABIStress.S2P,short,ABIStress.S1P,ubyte,double,ABIStress.S8U,ubyte,ABIStress.S4P,ABIStress.S1P,long,short,double,ABIStress.S4U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2P):int (FullOpts)
@@ -10,7 +10,7 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) short -> zero-ref single-def
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S2P>
-; V02 arg2 [V02,T04] ( 3, 3 ) short -> x2 single-def
+; V02 arg2 [V02,T01] ( 3, 3 ) short -> x2 single-def
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
;* V04 arg4 [V04 ] ( 0, 0 ) ubyte -> zero-ref single-def
;* V05 arg5 [V05 ] ( 0, 0 ) double -> zero-ref single-def
@@ -18,77 +18,72 @@
;* V07 arg7 [V07 ] ( 0, 0 ) ubyte -> zero-ref single-def
;* V08 arg8 [V08 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4P>
;* V09 arg9 [V09 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
-; V10 arg10 [V10,T17] ( 1, 1 ) long -> [fp+0x28] single-def
+; V10 arg10 [V10,T10] ( 1, 1 ) long -> [fp+0x28] single-def
;* V11 arg11 [V11 ] ( 0, 0 ) short -> zero-ref single-def
;* V12 arg12 [V12 ] ( 0, 0 ) double -> zero-ref single-def
-; V13 arg13 [V13,T18] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[S] single-def <ABIStress.S4U>
+; V13 arg13 [V13,T11] ( 1, 1 ) struct ( 8) [fp+0x38] do-not-enreg[S] single-def <ABIStress.S4U>
;* V14 arg14 [V14 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S8P>
-; V15 arg15 [V15,T19] ( 1, 1 ) struct ( 8) [fp+0x48] do-not-enreg[S] single-def <ABIStress.S8U>
+; V15 arg15 [V15,T12] ( 1, 1 ) struct ( 8) [fp+0x48] do-not-enreg[S] single-def <ABIStress.S8U>
;* V16 arg16 [V16 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S2P>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
-;* V19 tmp2 [V19,T20] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V20 tmp3 [V20,T21] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V21 tmp4 [V21,T15] ( 1, 1 ) short -> x1 single-def "field V01.F0 (fldOffset=0x0)" P-INDEP
-; V22 tmp5 [V22,T05] ( 2, 2 ) ubyte -> x3 single-def "field V03.F0 (fldOffset=0x0)" P-INDEP
-; V23 tmp6 [V23,T06] ( 2, 2 ) int -> x7 single-def "field V08.F0 (fldOffset=0x0)" P-INDEP
-; V24 tmp7 [V24,T22] ( 1, 1 ) ubyte -> [fp+0x20] single-def "field V09.F0 (fldOffset=0x0)" P-INDEP
-; V25 tmp8 [V25,T23] ( 1, 1 ) long -> [fp+0x40] single-def "field V14.F0 (fldOffset=0x0)" P-INDEP
+;* V19 tmp2 [V19,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V20 tmp3 [V20,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V21 tmp4 [V21,T08] ( 1, 1 ) short -> x1 single-def "field V01.F0 (fldOffset=0x0)" P-INDEP
+; V22 tmp5 [V22,T03] ( 2, 2 ) ubyte -> x4 single-def "field V03.F0 (fldOffset=0x0)" P-INDEP
+; V23 tmp6 [V23,T02] ( 3, 3 ) int -> x7 single-def "field V08.F0 (fldOffset=0x0)" P-INDEP
+; V24 tmp7 [V24,T15] ( 1, 1 ) ubyte -> [fp+0x20] single-def "field V09.F0 (fldOffset=0x0)" P-INDEP
+; V25 tmp8 [V25,T09] ( 2, 2 ) long -> x3 single-def "field V14.F0 (fldOffset=0x0)" P-INDEP
;* V26 tmp9 [V26 ] ( 0, 0 ) short -> zero-ref single-def "field V16.F0 (fldOffset=0x0)" P-INDEP
-;* V27 tmp10 [V27,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
-;* V28 tmp11 [V28,T25] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F1 (fldOffset=0x1)" P-INDEP
+;* V27 tmp10 [V27,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
+;* V28 tmp11 [V28,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.F1 (fldOffset=0x1)" P-INDEP
; V29 tmp12 [V29,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V30 tmp13 [V30,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V31 tmp14 [V31,T08] ( 2, 4 ) int -> x6 "argument with side effect"
-; V32 tmp15 [V32,T09] ( 2, 4 ) long -> x1 "argument with side effect"
-;* V33 tmp16 [V33,T16] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V34 tmp17 [V34,T10] ( 2, 4 ) int -> x4 "argument with side effect"
-; V35 tmp18 [V35,T01] ( 3, 6 ) int -> x5 "argument with side effect"
-; V36 tmp19 [V36,T02] ( 3, 6 ) int -> x6 "argument with side effect"
-; V37 tmp20 [V37,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V38 tmp21 [V38,T12] ( 2, 4 ) long -> x8 "argument with side effect"
-; V39 tmp22 [V39,T03] ( 3, 6 ) long -> x9 "argument with side effect"
-; V40 tmp23 [V40,T13] ( 2, 4 ) int -> x10 "argument with side effect"
-; V41 cse0 [V41,T14] ( 2, 2 ) int -> x5 "CSE - aggressive"
+; V30 cse0 [V30,T07] ( 3, 3 ) int -> x5 "CSE - aggressive"
+; V31 rat0 [V31,T04] ( 2, 4 ) int -> x0 "Fast tail call lowering is creating a new local variable"
+; V32 rat1 [V32,T05] ( 2, 4 ) long -> x8 "Fast tail call lowering is creating a new local variable"
+; V33 rat2 [V33,T06] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S4U>
;
; Lcl frame size = 16
G_M16374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ mov w4, w3
+ ldr x3, [fp, #0x40] // [V25 tmp8]
+ ;; size=16 bbWeight=1 PerfScore 4.00
G_M16374_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr x0, [fp, #0x28] // [V10 arg10]
- sxtw w6, w7
- ldr x1, [fp, #0x40] // [V25 tmp8]
- ldr w5, [fp, #0x38] // [V13 arg13]
- sxtw w4, w3
- ldrb w7, [fp, #0x20] // [V24 tmp7]
- ldr x8, [fp, #0x48] // [V15 arg15]
- mov x9, x1
- sxth w10, w2
+ nop
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M16374_IG03: ; bbWeight=1, nogc, extend
+ ldrb w0, [fp, #0x20] // [V24 tmp7]
+ ldr x8, [fp, #0x28] // [V10 arg10]
+ ldr w1, [fp, #0x38] // [V13 arg13]
+ str w1, [fp, #0x10] // [V33 rat2]
+ ldr x1, [fp, #0x48] // [V15 arg15]
+ stp x1, x3, [fp, #0x20] // [V09 arg9], [V09 arg9+0x08]
+ sxth w1, w2
+ str w1, [fp, #0x30] // [V09 arg9+0x10]
mov w1, #219
strb w1, [fp, #0x18] // [V29 tmp12]
mov w1, #102
strb w1, [fp, #0x19] // [V29 tmp12+0x01]
- mov w1, w6
- mov x2, x9
+ ldrh w1, [fp, #0x18] // [V29 tmp12]
+ str w1, [fp, #0x38] // [V09 arg9+0x18]
+ mov w1, w7
+ mov x2, x3
+ ldr w5, [fp, #0x10] // [V33 rat2]
mov w3, w5
- nop
- ;; size=68 bbWeight=1 PerfScore 17.00
-G_M16374_IG03: ; bbWeight=1, nogc, extend
- stp x8, x9, [fp, #0x20] // [V09 arg9], [V09 arg9+0x08]
- str w10, [fp, #0x30] // [V09 arg9+0x10]
- ldrh w8, [fp, #0x18] // [V29 tmp12]
- str w8, [fp, #0x38] // [V09 arg9+0x18]
- ;; size=16 bbWeight=1 PerfScore 5.00
+ mov w6, w7
+ mov w7, w0
+ mov x0, x8
+ ;; size=84 bbWeight=1 PerfScore 22.50
G_M16374_IG04: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x20
b <unknown method>
; gcr arg pop 0
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 100, prolog size 8, PerfScore 25.50, instruction count 25, allocated bytes for code 100 (MethodHash=347cc009) for method (dynamicClass):ABIStress_TailCaller978(short,ABIStress.S2P,short,ABIStress.S1P,ubyte,double,ABIStress.S8U,ubyte,ABIStress.S4P,ABIStress.S1P,long,short,double,ABIStress.S4U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2P):int (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 29.00, instruction count 28, allocated bytes for code 112 (MethodHash=347cc009) for method (dynamicClass):ABIStress_TailCaller978(short,ABIStress.S2P,short,ABIStress.S1P,ubyte,double,ABIStress.S8U,ubyte,ABIStress.S4P,ABIStress.S1P,long,short,double,ABIStress.S4U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2P):int (FullOpts)
; ============================================================
Unwind Info:
@@ -99,7 +94,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.crossgen2.windows.arm64.checked.mch
-12 (-21.43%) : 82094.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[System.DateTime]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[System.DateTime]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M46195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M46195_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M46195_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-21.43%) : 82119.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[ulong]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[ulong]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M16550_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M16550_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M16550_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=b260bf59) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-21.43%) : 82108.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -11,38 +11,34 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[long]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[long]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M61747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M61747_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x11]
blr x3
; gcrRegs +[x0]
- ;; size=40 bbWeight=1 PerfScore 14.00
+ ;; size=28 bbWeight=1 PerfScore 9.00
G_M61747_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 17.50, instruction count 14, allocated bytes for code 56 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 44, prolog size 8, PerfScore 12.50, instruction count 11, allocated bytes for code 44 (MethodHash=5fc80ecc) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ Function Length : 11 (0x0000b) Actual length = 44 (0x00002c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+20 (+6.02%) : 76318.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 11 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 12, 12 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (24) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -23,7 +23,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V13 tmp9 [V13 ] ( 4, 6 ) struct ( 8) [fp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V14 tmp10 [V14,T03] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V14 tmp10 [V14,T02] ( 2, 4 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref single-def "field V02.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V07.array (fldOffset=0x0)" P-INDEP
@@ -32,16 +32,14 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) ref -> zero-ref "field V11._bits (fldOffset=0x0)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) long -> zero-ref "field V11._bits0 (fldOffset=0x8)" P-INDEP
;* V22 tmp18 [V22 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
-; V23 tmp19 [V23,T10] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
+; V23 tmp19 [V23,T08] ( 3, 2 ) ref -> x2 single-def "field V12.array (fldOffset=0x0)" P-INDEP
; V24 tmp20 [V24 ] ( 4, 4 ) ref -> [fp+0x30] do-not-enreg[X] addr-exposed "field V13.array (fldOffset=0x0)" P-DEP
; V25 tmp21 [V25 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V26 tmp22 [V26,T00] ( 9, 18 ) ref -> x19 single-def "argument with side effect"
-; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V29 tmp25 [V29,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V30 tmp26 [V30,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V31 tmp27 [V31,T09] ( 2, 4 ) int -> x5 "argument with side effect"
-; V32 tmp28 [V32,T08] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V26 tmp22 [V26,T03] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
+; V27 tmp23 [V27,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V28 tmp24 [V28,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V29 tmp25 [V29,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V30 tmp26 [V30,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
;
; Lcl frame size = 64
@@ -100,14 +98,9 @@ G_M12801_IG04: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=40 bbWeight=0.50 PerfScore 6.00
G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- adrp x1, [HIGH RELOC #0xD1FFAB1E] // const ptr
- add x1, x1, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x1]
- ldr x1, [x19, x1]
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
+ ldrsb wzr, [x20]
adrp x3, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x3, x3, [LOW RELOC #0xD1FFAB1E]
ldr x3, [x3]
@@ -121,44 +114,56 @@ G_M12801_IG05: ; bbWeight=1, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=000
adrp x5, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x5, x5, [LOW RELOC #0xD1FFAB1E]
ldr x5, [x5]
- ldrb w5, [x19, x5]
+ ldr x5, [x19, x5]
+ ; gcrRegs +[x5]
adrp x6, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x6, x6, [LOW RELOC #0xD1FFAB1E]
ldr x6, [x6]
- ldr x6, [x19, x6]
- ; gcrRegs +[x6]
+ ldrb w6, [x19, x6]
adrp x7, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x7, x7, [LOW RELOC #0xD1FFAB1E]
ldr x7, [x7]
- add x7, x19, x7
- ; byrRegs +[x7]
- ;; size=104 bbWeight=1 PerfScore 45.50
-G_M12801_IG06: ; bbWeight=1, nogc, extend
- ldp x8, x11, [x7]
- stp x8, x11, [fp, #0x18]
- ldr x8, [x7, #0x10]
- str x8, [fp, #0x28]
- ;; size=16 bbWeight=1 PerfScore 9.00
-G_M12801_IG07: ; bbWeight=1, extend
- adrp x7, [HIGH RELOC #0xD1FFAB1E] // const ptr
- ; byrRegs -[x7]
- add x7, x7, [LOW RELOC #0xD1FFAB1E]
- ldr x7, [x7]
ldr x7, [x19, x7]
; gcrRegs +[x7]
- str x7, [sp] // [V04 OutArgs]
- mov x7, xzr
- str x7, [sp, #0x08] // [V04 OutArgs+0x08]
- str x0, [sp, #0x10] // [V04 OutArgs+0x10]
- mov x0, x19
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ add x0, x19, x0
+ ; byrRegs +[x0]
+ ;; size=104 bbWeight=1 PerfScore 45.50
+G_M12801_IG06: ; bbWeight=1, nogc, extend
+ ldp x8, x11, [x0]
+ stp x8, x11, [fp, #0x18]
+ ldr x8, [x0, #0x10]
+ str x8, [fp, #0x28]
+ ;; size=16 bbWeight=1 PerfScore 9.00
+G_M12801_IG07: ; bbWeight=1, extend
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
+ ; byrRegs -[x0]
+ add x0, x0, [LOW RELOC #0xD1FFAB1E]
+ ldr x0, [x0]
+ ldr x0, [x19, x0]
+ ; gcrRegs +[x0]
+ str x0, [sp] // [V04 OutArgs]
+ mov x0, xzr
+ str x0, [sp, #0x08] // [V04 OutArgs+0x08]
+ str x1, [sp, #0x10] // [V04 OutArgs+0x10]
+ mov x1, x3
+ mov x3, x4
+ mov x4, x5
+ mov w5, w6
+ ; gcrRegs -[x5]
+ mov x6, x7
+ ; gcrRegs +[x6]
add x7, fp, #24 // [V25 tmp21]
; gcrRegs -[x7]
+ mov x0, x19
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x8, [x11]
blr x8
; gcrRegs -[x1-x4 x6 x19-x20]
- ;; size=56 bbWeight=1 PerfScore 16.50
+ ;; size=76 bbWeight=1 PerfScore 19.00
G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x50]
ldp fp, lr, [sp, #0x18]
@@ -166,7 +171,7 @@ G_M12801_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=16 bbWeight=1 PerfScore 3.50
-; Total bytes of code 332, prolog size 28, PerfScore 107.50, instruction count 83, allocated bytes for code 332 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
+; Total bytes of code 352, prolog size 28, PerfScore 110.00, instruction count 88, allocated bytes for code 352 (MethodHash=9e98cdfe) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
; ============================================================
Unwind Info:
@@ -177,7 +182,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)
+4 (+7.14%) : 100689.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder
1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable1[int]):this (FullOpts)@@ -8,7 +8,7 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel>
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.ISymbol>
; V03 arg3 [V03,T04] ( 3, 3 ) ubyte -> x3 single-def
@@ -17,33 +17,30 @@
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Nullable`1[int]>
;* V07 loc0 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x5 single-def "field V05._source (fldOffset=0x0)" P-INDEP
-;* V10 tmp2 [V10,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
-;* V11 tmp3 [V11,T12] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
-; V12 tmp4 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;* V13 tmp5 [V13,T10] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V14 tmp6 [V14,T06] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V15 tmp7 [V15,T09] ( 2, 4 ) int -> x2 "argument with side effect"
-; V16 tmp8 [V16,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V17 tmp9 [V17,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V09 tmp1 [V09,T05] ( 2, 2 ) ref -> x11 single-def "field V05._source (fldOffset=0x0)" P-INDEP
+;* V10 tmp2 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP
+;* V11 tmp3 [V11,T07] ( 0, 0 ) int -> zero-ref single-def "field V07.value (fldOffset=0x4)" P-INDEP
+; V12 tmp4 [V12,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 16
G_M26014_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M26014_IG02: ; bbWeight=1, gcrefRegs=0033 {x0 x1 x4 x5}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1 x4-x5]
- uxtb w2, w3
- mov x3, x4
- ; gcrRegs +[x3]
- mov x4, x5
+ mov x11, x5
+ ; gcrRegs +[x11]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26014_IG02: ; bbWeight=1, gcrefRegs=0813 {x0 x1 x4 x11}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0-x1 x4]
strb wzr, [fp, #0x18] // [V12 tmp4]
str wzr, [fp, #0x1C] // [V12 tmp4+0x04]
ldr x5, [fp, #0x18] // [V12 tmp4]
- ; gcrRegs -[x5]
+ uxtb w2, w3
+ mov x3, x4
+ ; gcrRegs +[x3]
+ mov x4, x11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ ; gcrRegs -[x11]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x6, [x11]
blr x6
@@ -54,7 +51,7 @@ G_M26014_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 56, prolog size 8, PerfScore 14.00, instruction count 14, allocated bytes for code 56 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 14.50, instruction count 15, allocated bytes for code 60 (MethodHash=5e2a9a61) for method Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +62,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
+ 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)
+4 (+7.69%) : 132450.dasm - System.Speech.Internal.SrgsCompiler.Tag:Serialize(System.Speech.Internal.StreamMarshaler):this (FullOpts)
@@ -9,25 +9,26 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Speech.Internal.SrgsCompiler.Tag>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <System.Speech.Internal.StreamMarshaler>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x11 class-hnd single-def <System.Speech.Internal.StreamMarshaler>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (32) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Speech.Internal.SrgsCompiler.CfgSemanticTag>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 32
G_M39810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M39810_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
+ mov x11, x1
+ ; gcrRegs +[x11]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M39810_IG02: ; bbWeight=1, gcrefRegs=0801 {x0 x11}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0x10]
stp q16, q17, [fp, #0x10]
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ ; gcrRegs -[x11]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr wzr, [x0]
ldr x2, [x11]
@@ -39,7 +40,7 @@ G_M39810_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 52, prolog size 8, PerfScore 16.50, instruction count 13, allocated bytes for code 52 (MethodHash=a018647d) for method System.Speech.Internal.SrgsCompiler.Tag:Serialize(System.Speech.Internal.StreamMarshaler):this (FullOpts)
+; Total bytes of code 56, prolog size 8, PerfScore 17.00, instruction count 14, allocated bytes for code 56 (MethodHash=a018647d) for method System.Speech.Internal.SrgsCompiler.Tag:Serialize(System.Speech.Internal.StreamMarshaler):this (FullOpts)
; ============================================================
Unwind Info:
@@ -50,7 +51,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 13 (0x0000d) Actual length = 52 (0x000034)
+ Function Length : 14 (0x0000e) Actual length = 56 (0x000038)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
libraries.pmi.windows.arm64.checked.mch
-32 (-20.00%) : 55905.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 13 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V00 this [V00,T00] ( 15, 15 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
@@ -22,7 +22,7 @@
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp11 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp12 [V14,T02] ( 2, 2 ) ref -> x1 single-def "field V01.array (fldOffset=0x0)" P-INDEP
+; V14 tmp12 [V14,T01] ( 2, 2 ) ref -> x3 single-def "field V01.array (fldOffset=0x0)" P-INDEP
;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,14 @@
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp20 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp21 [V23,T00] ( 13, 26 ) ref -> x2 single-def "argument with side effect"
-; V24 tmp22 [V24,T03] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
+; V23 tmp21 [V23,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
+; V24 tmp22 [V24,T03] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
; V25 tmp23 [V25,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
; V26 tmp24 [V26,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V27 tmp25 [V27,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V28 tmp26 [V28,T07] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V27 tmp25 [V27,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V28 tmp26 [V28,T08] ( 2, 4 ) int -> x7 "argument with side effect"
; V29 tmp27 [V29,T09] ( 2, 4 ) int -> x8 "argument with side effect"
-; V30 tmp28 [V30,T10] ( 2, 4 ) int -> x9 "argument with side effect"
-; V31 tmp29 [V31,T11] ( 2, 4 ) int -> x10 "argument with side effect"
-; V32 tmp30 [V32,T08] ( 2, 4 ) ref -> x11 single-def "argument with side effect"
+; V30 tmp28 [V30,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -48,49 +46,37 @@ G_M12648_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub sp, sp, #96
stp fp, lr, [sp, #0x30]
add fp, sp, #48
- ;; size=12 bbWeight=1 PerfScore 2.00
-G_M12648_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x0-x1]
- mov x2, x0
- ; gcrRegs +[x2]
- ldp x3, x4, [x2, #0x20]
- ; gcrRegs +[x3-x4]
- mov x5, x1
- ; gcrRegs +[x5]
- ldp x6, x7, [x2, #0x40]
- ; gcrRegs +[x6-x7]
- ldrb w8, [x2, #0x30]
- ldrb w9, [x2, #0x31]
- ldrb w10, [x2, #0x32]
- ldr x11, [x2, #0x50]
- ; gcrRegs +[x11]
- ;; size=32 bbWeight=1 PerfScore 21.00
+ mov x3, x1
+ ; gcrRegs +[x3]
+ ;; size=16 bbWeight=1 PerfScore 2.50
+G_M12648_IG02: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x0]
+ ldp x1, x2, [x0, #0x20]
+ ; gcrRegs +[x1-x2]
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=24 bbWeight=1 PerfScore 20.00
G_M12648_IG03: ; bbWeight=1, nogc, extend
- ldp x1, x13, [x2, #0x58]
- ; gcrRegs -[x1]
- stp x1, x13, [fp, #0x18]
- ldr x1, [x2, #0x68]
- str x1, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M12648_IG04: ; bbWeight=1, extend
- ldrb w1, [x2, #0x33]
- str w1, [sp, #0x18] // [V02 OutArgs+0x18]
- ldr x1, [x2, #0x70]
- ; gcrRegs +[x1]
- str x1, [sp, #0x20] // [V02 OutArgs+0x20]
- ldr x1, [x2, #0x18]
- str x1, [sp, #0x28] // [V02 OutArgs+0x28]
- mov x1, x3
- mov x2, x4
- mov x3, x5
- mov x4, x6
- mov x5, x7
- mov w6, w8
- ; gcrRegs -[x6]
- mov w7, w9
- ; gcrRegs -[x7]
- str w10, [sp] // [V02 OutArgs]
- str x11, [sp, #0x08] // [V02 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ str w10, [sp, #0x18] // [V02 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V02 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V02 OutArgs+0x28]
+ str w8, [sp] // [V02 OutArgs]
+ str x9, [sp, #0x08] // [V02 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp20]
str x8, [sp, #0x10] // [V02 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -98,15 +84,15 @@ G_M12648_IG04: ; bbWeight=1, extend
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x11]
- ;; size=88 bbWeight=1 PerfScore 24.50
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M12648_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 160, prolog size 12, PerfScore 59.00, instruction count 40, allocated bytes for code 160 (MethodHash=b8d0ce97) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 128, prolog size 12, PerfScore 55.00, instruction count 32, allocated bytes for code 128 (MethodHash=b8d0ce97) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -117,7 +103,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 40 (0x00028) Actual length = 160 (0x0000a0)
+ 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)
-12 (-20.00%) : 92646.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Nullable`1[System.DateTime]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.Nullable`1[System.DateTime]>
+; V03 tmp1 [V03,T01] ( 2, 2 ) ubyte -> x0 single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00.value (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M46195_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M46195_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strb w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[System.DateTime],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M46195_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=8d094b8c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-20.00%) : 92647.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
@@ -10,39 +10,35 @@
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.DateTimeOffset>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03,T02] ( 2, 2 ) short -> x0 single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
-; V04 tmp2 [V04,T03] ( 2, 2 ) long -> x1 single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
-;* V05 tmp3 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp4 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
-; V07 tmp5 [V07,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V08 tmp6 [V08,T00] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg "argument with side effect" <System.DateTimeOffset>
+; V03 tmp1 [V03,T01] ( 2, 2 ) short -> x0 single-def "field V00._offsetMinutes (fldOffset=0x0)" P-INDEP
+; V04 tmp2 [V04,T02] ( 2, 2 ) long -> x1 single-def "field V00._dateTime (fldOffset=0x8)" P-INDEP
+;* V05 tmp3 [V05,T03] ( 0, 0 ) ubyte -> zero-ref "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref "field V01.value (fldOffset=0x1)" P-INDEP
+; V07 tmp5 [V07,T00] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M31891_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M31891_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- strh w0, [fp, #0x18] // [V08 tmp6]
- str x1, [fp, #0x20] // [V08 tmp6+0x08]
- strb wzr, [fp, #0x28] // [V07 tmp5]
- strb wzr, [fp, #0x29] // [V07 tmp5+0x01]
- ldp x0, x1, [fp, #0x18] // [V08 tmp6], [V08 tmp6+0x08]
- ldrh w2, [fp, #0x28] // [V07 tmp5]
+ strb wzr, [fp, #0x18] // [V07 tmp5]
+ strb wzr, [fp, #0x19] // [V07 tmp5+0x01]
+ ldrh w2, [fp, #0x18] // [V07 tmp5]
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.DateTimeOffset,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 14.50
+ ;; size=32 bbWeight=1 PerfScore 9.50
G_M31891_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
+; Total bytes of code 48, prolog size 8, PerfScore 13.00, instruction count 12, allocated bytes for code 48 (MethodHash=d63e836c) for method System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +49,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ Function Length : 12 (0x0000c) Actual length = 48 (0x000030)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -61,7 +57,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+4 (+6.67%) : 164405.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
+4 (+6.67%) : 128912.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
+16 (+6.90%) : 86441.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 15, 15 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V19 tmp14 [V19,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V19 tmp14 [V19,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
@@ -37,30 +37,27 @@
;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._bits0 (fldOffset=0x8)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._capacity (fldOffset=0x10)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref "field V16.array (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T15] ( 3, 2 ) ref -> x22 single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T14] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V32 tmp27 [V32,T00] ( 12, 24 ) ref -> x19 single-def "argument with side effect"
-; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp30 [V35,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V36 tmp31 [V36,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V37 tmp32 [V37,T09] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V38 tmp33 [V38,T11] ( 2, 4 ) int -> x6 "argument with side effect"
-; V39 tmp34 [V39,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V40 tmp35 [V40,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V41 tmp36 [V41,T10] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
+; V29 tmp24 [V29,T12] ( 3, 2 ) ref -> x3 single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T11] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V32 tmp27 [V32,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V35 tmp30 [V35,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V36 tmp31 [V36,T09] ( 2, 4 ) int -> x0 "argument with side effect"
+; V37 tmp32 [V37,T10] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T07] ( 2, 4 ) ref -> x8 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V31 tmp26], [V31 tmp26+0x08]
- str xzr, [fp, #0x28] // [V31 tmp26+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V31 tmp26], [V31 tmp26+0x08]
+ str xzr, [fp, #0x20] // [V31 tmp26+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -75,12 +72,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x3, xzr
+ ; gcrRegs +[x3]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x3] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -92,73 +89,79 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldr x2, [x19, #0x28]
- ; gcrRegs +[x2]
- mov x3, x22
+ mov x3, x0
; gcrRegs +[x3]
- ldp x4, x5, [x19, #0x40]
- ; gcrRegs +[x4-x5]
- ldrb w6, [x19, #0x30]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldr x9, [x19, #0x50]
- ; gcrRegs +[x9]
- ;; size=40 bbWeight=1 PerfScore 26.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldr x4, [x19, #0x28]
+ ; gcrRegs +[x4]
+ ldp x5, x6, [x19, #0x40]
+ ; gcrRegs +[x5-x6]
+ ldrb w7, [x19, #0x30]
+ ldrb w0, [x19, #0x31]
+ ldrb w1, [x19, #0x32]
+ ldr x8, [x19, #0x50]
+ ; gcrRegs +[x8]
+ ;; size=32 bbWeight=1 PerfScore 25.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x10, x11, [x19, #0x58]
- stp x10, x11, [fp, #0x18]
- ldr x10, [x19, #0x68]
- str x10, [fp, #0x28]
+ ldp x9, x10, [x19, #0x58]
+ stp x9, x10, [fp, #0x10]
+ ldr x9, [x19, #0x68]
+ str x9, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w10, [x19, #0x33]
- str w10, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x10, [x19, #0x70]
- ; gcrRegs +[x10]
- str x10, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w9, [x19, #0x33]
+ str w9, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x9, [x19, #0x70]
+ ; gcrRegs +[x9]
+ str x9, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov x2, x4
+ mov x4, x5
+ mov x5, x6
+ mov w6, w7
+ ; gcrRegs -[x6]
+ mov w7, w0
+ str w1, [sp] // [V05 OutArgs]
+ str x8, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x0, fp, #16 // [V31 tmp26]
+ str x0, [sp, #0x10] // [V05 OutArgs+0x10]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str x9, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V31 tmp26]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
movz x8, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x8]
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x9-x10 x19-x22]
- ;; size=60 bbWeight=1 PerfScore 18.50
+ ; gcrRegs -[x1-x5 x9 x19-x21]
+ ;; size=84 bbWeight=1 PerfScore 21.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 232, prolog size 28, PerfScore 74.25, instruction count 58, allocated bytes for code 232 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 248, prolog size 28, PerfScore 77.25, instruction count 62, allocated bytes for code 248 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -166,9 +169,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
libraries_tests.run.windows.arm64.Release.mch
-48 (-27.91%) : 76703.dasm - NuGet.Packaging.Signing.SignatureVerificationSummary:.ctor(int,int,int,NuGet.Packaging.Signing.Timestamp,System.Collections.Generic.IEnumerable`1[NuGet.Packaging.Signing.SignatureLog]):this (Tier0)
@@ -5,68 +5,47 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x88] do-not-enreg[] this class-hnd <NuGet.Packaging.Signing.SignatureVerificationSummary>
-; V01 arg1 [V01 ] ( 1, 1 ) int -> [fp+0x84] do-not-enreg[]
-; V02 arg2 [V02 ] ( 1, 1 ) int -> [fp+0x80] do-not-enreg[]
-; V03 arg3 [V03 ] ( 1, 1 ) int -> [fp+0x7C] do-not-enreg[]
-; V04 arg4 [V04 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <NuGet.Packaging.Signing.Timestamp>
-; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <System.Collections.Generic.IEnumerable`1[NuGet.Packaging.Signing.SignatureLog]>
-; V06 loc0 [V06 ] ( 1, 1 ) struct (24) [fp+0x50] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.DateTimeOffset]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] this class-hnd <NuGet.Packaging.Signing.SignatureVerificationSummary>
+; V01 arg1 [V01 ] ( 1, 1 ) int -> [fp+0x64] do-not-enreg[]
+; V02 arg2 [V02 ] ( 1, 1 ) int -> [fp+0x60] do-not-enreg[]
+; V03 arg3 [V03 ] ( 1, 1 ) int -> [fp+0x5C] do-not-enreg[]
+; V04 arg4 [V04 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <NuGet.Packaging.Signing.Timestamp>
+; V05 arg5 [V05 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <System.Collections.Generic.IEnumerable`1[NuGet.Packaging.Signing.SignatureLog]>
+; V06 loc0 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.DateTimeOffset]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08 ] ( 1, 1 ) struct (24) [fp+0x38] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.DateTimeOffset]>
-; V09 tmp2 [V09 ] ( 1, 1 ) ref -> [fp+0x30] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp3 [V10 ] ( 1, 1 ) int -> [fp+0x2C] do-not-enreg[] "argument with side effect"
-; V11 tmp4 [V11 ] ( 1, 1 ) int -> [fp+0x28] do-not-enreg[] "argument with side effect"
-; V12 tmp5 [V12 ] ( 1, 1 ) int -> [fp+0x24] do-not-enreg[] "argument with side effect"
-; V13 tmp6 [V13 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
+; V08 tmp1 [V08 ] ( 1, 1 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.DateTimeOffset]>
;
-; Lcl frame size = 128
+; Lcl frame size = 96
G_M42965_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x90]!
+ stp fp, lr, [sp, #-0x70]!
mov fp, sp
- add x9, fp, #24
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x88] // [V00 this]
- str w1, [fp, #0x84] // [V01 arg1]
- str w2, [fp, #0x80] // [V02 arg2]
- str w3, [fp, #0x7C] // [V03 arg3]
- str x4, [fp, #0x70] // [V04 arg4]
- str x5, [fp, #0x68] // [V05 arg5]
- ;; size=52 bbWeight=1 PerfScore 11.50
+ str xzr, [fp, #0x30] // [V06 loc0]
+ str xzr, [fp, #0x38] // [V06 loc0+0x08]
+ str xzr, [fp, #0x40] // [V06 loc0+0x10]
+ str x0, [fp, #0x68] // [V00 this]
+ str w1, [fp, #0x64] // [V01 arg1]
+ str w2, [fp, #0x60] // [V02 arg2]
+ str w3, [fp, #0x5C] // [V03 arg3]
+ str x4, [fp, #0x50] // [V04 arg4]
+ str x5, [fp, #0x48] // [V05 arg5]
+ ;; size=44 bbWeight=1 PerfScore 10.50
G_M42965_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x50]
- str xzr, [fp, #0x60]
- ldr x0, [fp, #0x88] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x30] // [V09 tmp2]
- ldr w0, [fp, #0x84] // [V01 arg1]
- ; gcrRegs -[x0]
- str w0, [fp, #0x2C] // [V10 tmp3]
- ldr w0, [fp, #0x80] // [V02 arg2]
- str w0, [fp, #0x28] // [V11 tmp4]
- ldr w0, [fp, #0x7C] // [V03 arg3]
- str w0, [fp, #0x24] // [V12 tmp5]
- ldr x0, [fp, #0x70] // [V04 arg4]
- ; gcrRegs +[x0]
- str x0, [fp, #0x18] // [V13 tmp6]
- ldp x0, x1, [fp, #0x50]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x38]
- ldr x0, [fp, #0x60]
- str x0, [fp, #0x48]
- ldr x0, [fp, #0x30] // [V09 tmp2]
- ; gcrRegs +[x0]
- ldr w1, [fp, #0x2C] // [V10 tmp3]
- ldr w2, [fp, #0x28] // [V11 tmp4]
- ldr w3, [fp, #0x24] // [V12 tmp5]
- ldr x4, [fp, #0x18] // [V13 tmp6]
+ stp xzr, xzr, [fp, #0x30]
+ str xzr, [fp, #0x40]
+ ldp x1, x2, [fp, #0x30]
+ stp x1, x2, [fp, #0x18]
+ ldr x1, [fp, #0x40]
+ str x1, [fp, #0x28]
+ add x5, fp, #24 // [V08 tmp1]
+ ldr w1, [fp, #0x64] // [V01 arg1]
+ ldr w2, [fp, #0x60] // [V02 arg2]
+ ldr w3, [fp, #0x5C] // [V03 arg3]
+ ldr x4, [fp, #0x50] // [V04 arg4]
; gcrRegs +[x4]
- add x5, fp, #56 // [V08 tmp1]
- ldr x6, [fp, #0x68] // [V05 arg5]
+ ldr x0, [fp, #0x68] // [V00 this]
+ ; gcrRegs +[x0]
+ ldr x6, [fp, #0x48] // [V05 arg5]
; gcrRegs +[x6]
movz x7, #0xD1FFAB1E // code for <unknown method>
movk x7, #0xD1FFAB1E LSL #16
@@ -74,13 +53,13 @@ G_M42965_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x7, [x7]
blr x7
; gcrRegs -[x0 x4 x6]
- ;; size=112 bbWeight=1 PerfScore 42.00
+ ;; size=72 bbWeight=1 PerfScore 27.00
G_M42965_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x90
+ ldp fp, lr, [sp], #0x70
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 172, prolog size 28, PerfScore 55.50, instruction count 43, allocated bytes for code 172 (MethodHash=726c582a) for method NuGet.Packaging.Signing.SignatureVerificationSummary:.ctor(int,int,int,NuGet.Packaging.Signing.Timestamp,System.Collections.Generic.IEnumerable`1[NuGet.Packaging.Signing.SignatureLog]):this (Tier0)
+; Total bytes of code 124, prolog size 20, PerfScore 39.50, instruction count 31, allocated bytes for code 124 (MethodHash=726c582a) for method NuGet.Packaging.Signing.SignatureVerificationSummary:.ctor(int,int,int,NuGet.Packaging.Signing.Timestamp,System.Collections.Generic.IEnumerable`1[NuGet.Packaging.Signing.SignatureLog]):this (Tier0)
; ============================================================
Unwind Info:
@@ -91,7 +70,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ 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)
@@ -99,7 +78,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 91 save_fplr_x #17 (0x11); stp fp, lr, [sp, #-144]!
+ 8D save_fplr_x #13 (0x0D); stp fp, lr, [sp, #-112]!
E4 end
E4 end
-40 (-27.03%) : 1586.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
@@ -5,72 +5,56 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.String>
-; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x48] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.String>
+; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M26555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ str xzr, [fp, #0x28] // [V04 loc0]
+ str xzr, [fp, #0x30] // [V04 loc0+0x08]
+ str xzr, [fp, #0x38] // [V04 loc0+0x10]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ ;; size=36 bbWeight=1 PerfScore 8.50
G_M26555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x48]
- str wzr, [fp, #0x58]
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V07 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x20] // [V08 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x18] // [V09 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x10] // [V10 tmp5]
- ldp x0, x1, [fp, #0x48]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x30]
- ldr w0, [fp, #0x58]
- str w0, [fp, #0x40]
- ldr x0, [fp, #0x28] // [V07 tmp2]
- ; gcrRegs +[x0]
- ldr x1, [fp, #0x20] // [V08 tmp3]
+ stp xzr, xzr, [fp, #0x28]
+ str wzr, [fp, #0x38]
+ ldp x1, x2, [fp, #0x28]
+ stp x1, x2, [fp, #0x10]
+ ldr w1, [fp, #0x38]
+ str w1, [fp, #0x20]
+ add x4, fp, #16 // [V06 tmp1]
+ ldr x1, [fp, #0x50] // [V01 arg1]
; gcrRegs +[x1]
- ldr x2, [fp, #0x18] // [V09 tmp4]
+ ldr x2, [fp, #0x48] // [V02 arg2]
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V10 tmp5]
+ ldr x3, [fp, #0x40] // [V03 arg3]
; gcrRegs +[x3]
- add x4, fp, #48 // [V06 tmp1]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x3]
- ;; size=96 bbWeight=1 PerfScore 35.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M26555_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 46.50, instruction count 37, allocated bytes for code 148 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
+; Total bytes of code 108, prolog size 20, PerfScore 33.50, instruction count 27, allocated bytes for code 108 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
; ============================================================
Unwind Info:
@@ -81,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
-40 (-27.03%) : 99659.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
@@ -5,72 +5,56 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x78] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
-; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x70] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
-; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x68] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
-; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x60] do-not-enreg[] class-hnd <System.String>
-; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x48] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
+; V00 this [V00 ] ( 1, 1 ) ref -> [fp+0x58] do-not-enreg[] this class-hnd <Xunit.Sdk.TestCollection>
+; V01 arg1 [V01 ] ( 1, 1 ) ref -> [fp+0x50] do-not-enreg[] class-hnd <Xunit.Abstractions.ITestAssembly>
+; V02 arg2 [V02 ] ( 1, 1 ) ref -> [fp+0x48] do-not-enreg[] class-hnd <Xunit.Abstractions.ITypeInfo>
+; V03 arg3 [V03 ] ( 1, 1 ) ref -> [fp+0x40] do-not-enreg[] class-hnd <System.String>
+; V04 loc0 [V04 ] ( 1, 1 ) struct (24) [fp+0x28] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.Guid]>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x30] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [fp+0x28] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [fp+0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [fp+0x18] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) ref -> [fp+0x10] do-not-enreg[] must-init "argument with side effect"
+; V06 tmp1 [V06 ] ( 1, 1 ) struct (24) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.Guid]>
;
-; Lcl frame size = 112
+; Lcl frame size = 80
G_M26555_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x80]!
+ stp fp, lr, [sp, #-0x60]!
mov fp, sp
- add x9, fp, #16
- movi v16.16b, #0
- stp q16, q16, [x9]
- stp q16, q16, [x9, #0x20]
- stp xzr, xzr, [x9, #0x40]
- str x0, [fp, #0x78] // [V00 this]
- str x1, [fp, #0x70] // [V01 arg1]
- str x2, [fp, #0x68] // [V02 arg2]
- str x3, [fp, #0x60] // [V03 arg3]
- ;; size=44 bbWeight=1 PerfScore 9.50
+ str xzr, [fp, #0x28] // [V04 loc0]
+ str xzr, [fp, #0x30] // [V04 loc0+0x08]
+ str xzr, [fp, #0x38] // [V04 loc0+0x10]
+ str x0, [fp, #0x58] // [V00 this]
+ str x1, [fp, #0x50] // [V01 arg1]
+ str x2, [fp, #0x48] // [V02 arg2]
+ str x3, [fp, #0x40] // [V03 arg3]
+ ;; size=36 bbWeight=1 PerfScore 8.50
G_M26555_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- stp xzr, xzr, [fp, #0x48]
- str wzr, [fp, #0x58]
- ldr x0, [fp, #0x78] // [V00 this]
- ; gcrRegs +[x0]
- str x0, [fp, #0x28] // [V07 tmp2]
- ldr x0, [fp, #0x70] // [V01 arg1]
- str x0, [fp, #0x20] // [V08 tmp3]
- ldr x0, [fp, #0x68] // [V02 arg2]
- str x0, [fp, #0x18] // [V09 tmp4]
- ldr x0, [fp, #0x60] // [V03 arg3]
- str x0, [fp, #0x10] // [V10 tmp5]
- ldp x0, x1, [fp, #0x48]
- ; gcrRegs -[x0]
- stp x0, x1, [fp, #0x30]
- ldr w0, [fp, #0x58]
- str w0, [fp, #0x40]
- ldr x0, [fp, #0x28] // [V07 tmp2]
- ; gcrRegs +[x0]
- ldr x1, [fp, #0x20] // [V08 tmp3]
+ stp xzr, xzr, [fp, #0x28]
+ str wzr, [fp, #0x38]
+ ldp x1, x2, [fp, #0x28]
+ stp x1, x2, [fp, #0x10]
+ ldr w1, [fp, #0x38]
+ str w1, [fp, #0x20]
+ add x4, fp, #16 // [V06 tmp1]
+ ldr x1, [fp, #0x50] // [V01 arg1]
; gcrRegs +[x1]
- ldr x2, [fp, #0x18] // [V09 tmp4]
+ ldr x2, [fp, #0x48] // [V02 arg2]
; gcrRegs +[x2]
- ldr x3, [fp, #0x10] // [V10 tmp5]
+ ldr x3, [fp, #0x40] // [V03 arg3]
; gcrRegs +[x3]
- add x4, fp, #48 // [V06 tmp1]
+ ldr x0, [fp, #0x58] // [V00 this]
+ ; gcrRegs +[x0]
movz x5, #0xD1FFAB1E // code for <unknown method>
movk x5, #0xD1FFAB1E LSL #16
movk x5, #0xD1FFAB1E LSL #32
ldr x5, [x5]
blr x5
; gcrRegs -[x0-x3]
- ;; size=96 bbWeight=1 PerfScore 35.00
+ ;; size=64 bbWeight=1 PerfScore 23.00
G_M26555_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x80
+ ldp fp, lr, [sp], #0x60
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 28, PerfScore 46.50, instruction count 37, allocated bytes for code 148 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
+; Total bytes of code 108, prolog size 20, PerfScore 33.50, instruction count 27, allocated bytes for code 108 (MethodHash=cefa9844) for method Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -81,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -89,7 +73,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]!
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
E4 end
E4 end
+4 (+5.88%) : 90391.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
@@ -9,44 +9,44 @@
; Final local variable assignments
;
; V00 this [V00,T02] ( 3, 3 ) byref -> x0 this single-def
-; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x1 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
+; V01 arg1 [V01,T00] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Threading.ReaderWriterLockSlim>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V04 tmp2 [V04,T04] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
-;* V05 tmp3 [V05,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg"
+;* V05 tmp3 [V05,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-;* V07 tmp5 [V07,T06] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
-;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._total (fldOffset=0x0)" P-INDEP
+;* V08 tmp6 [V08,T06] ( 0, 0 ) int -> zero-ref "field V03._start (fldOffset=0x4)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref "field V06._total (fldOffset=0x0)" P-INDEP
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._start (fldOffset=0x4)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Threading.ReaderWriterLockSlim+TimeoutTracker>
-; V13 tmp11 [V13,T03] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
;
; Lcl frame size = 16
G_M47585_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M47585_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0001 {x0}, byref
- ; gcrRegs +[x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M47585_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
mov x14, x0
; byrRegs +[x14]
- mov x15, x1
+ mov x15, x2
; gcrRegs +[x15]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
; byrRegs -[x0 x14]
- ldrsb wzr, [x1]
- mov x0, x1
- ; gcrRegs +[x0]
+ ldrsb wzr, [x2]
movn w1, #0
- ; gcrRegs -[x1]
stp w1, wzr, [fp, #0x18] // [V12 tmp10], [V12 tmp10+0x04]
ldr x1, [fp, #0x18] // [V12 tmp10]
+ mov x0, x2
+ ; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -58,7 +58,7 @@ G_M47585_IG03: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 68, prolog size 8, PerfScore 18.00, instruction count 17, allocated bytes for code 68 (MethodHash=d7ac461e) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 18.50, instruction count 18, allocated bytes for code 72 (MethodHash=d7ac461e) for method Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
; ============================================================
Unwind Info:
@@ -69,7 +69,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 17 (0x00011) Actual length = 68 (0x000044)
+ 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)
+16 (+6.67%) : 598642.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -7,9 +7,9 @@
; 1 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.48) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.48) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V20 tmp15 [V20,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -37,31 +37,28 @@
;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "field V15._bits0 (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._capacity (fldOffset=0x10)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T16] ( 3, 1.50) ref -> x22 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T15] ( 3, 2.48) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp28 [V33,T00] ( 13, 26 ) ref -> x19 single-def "argument with side effect"
-; V34 tmp29 [V34,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V35 tmp30 [V35,T11] ( 2, 4 ) int -> x2 "argument with side effect"
-; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V37 tmp32 [V37,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V38 tmp33 [V38,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V39 tmp34 [V39,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V40 tmp35 [V40,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V41 tmp36 [V41,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V42 tmp37 [V42,T14] ( 2, 4 ) int -> x9 "argument with side effect"
-; V43 tmp38 [V43,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V30 tmp25 [V30,T13] ( 3, 1.50) ref -> x4 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T12] ( 3, 2.48) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V33 tmp28 [V33,T08] ( 2, 4 ) int -> x3 "argument with side effect"
+; V34 tmp29 [V34,T04] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V35 tmp30 [V35,T05] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V37 tmp32 [V37,T09] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T10] ( 2, 4 ) int -> x0 "argument with side effect"
+; V39 tmp34 [V39,T11] ( 2, 4 ) int -> x8 "argument with side effect"
+; V40 tmp35 [V40,T07] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 88
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub sp, sp, #128
stp fp, lr, [sp, #0x38]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x68]
+ str x21, [sp, #0x78]
add fp, sp, #56
- stp xzr, xzr, [fp, #0x10] // [V32 tmp27], [V32 tmp27+0x08]
- str xzr, [fp, #0x20] // [V32 tmp27+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V32 tmp27], [V32 tmp27+0x08]
+ str xzr, [fp, #0x28] // [V32 tmp27+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -86,81 +83,88 @@ G_M26558_IG03: ; bbWeight=0.48, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.48 PerfScore 3.83
-G_M26558_IG04: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldrb w2, [x19, #0x30]
- ldr x3, [x19, #0x28]
- ; gcrRegs +[x3]
- mov x4, x22
+ mov x4, x0
; gcrRegs +[x4]
- ldp x5, x6, [x19, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldrb w9, [x19, #0x33]
- ldr x10, [x19, #0x50]
- ; gcrRegs +[x10]
- ;; size=44 bbWeight=1 PerfScore 29.00
+ ;; size=40 bbWeight=0.48 PerfScore 3.83
+G_M26558_IG04: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldrb w3, [x19, #0x30]
+ ldr x5, [x19, #0x28]
+ ; gcrRegs +[x5]
+ ldp x6, x7, [x19, #0x40]
+ ; gcrRegs +[x6-x7]
+ ldrb w1, [x19, #0x31]
+ ldrb w0, [x19, #0x32]
+ ldrb w8, [x19, #0x33]
+ ldr x9, [x19, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=36 bbWeight=1 PerfScore 28.00
G_M26558_IG05: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x19, #0x58]
- stp x11, x13, [fp, #0x10]
- ldr x11, [x19, #0x68]
- str x11, [fp, #0x20]
+ ldp x10, x11, [x19, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x19, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG06: ; bbWeight=1, extend
- ldrb w11, [x19, #0x34]
- str w11, [sp, #0x20] // [V05 OutArgs+0x20]
- ldr x11, [x19, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x28] // [V05 OutArgs+0x28]
- str x0, [sp, #0x30] // [V05 OutArgs+0x30]
+ ldrb w10, [x19, #0x34]
+ str w10, [sp, #0x20] // [V05 OutArgs+0x20]
+ ldr x10, [x19, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x28] // [V05 OutArgs+0x28]
+ str x2, [sp, #0x30] // [V05 OutArgs+0x30]
+ mov w2, w3
+ ; gcrRegs -[x2]
+ mov x3, x5
+ ; gcrRegs +[x3]
+ mov x5, x6
+ mov x6, x7
+ mov w7, w1
+ ; gcrRegs -[x7]
+ str w0, [sp] // [V05 OutArgs]
+ str w8, [sp, #0x08] // [V05 OutArgs+0x08]
+ str x9, [sp, #0x10] // [V05 OutArgs+0x10]
+ add x1, fp, #24 // [V32 tmp27]
+ str x1, [sp, #0x18] // [V05 OutArgs+0x18]
+ mov x1, x21
+ ; gcrRegs +[x1]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str w9, [sp, #0x08] // [V05 OutArgs+0x08]
- str x10, [sp, #0x10] // [V05 OutArgs+0x10]
- add x8, fp, #16 // [V32 tmp27]
- str x8, [sp, #0x18] // [V05 OutArgs+0x18]
+ ; gcrRegs +[x0]
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3-x6 x10-x11 x19-x22]
- ;; size=64 bbWeight=1 PerfScore 19.50
+ ; gcrRegs -[x1 x3-x6 x9-x10 x19-x21]
+ ;; size=88 bbWeight=1 PerfScore 22.50
G_M26558_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp, #0x38]
add sp, sp, #128
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M26558_IG08: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x19-x21]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x4, xzr
+ ; gcrRegs +[x4]
b G_M26558_IG04
;; size=8 bbWeight=0.02 PerfScore 0.03
-; Total bytes of code 240, prolog size 28, PerfScore 77.36, instruction count 60, allocated bytes for code 240 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
+; Total bytes of code 256, prolog size 28, PerfScore 80.36, instruction count 64, allocated bytes for code 256 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
; ============================================================
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
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -168,9 +172,12 @@ Unwind Info:
---- Unwind codes ----
E2 07 add_fp 7 (0x07); add fp, sp, #56
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
47 save_fplr #7 (0x07); stp fp, lr, [sp, #56]
08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
E4 end
+ E4 end
+ E4 end
+ E4 end
+4 (+6.67%) : 591416.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
@@ -8,29 +8,30 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.Cci.MetadataWriter>
-; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.Cci.ITypeDefinition>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 2, 4 ) struct (48) [fp+0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.Emit.EmitContext>
-; V04 tmp2 [V04,T02] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
;
; Lcl frame size = 48
G_M23091_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M23091_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs +[x0-x1]
+ mov x2, x1
+ ; gcrRegs +[x2]
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M23091_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs +[x0]
ldp q16, q17, [x0, #0xD0]
stp q16, q17, [fp, #0x10]
ldr q16, [x0, #0xF0]
str q16, [fp, #0x30]
;; size=16 bbWeight=1 PerfScore 8.00
G_M23091_IG03: ; bbWeight=1, extend
- mov x0, x1
add x1, fp, #16 // [V03 tmp1]
- ; gcrRegs -[x1]
+ mov x0, x2
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
@@ -42,7 +43,7 @@ G_M23091_IG04: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 60, prolog size 8, PerfScore 18.00, instruction count 15, allocated bytes for code 60 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
+; Total bytes of code 64, prolog size 8, PerfScore 18.50, instruction count 16, allocated bytes for code 64 (MethodHash=af30a5cc) for method Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
; ============================================================
Unwind Info:
@@ -53,7 +54,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 15 (0x0000f) Actual length = 60 (0x00003c)
+ 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)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-32 (-27.59%) : 117851.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:
1[ubyte],System.Span1[ubyte],int,byref,byref):ubyte (FullOpts)@@ -10,58 +10,45 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T04] ( 3, 3 ) int -> x4 single-def
-; V03 arg3 [V03,T02] ( 3, 3 ) byref -> x7 single-def
-; V04 arg4 [V04,T03] ( 3, 3 ) byref -> x8 single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) int -> x4 single-def
+; V03 arg3 [V03,T00] ( 3, 3 ) byref -> x7 single-def
+; V04 arg4 [V04,T01] ( 3, 3 ) byref -> x8 single-def
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
+; V06 tmp1 [V06 ] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.Formats.Asn1.Asn1Tag>
;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref
-; V08 tmp3 [V08,T11] ( 3, 3 ) byref -> x5 single-def
+; V08 tmp3 [V08,T08] ( 3, 3 ) byref -> x5 single-def
;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp6 [V11,T05] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp7 [V12,T07] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V13 tmp8 [V13,T06] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp9 [V14,T08] ( 2, 2 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V15 tmp10 [V15 ] ( 3, 6 ) ubyte -> [fp+0x38] do-not-enreg[X] addr-exposed "field V06._controlFlags (fldOffset=0x0)" P-DEP
-; V16 tmp11 [V16 ] ( 3, 6 ) int -> [fp+0x3C] do-not-enreg[X] addr-exposed "field V06.<TagValue>k__BackingField (fldOffset=0x4)" P-DEP
-; V17 tmp12 [V17,T09] ( 2, 4 ) struct ( 8) [fp+0x30] do-not-enreg[S] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
-; V18 tmp13 [V18,T00] ( 4, 8 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlySpan`1[ubyte]>
-; V19 tmp14 [V19,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Span`1[ubyte]>
-; V20 tmp15 [V20,T10] ( 2, 4 ) int -> x4 "argument with side effect"
+; V11 tmp6 [V11,T03] ( 2, 2 ) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V12 tmp7 [V12,T05] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V13 tmp8 [V13,T04] ( 2, 2 ) byref -> x2 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V14 tmp9 [V14,T06] ( 2, 2 ) int -> x3 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V15 tmp10 [V15 ] ( 3, 6 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V06._controlFlags (fldOffset=0x0)" P-DEP
+; V16 tmp11 [V16 ] ( 3, 6 ) int -> [fp+0x1C] do-not-enreg[X] addr-exposed "field V06.<TagValue>k__BackingField (fldOffset=0x4)" P-DEP
+; V17 tmp12 [V17,T07] ( 2, 4 ) struct ( 8) [fp+0x10] do-not-enreg[S] "by-value struct argument" <System.Formats.Asn1.Asn1Tag>
;
-; Lcl frame size = 48
+; Lcl frame size = 16
G_M25606_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- str xzr, [fp, #0x20] // [V18 tmp13]
- str xzr, [fp, #0x10] // [V19 tmp14]
mov x7, x5
; byrRegs +[x7]
mov x8, x6
; byrRegs +[x8]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=16 bbWeight=1 PerfScore 2.50
G_M25606_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0185 {x0 x2 x7 x8}, byref
; byrRegs +[x0 x2]
- str xzr, [fp, #0x38] // [V06 tmp1]
- add x5, fp, #56 // [V06 tmp1]
+ str xzr, [fp, #0x18] // [V06 tmp1]
+ add x5, fp, #24 // [V06 tmp1]
; byrRegs +[x5]
strb wzr, [x5]
mov w6, #12
str w6, [x5, #0x04]
- str x0, [fp, #0x20] // [V18 tmp13]
- str w1, [fp, #0x28] // [V18 tmp13+0x08]
- str x2, [fp, #0x10] // [V19 tmp14]
- str w3, [fp, #0x18] // [V19 tmp14+0x08]
- ldr x0, [fp, #0x38] // [V06 tmp1]
- ; byrRegs -[x0]
- str x0, [fp, #0x30] // [V17 tmp12]
- ldp x0, x1, [fp, #0x20] // [V18 tmp13], [V18 tmp13+0x08]
- ; byrRegs +[x0]
- ldp x2, x3, [fp, #0x10] // [V19 tmp14], [V19 tmp14+0x08]
- ldr x5, [fp, #0x30] // [V17 tmp12]
+ ldr x5, [fp, #0x18] // [V06 tmp1]
; byrRegs -[x5]
+ str x5, [fp, #0x10] // [V17 tmp12]
+ ldr x5, [fp, #0x10] // [V17 tmp12]
mov x6, x7
; byrRegs +[x6]
mov x7, x8
@@ -72,13 +59,13 @@ G_M25606_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0185 {x0 x2 x7
ldr x8, [x8]
blr x8
; byrRegs -[x0 x2 x6-x7]
- ;; size=84 bbWeight=1 PerfScore 25.50
+ ;; size=60 bbWeight=1 PerfScore 15.50
G_M25606_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x40
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 116, prolog size 16, PerfScore 32.00, instruction count 29, allocated bytes for code 116 (MethodHash=7f649bf9) for method System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 20.00, instruction count 21, allocated bytes for code 84 (MethodHash=7f649bf9) for method System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -89,7 +76,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
+ 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)
@@ -97,7 +84,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-16.67%) : 269845.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>cDisplayClass160:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,42 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> x1 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> x0 "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> x0 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M18200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V13 tmp11], [V13 tmp11+0x08]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M18200_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
- mov x1, x0
- ; gcrRegs +[x1]
- ldrsb wzr, [x1]
- str x1, [fp, #0x18] // [V13 tmp11]
- strb wzr, [fp, #0x28] // [V12 tmp10]
- strb wzr, [fp, #0x29] // [V12 tmp10+0x01]
- ldr x1, [fp, #0x20] // [V13 tmp11+0x08]
- ; gcrRegs -[x1]
- ldrh w2, [fp, #0x28] // [V12 tmp10]
+ ldrsb wzr, [x0]
+ strb wzr, [fp, #0x18] // [V12 tmp10]
+ strb wzr, [fp, #0x19] // [V12 tmp10+0x01]
+ ldrh w2, [fp, #0x18] // [V12 tmp10]
+ mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonValue:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=52 bbWeight=1 PerfScore 19.00
+ ;; size=44 bbWeight=1 PerfScore 16.00
G_M18200_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 72, prolog size 12, PerfScore 23.50, instruction count 18, allocated bytes for code 72 (MethodHash=e2eeb8e7) for method System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 19.50, instruction count 15, allocated bytes for code 60 (MethodHash=e2eeb8e7) for method System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ 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)
@@ -73,7 +66,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
-12 (-16.67%) : 274789.dasm - System.Text.Json.Nodes.Tests.JsonObjectTests+<>cDisplayClass160:<FromElementWrongNodeTypeThrows>b0():System.Object:this (FullOpts)
@@ -12,49 +12,42 @@
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.Text.Json.JsonElement>
-; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x1 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
-;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
-;* V06 tmp4 [V06,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp5 [V07,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
+; V04 tmp2 [V04,T00] ( 3, 6 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Text.Json.JsonElement>
+;* V06 tmp4 [V06,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp5 [V07,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.value (fldOffset=0x1)" P-INDEP
;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._parent (fldOffset=0x0)" P-INDEP
;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref single-def "field V03._idx (fldOffset=0x8)" P-INDEP
-; V10 tmp8 [V10,T05] ( 2, 2 ) ref -> x1 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
-;* V11 tmp9 [V11,T08] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
-; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
-; V13 tmp11 [V13,T03] ( 2, 4 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.Text.Json.JsonElement>
-; V14 cse0 [V14,T04] ( 3, 3 ) ref -> x0 "CSE - aggressive"
+; V10 tmp8 [V10,T03] ( 2, 2 ) ref -> x0 single-def "field V05._parent (fldOffset=0x0)" P-INDEP
+;* V11 tmp9 [V11,T06] ( 0, 0 ) int -> zero-ref single-def "field V05._idx (fldOffset=0x8)" P-INDEP
+; V12 tmp10 [V12,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M65350_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]!
+ stp fp, lr, [sp, #-0x20]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V13 tmp11], [V13 tmp11+0x08]
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M65350_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
; gcrRegs +[x0]
ldr x0, [x0, #0x08]
- mov x1, x0
- ; gcrRegs +[x1]
- ldrsb wzr, [x1]
- str x1, [fp, #0x18] // [V13 tmp11]
- strb wzr, [fp, #0x28] // [V12 tmp10]
- strb wzr, [fp, #0x29] // [V12 tmp10+0x01]
- ldr x1, [fp, #0x20] // [V13 tmp11+0x08]
- ; gcrRegs -[x1]
- ldrh w2, [fp, #0x28] // [V12 tmp10]
+ ldrsb wzr, [x0]
+ strb wzr, [fp, #0x18] // [V12 tmp10]
+ strb wzr, [fp, #0x19] // [V12 tmp10+0x01]
+ ldrh w2, [fp, #0x18] // [V12 tmp10]
+ mov w1, wzr
movz x3, #0xD1FFAB1E // code for System.Text.Json.Nodes.JsonObject:Create(System.Text.Json.JsonElement,System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonObject
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=52 bbWeight=1 PerfScore 19.00
+ ;; size=44 bbWeight=1 PerfScore 16.00
G_M65350_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x30
+ ldp fp, lr, [sp], #0x20
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 72, prolog size 12, PerfScore 23.50, instruction count 18, allocated bytes for code 72 (MethodHash=0bb900b9) for method System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
+; Total bytes of code 60, prolog size 8, PerfScore 19.50, instruction count 15, allocated bytes for code 60 (MethodHash=0bb900b9) for method System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -65,7 +58,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 18 (0x00012) Actual length = 72 (0x000048)
+ 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)
@@ -73,7 +66,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]!
+ 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
E4 end
E4 end
+16 (+6.67%) : 56935.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 16 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 16, 16 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (56) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -28,7 +28,7 @@
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V19 tmp14 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V20 tmp15 [V20,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V20 tmp15 [V20,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V23 tmp18 [V23 ] ( 0, 0 ) ref -> zero-ref "field V09.array (fldOffset=0x0)" P-INDEP
@@ -38,31 +38,28 @@
;* V27 tmp22 [V27 ] ( 0, 0 ) long -> zero-ref "field V15._bits0 (fldOffset=0x8)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) int -> zero-ref "field V15._capacity (fldOffset=0x10)" P-INDEP
;* V29 tmp24 [V29 ] ( 0, 0 ) ref -> zero-ref "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T16] ( 3, 2 ) ref -> x22 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31,T15] ( 3, 2.50) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
-; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V33 tmp28 [V33,T00] ( 13, 26 ) ref -> x19 single-def "argument with side effect"
-; V34 tmp29 [V34,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V35 tmp30 [V35,T11] ( 2, 4 ) int -> x2 "argument with side effect"
-; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V37 tmp32 [V37,T07] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V38 tmp33 [V38,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V39 tmp34 [V39,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V40 tmp35 [V40,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V41 tmp36 [V41,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V42 tmp37 [V42,T14] ( 2, 4 ) int -> x9 "argument with side effect"
-; V43 tmp38 [V43,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V30 tmp25 [V30,T13] ( 3, 2 ) ref -> x4 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31,T12] ( 3, 2.50) ref -> x2 single-def "field V19.array (fldOffset=0x0)" P-INDEP
+; V32 tmp27 [V32 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V33 tmp28 [V33,T08] ( 2, 4 ) int -> x3 "argument with side effect"
+; V34 tmp29 [V34,T04] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V35 tmp30 [V35,T05] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V36 tmp31 [V36,T06] ( 2, 4 ) ref -> x7 single-def "argument with side effect"
+; V37 tmp32 [V37,T09] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T10] ( 2, 4 ) int -> x0 "argument with side effect"
+; V39 tmp34 [V39,T11] ( 2, 4 ) int -> x8 "argument with side effect"
+; V40 tmp35 [V40,T07] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 88
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub sp, sp, #128
stp fp, lr, [sp, #0x38]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x68]
+ str x21, [sp, #0x78]
add fp, sp, #56
- stp xzr, xzr, [fp, #0x10] // [V32 tmp27], [V32 tmp27+0x08]
- str xzr, [fp, #0x20] // [V32 tmp27+0x10]
+ stp xzr, xzr, [fp, #0x18] // [V32 tmp27], [V32 tmp27+0x08]
+ str xzr, [fp, #0x28] // [V32 tmp27+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -77,12 +74,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x4, xzr
+ ; gcrRegs +[x4]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x4] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -94,75 +91,82 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldrb w2, [x19, #0x30]
- ldr x3, [x19, #0x28]
- ; gcrRegs +[x3]
- mov x4, x22
+ mov x4, x0
; gcrRegs +[x4]
- ldp x5, x6, [x19, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldrb w9, [x19, #0x33]
- ldr x10, [x19, #0x50]
- ; gcrRegs +[x10]
- ;; size=44 bbWeight=1 PerfScore 29.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldrb w3, [x19, #0x30]
+ ldr x5, [x19, #0x28]
+ ; gcrRegs +[x5]
+ ldp x6, x7, [x19, #0x40]
+ ; gcrRegs +[x6-x7]
+ ldrb w1, [x19, #0x31]
+ ldrb w0, [x19, #0x32]
+ ldrb w8, [x19, #0x33]
+ ldr x9, [x19, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=36 bbWeight=1 PerfScore 28.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x19, #0x58]
- stp x11, x13, [fp, #0x10]
- ldr x11, [x19, #0x68]
- str x11, [fp, #0x20]
+ ldp x10, x11, [x19, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x19, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w11, [x19, #0x34]
- str w11, [sp, #0x20] // [V05 OutArgs+0x20]
- ldr x11, [x19, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x28] // [V05 OutArgs+0x28]
- str x0, [sp, #0x30] // [V05 OutArgs+0x30]
+ ldrb w10, [x19, #0x34]
+ str w10, [sp, #0x20] // [V05 OutArgs+0x20]
+ ldr x10, [x19, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x28] // [V05 OutArgs+0x28]
+ str x2, [sp, #0x30] // [V05 OutArgs+0x30]
+ mov w2, w3
+ ; gcrRegs -[x2]
+ mov x3, x5
+ ; gcrRegs +[x3]
+ mov x5, x6
+ mov x6, x7
+ mov w7, w1
+ ; gcrRegs -[x7]
+ str w0, [sp] // [V05 OutArgs]
+ str w8, [sp, #0x08] // [V05 OutArgs+0x08]
+ str x9, [sp, #0x10] // [V05 OutArgs+0x10]
+ add x1, fp, #24 // [V32 tmp27]
+ str x1, [sp, #0x18] // [V05 OutArgs+0x18]
+ mov x1, x21
+ ; gcrRegs +[x1]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str w9, [sp, #0x08] // [V05 OutArgs+0x08]
- str x10, [sp, #0x10] // [V05 OutArgs+0x10]
- add x8, fp, #16 // [V32 tmp27]
- str x8, [sp, #0x18] // [V05 OutArgs+0x18]
+ ; gcrRegs +[x0]
movz x8, #0xD1FFAB1E // code for <unknown method>
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3-x6 x10-x11 x19-x22]
- ;; size=64 bbWeight=1 PerfScore 19.50
+ ; gcrRegs -[x1 x3-x6 x9-x10 x19-x21]
+ ;; size=88 bbWeight=1 PerfScore 22.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x78]
+ ldp x19, x20, [sp, #0x68]
ldp fp, lr, [sp, #0x38]
add sp, sp, #128
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 240, prolog size 28, PerfScore 78.25, instruction count 60, allocated bytes for code 240 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 256, prolog size 28, PerfScore 81.25, instruction count 64, allocated bytes for code 256 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 64 (0x00040) Actual length = 256 (0x000100)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -170,9 +174,12 @@ Unwind Info:
---- Unwind codes ----
E2 07 add_fp 7 (0x07); add fp, sp, #56
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8F save_reg X#2 Z#15 (0x0F); str x21, [sp, #120]
+ C8 0D save_regp X#0 Z#13 (0x0D); stp x19, x20, [sp, #104]
47 save_fplr #7 (0x07); stp fp, lr, [sp, #56]
08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
E4 end
+ E4 end
+ E4 end
+ E4 end
+8 (+7.69%) : 269640.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
@@ -8,36 +8,35 @@
; 1 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Text.Json.Serialization.Tests.JsonDocumentClass>
+; V00 this [V00,T01] ( 3, 3 ) ref -> x19 this class-hnd single-def <System.Text.Json.Serialization.Tests.JsonDocumentClass>
;* V01 loc0 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Json.JsonDocumentOptions>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V06 tmp4 [V06 ] ( 5, 10 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref
-;* V08 tmp6 [V08,T05] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V08 tmp6 [V08,T07] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp9 [V11,T03] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
+; V11 tmp9 [V11,T05] ( 2, 4 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <System.Text.Json.JsonDocument>
;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
;* V13 tmp11 [V13 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
;* V14 tmp12 [V14 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-;* V15 tmp13 [V15,T07] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
-;* V16 tmp14 [V16,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
-;* V17 tmp15 [V17,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V15 tmp13 [V15,T08] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
+;* V16 tmp14 [V16,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
+;* V17 tmp15 [V17,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref "field V04._object (fldOffset=0x0)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V22 tmp20 [V22 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V23 tmp21 [V23 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
-;* V24 tmp22 [V24,T06] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
-;* V25 tmp23 [V25,T10] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-;* V26 tmp24 [V26,T11] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0xc)" P-INDEP
-; V27 tmp25 [V27,T00] ( 4, 8 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V28 tmp26 [V28,T01] ( 4, 8 ) struct (16) [fp+0x10] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
-;* V29 cse0 [V29,T04] ( 0, 0 ) ref -> zero-ref "CSE - aggressive"
+; V24 tmp22 [V24,T02] ( 3, 5 ) ref -> [fp+0x18] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP
+; V25 tmp23 [V25,T03] ( 3, 5 ) int -> [fp+0x20] do-not-enreg[] single-def "field V06._index (fldOffset=0x8)" P-DEP
+; V26 tmp24 [V26,T04] ( 3, 5 ) int -> [fp+0x24] do-not-enreg[] single-def "field V06._length (fldOffset=0xc)" P-DEP
+; V27 tmp25 [V27,T00] ( 4, 8 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
+; V28 cse0 [V28,T06] ( 2, 2 ) ref -> x2 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -45,22 +44,24 @@ G_M62249_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp fp, lr, [sp, #-0x30]!
str x19, [sp, #0x28]
mov fp, sp
- stp xzr, xzr, [fp, #0x10] // [V28 tmp26], [V28 tmp26+0x08]
+ stp xzr, xzr, [fp, #0x18] // [V06 tmp4], [V06 tmp4+0x08]
mov x19, x0
; gcrRegs +[x19]
;; size=20 bbWeight=1 PerfScore 4.00
G_M62249_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- str x0, [fp, #0x10] // [V28 tmp26]
- mov w0, #129
- stp w0, wzr, [fp, #0x1C] // [V28 tmp26+0x0c], [V27 tmp25]
- strb wzr, [fp, #0x24] // [V27 tmp25+0x04]
- strb wzr, [fp, #0x25] // [V27 tmp25+0x05]
- ldp x0, x1, [fp, #0x10] // [V28 tmp26], [V28 tmp26+0x08]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ str x2, [fp, #0x18] // [V24 tmp22]
+ str wzr, [fp, #0x20] // [V25 tmp23]
+ mov w2, #129
+ str w2, [fp, #0x24] // [V26 tmp24]
+ str wzr, [fp, #0x10] // [V27 tmp25]
+ strb wzr, [fp, #0x14] // [V27 tmp25+0x04]
+ strb wzr, [fp, #0x15] // [V27 tmp25+0x05]
+ ldp x2, x0, [fp, #0x10] // [V27 tmp25], [V06 tmp4]
; gcrRegs +[x0]
- ldr x2, [fp, #0x20] // [V27 tmp25]
+ ldr x1, [fp, #0x20] // [V06 tmp4+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -73,14 +74,14 @@ G_M62249_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15 x19]
; byrRegs -[x14]
- ;; size=72 bbWeight=1 PerfScore 18.50
+ ;; size=80 bbWeight=1 PerfScore 20.50
G_M62249_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 104, prolog size 16, PerfScore 26.50, instruction count 26, allocated bytes for code 104 (MethodHash=de8b0cd6) for method System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
+; Total bytes of code 112, prolog size 16, PerfScore 28.50, instruction count 28, allocated bytes for code 112 (MethodHash=de8b0cd6) for method System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +92,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 28 (0x0001c) Actual length = 112 (0x000070)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+10.00%) : 268442.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:
@@ -14,59 +14,60 @@
;* V03 tmp1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Text.Json.JsonDocumentOptions>
;* V04 tmp2 [V04 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlyMemory`1[ushort]>
;* V05 tmp3 [V05 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlyMemory`1[ushort]>
-;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
+; V06 tmp4 [V06 ] ( 5, 10 ) struct (16) [fp+0x20] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" <System.ReadOnlyMemory`1[ushort]>
;* V07 tmp5 [V07 ] ( 0, 0 ) int -> zero-ref
;* V08 tmp6 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V09 tmp7 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref single-def "field V01._maxDepth (fldOffset=0x0)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01._commentHandling (fldOffset=0x4)" P-INDEP
;* V12 tmp10 [V12 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
-;* V13 tmp11 [V13,T03] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
-;* V14 tmp12 [V14,T04] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
-;* V15 tmp13 [V15,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
+;* V13 tmp11 [V13,T04] ( 0, 0 ) int -> zero-ref single-def "field V03._maxDepth (fldOffset=0x0)" P-INDEP
+;* V14 tmp12 [V14,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V03._commentHandling (fldOffset=0x4)" P-INDEP
+;* V15 tmp13 [V15,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.<AllowTrailingCommas>k__BackingField (fldOffset=0x5)" P-INDEP
;* V16 tmp14 [V16 ] ( 0, 0 ) ref -> zero-ref "field V04._object (fldOffset=0x0)" P-INDEP
;* V17 tmp15 [V17 ] ( 0, 0 ) int -> zero-ref "field V04._index (fldOffset=0x8)" P-INDEP
;* V18 tmp16 [V18 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0xc)" P-INDEP
;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref "field V05._object (fldOffset=0x0)" P-INDEP
;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref "field V05._index (fldOffset=0x8)" P-INDEP
;* V21 tmp19 [V21 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0xc)" P-INDEP
-;* V22 tmp20 [V22,T02] ( 0, 0 ) ref -> zero-ref single-def "field V06._object (fldOffset=0x0)" P-INDEP
-;* V23 tmp21 [V23,T06] ( 0, 0 ) int -> zero-ref single-def "field V06._index (fldOffset=0x8)" P-INDEP
-;* V24 tmp22 [V24,T07] ( 0, 0 ) int -> zero-ref single-def "field V06._length (fldOffset=0xc)" P-INDEP
-; V25 tmp23 [V25,T00] ( 4, 8 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
-; V26 tmp24 [V26,T01] ( 4, 8 ) struct (16) [fp+0x18] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ushort]>
+; V22 tmp20 [V22,T01] ( 3, 5 ) ref -> [fp+0x20] do-not-enreg[] single-def "field V06._object (fldOffset=0x0)" P-DEP
+; V23 tmp21 [V23,T02] ( 3, 5 ) int -> [fp+0x28] do-not-enreg[] single-def "field V06._index (fldOffset=0x8)" P-DEP
+; V24 tmp22 [V24,T03] ( 3, 5 ) int -> [fp+0x2C] do-not-enreg[] single-def "field V06._length (fldOffset=0xc)" P-DEP
+; V25 tmp23 [V25,T00] ( 4, 8 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Text.Json.JsonDocumentOptions>
;
; Lcl frame size = 32
G_M36232_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x30]!
mov fp, sp
- stp xzr, xzr, [fp, #0x18] // [V26 tmp24], [V26 tmp24+0x08]
+ stp xzr, xzr, [fp, #0x20] // [V06 tmp4], [V06 tmp4+0x08]
;; size=12 bbWeight=1 PerfScore 2.50
G_M36232_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz x0, #0xD1FFAB1E
- movk x0, #0xD1FFAB1E LSL #16
- movk x0, #0xD1FFAB1E LSL #32
- str x0, [fp, #0x18] // [V26 tmp24]
- mov w0, #21
- stp w0, wzr, [fp, #0x24] // [V26 tmp24+0x0c], [V25 tmp23]
- strb wzr, [fp, #0x2C] // [V25 tmp23+0x04]
- strb wzr, [fp, #0x2D] // [V25 tmp23+0x05]
- ldp x0, x1, [fp, #0x18] // [V26 tmp24], [V26 tmp24+0x08]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ str x2, [fp, #0x20] // [V22 tmp20]
+ str wzr, [fp, #0x28] // [V23 tmp21]
+ mov w2, #21
+ str w2, [fp, #0x2C] // [V24 tmp22]
+ str wzr, [fp, #0x18] // [V25 tmp23]
+ strb wzr, [fp, #0x1C] // [V25 tmp23+0x04]
+ strb wzr, [fp, #0x1D] // [V25 tmp23+0x05]
+ ldp x2, x0, [fp, #0x18] // [V25 tmp23], [V06 tmp4]
; gcrRegs +[x0]
- ldr x2, [fp, #0x28] // [V25 tmp23]
+ ldr x1, [fp, #0x28] // [V06 tmp4+0x08]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ;; size=60 bbWeight=1 PerfScore 16.50
+ ;; size=68 bbWeight=1 PerfScore 18.50
G_M36232_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x30
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 80, prolog size 12, PerfScore 21.00, instruction count 20, allocated bytes for code 80 (MethodHash=6ea77277) for method System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
+; Total bytes of code 88, prolog size 12, PerfScore 23.00, instruction count 22, allocated bytes for code 88 (MethodHash=6ea77277) for method System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
@@ -77,7 +78,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 20 (0x00014) Actual length = 80 (0x000050)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
realworld.run.windows.arm64.checked.mch
-12 (-15.79%) : 12889.dasm - Microsoft.ML.Trainers.SdcaTrainerBase
3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase3+Visitor[System.Canon,System.Canon,System.__Canon]):this (FullOpts)@@ -9,43 +9,37 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]>
; V01 arg1 [V01,T00] ( 5, 5 ) long -> x1 single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T01] ( 4, 4 ) ref -> x3 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> x0 single-def "arr expr"
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x3 single-def "argument with side effect"
-; V06 tmp3 [V06,T06] ( 2, 4 ) long -> x2 "argument with side effect"
-; V07 tmp4 [V07,T05] ( 2, 4 ) byref -> x0 single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V05 tmp2 [V05,T04] ( 2, 4 ) byref -> x2 single-def "argument with side effect"
;
; Lcl frame size = 0
G_M22309_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M22309_IG02: ; bbWeight=1, gcrefRegs=0005 {x0 x2}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0 x2]
mov x3, x2
; gcrRegs +[x3]
- mov x2, x1
- ; gcrRegs -[x2]
- ldr x0, [x0, #0x08]
- ldr w4, [x0, #0x08]
- cmp w1, w4
- bhs G_M22309_IG04
- add x0, x0, #16
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M22309_IG02: ; bbWeight=1, gcrefRegs=0009 {x0 x3}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x0]
+ ldr x2, [x0, #0x08]
+ ; gcrRegs +[x2]
+ ldr w0, [x2, #0x08]
; gcrRegs -[x0]
- ; byrRegs +[x0]
- ubfiz x1, x1, #2, #32
- add x0, x0, x1
- mov x1, x2
- mov x2, x0
+ cmp w1, w0
+ bhs G_M22309_IG04
+ add x2, x2, #16
+ ; gcrRegs -[x2]
; byrRegs +[x2]
+ ubfiz x0, x1, #2, #32
+ add x2, x2, x0
ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- ; byrRegs -[x0]
ldr x3, [x3, #0x18]
; gcrRegs -[x3]
- ;; size=52 bbWeight=1 PerfScore 17.50
+ ;; size=36 bbWeight=1 PerfScore 15.50
G_M22309_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x3
@@ -59,7 +53,7 @@ G_M22309_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 76, prolog size 8, PerfScore 21.00, instruction count 19, allocated bytes for code 76 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 64, prolog size 12, PerfScore 19.50, instruction count 16, allocated bytes for code 64 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -70,7 +64,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ 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)
-20 (-14.29%) : 25234.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 4, 4 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V01 arg1 [V01,T02] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
+; V00 this [V00,T00] ( 13, 13 ) ref -> x0 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V01 arg1 [V01,T01] ( 3, 3 ) ref -> x1 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x2 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[System.String]>
@@ -22,7 +22,7 @@
;* V11 tmp7 [V11 ] ( 0, 0 ) struct (24) zero-ref "impAppendStmt" <Microsoft.CodeAnalysis.BitVector>
;* V12 tmp8 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
-; V14 tmp10 [V14,T04] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp10 [V14,T03] ( 2, 2 ) ref -> x3 single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref "field V05.array (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V17 tmp13 [V17 ] ( 0, 0 ) ref -> zero-ref "field V10.array (fldOffset=0x0)" P-INDEP
@@ -31,16 +31,12 @@
;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V11._capacity (fldOffset=0x10)" P-INDEP
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref "field V13.array (fldOffset=0x0)" P-INDEP
; V22 tmp18 [V22 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V23 tmp19 [V23,T00] ( 11, 22 ) ref -> x4 single-def "argument with side effect"
-; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V25 tmp21 [V25,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V26 tmp22 [V26,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V27 tmp23 [V27,T08] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V28 tmp24 [V28,T09] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
-; V29 tmp25 [V29,T11] ( 2, 4 ) int -> x7 "argument with side effect"
-; V30 tmp26 [V30,T12] ( 2, 4 ) int -> x8 "argument with side effect"
-; V31 tmp27 [V31,T13] ( 2, 4 ) int -> x9 "argument with side effect"
-; V32 tmp28 [V32,T10] ( 2, 4 ) ref -> x10 single-def "argument with side effect"
+; V23 tmp19 [V23,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V24 tmp20 [V24,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V25 tmp21 [V25,T07] ( 2, 4 ) int -> x6 "argument with side effect"
+; V26 tmp22 [V26,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V27 tmp23 [V27,T09] ( 2, 4 ) int -> x8 "argument with side effect"
+; V28 tmp24 [V28,T06] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
;
; Lcl frame size = 80
@@ -51,37 +47,30 @@ G_M55914_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.00
G_M55914_IG02: ; bbWeight=1, gcrefRegs=000F {x0 x1 x2 x3}, byrefRegs=0000 {}, byref
; gcrRegs +[x0-x3]
- mov x4, x0
- ; gcrRegs +[x4]
- ldp x5, x6, [x4, #0x40]
- ; gcrRegs +[x5-x6]
- ldrb w7, [x4, #0x30]
- ldrb w8, [x4, #0x31]
- ldrb w9, [x4, #0x32]
- ldr x10, [x4, #0x50]
- ; gcrRegs +[x10]
- ;; size=24 bbWeight=1 PerfScore 16.50
+ ldp x4, x5, [x0, #0x40]
+ ; gcrRegs +[x4-x5]
+ ldrb w6, [x0, #0x30]
+ ldrb w7, [x0, #0x31]
+ ldrb w8, [x0, #0x32]
+ ldr x9, [x0, #0x50]
+ ; gcrRegs +[x9]
+ ;; size=20 bbWeight=1 PerfScore 16.00
G_M55914_IG03: ; bbWeight=1, nogc, extend
- ldp x11, x13, [x4, #0x58]
- stp x11, x13, [fp, #0x18]
- ldr x11, [x4, #0x68]
- str x11, [fp, #0x28]
+ ldp x10, x11, [x0, #0x58]
+ stp x10, x11, [fp, #0x18]
+ ldr x10, [x0, #0x68]
+ str x10, [fp, #0x28]
;; size=16 bbWeight=1 PerfScore 9.00
G_M55914_IG04: ; bbWeight=1, extend
- ldrb w11, [x4, #0x33]
- str w11, [sp, #0x18] // [V04 OutArgs+0x18]
- ldr x11, [x4, #0x70]
- ; gcrRegs +[x11]
- str x11, [sp, #0x20] // [V04 OutArgs+0x20]
- ldr x4, [x4, #0x18]
- str x4, [sp, #0x28] // [V04 OutArgs+0x28]
- mov x4, x5
- mov x5, x6
- mov w6, w7
- ; gcrRegs -[x6]
- mov w7, w8
- str w9, [sp] // [V04 OutArgs]
- str x10, [sp, #0x08] // [V04 OutArgs+0x08]
+ ldrb w10, [x0, #0x33]
+ str w10, [sp, #0x18] // [V04 OutArgs+0x18]
+ ldr x10, [x0, #0x70]
+ ; gcrRegs +[x10]
+ str x10, [sp, #0x20] // [V04 OutArgs+0x20]
+ ldr x10, [x0, #0x18]
+ str x10, [sp, #0x28] // [V04 OutArgs+0x28]
+ str w8, [sp] // [V04 OutArgs]
+ str x9, [sp, #0x08] // [V04 OutArgs+0x08]
add x8, fp, #24 // [V22 tmp18]
str x8, [sp, #0x10] // [V04 OutArgs+0x10]
movz x8, #0xD1FFAB1E // code for <unknown method>
@@ -89,15 +78,15 @@ G_M55914_IG04: ; bbWeight=1, extend
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x10-x11]
- ;; size=76 bbWeight=1 PerfScore 23.00
+ ; gcrRegs -[x1-x5 x9-x10]
+ ;; size=60 bbWeight=1 PerfScore 21.00
G_M55914_IG05: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp, #0x30]
add sp, sp, #96
ret lr
;; size=12 bbWeight=1 PerfScore 2.50
-; Total bytes of code 140, prolog size 12, PerfScore 53.00, instruction count 35, allocated bytes for code 140 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
+; Total bytes of code 120, prolog size 12, PerfScore 50.50, instruction count 30, allocated bytes for code 120 (MethodHash=00902595) for method Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
; ============================================================
Unwind Info:
@@ -108,7 +97,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 35 (0x00023) Actual length = 140 (0x00008c)
+ 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)
-12 (-9.38%) : 13856.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
@@ -17,40 +17,34 @@
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def "field V03.value (fldOffset=0x4)" P-INDEP
-;* V09 tmp4 [V09,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V10 tmp5 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V12 tmp7 [V12,T09] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
-; V13 tmp8 [V13,T01] ( 3, 6 ) struct ( 8) [fp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V14 tmp9 [V14,T02] ( 3, 6 ) struct ( 8) [fp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V15 tmp10 [V15,T05] ( 2, 4 ) ref -> x0 single-def "argument with side effect"
-; TEMP_01 byref -> [fp+0x18]
+;* V09 tmp4 [V09,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp5 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
+;* V11 tmp6 [V11,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V12 tmp7 [V12,T08] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
+; V13 tmp8 [V13,T01] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V14 tmp9 [V14,T02] ( 3, 6 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 32
+; Lcl frame size = 16
G_M25941_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x40]!
- stp x19, x20, [sp, #0x30]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x20]
mov fp, sp
- str xzr, [fp, #0x18] // [TEMP_01]
mov x19, x0
; gcrRegs +[x19]
mov x20, x2
; gcrRegs +[x20]
- ;; size=24 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 3.50
G_M25941_IG02: ; bbWeight=1, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
- add x14, x19, #8
- ; byrRegs +[x14]
- str x14, [fp, #0x18] // [TEMP_01]
+ strb wzr, [fp, #0x18] // [V13 tmp8]
+ str wzr, [fp, #0x1C] // [V13 tmp8+0x04]
+ strb wzr, [fp, #0x10] // [V14 tmp9]
+ strb wzr, [fp, #0x11] // [V14 tmp9+0x01]
+ ldr x2, [fp, #0x18] // [V13 tmp8]
+ ldrh w3, [fp, #0x10] // [V14 tmp9]
mov x0, x1
; gcrRegs +[x0]
- strb wzr, [fp, #0x28] // [V13 tmp8]
- str wzr, [fp, #0x2C] // [V13 tmp8+0x04]
- strb wzr, [fp, #0x20] // [V14 tmp9]
- strb wzr, [fp, #0x21] // [V14 tmp9+0x01]
- ldr x2, [fp, #0x28] // [V13 tmp8]
- ldrh w3, [fp, #0x20] // [V14 tmp9]
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
@@ -60,8 +54,7 @@ G_M25941_IG02: ; bbWeight=1, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=000
movk x1, #0xD1FFAB1E LSL #32
ldr x4, [x11]
blr x4
- ; byrRegs -[x14]
- ldr x14, [fp, #0x18] // [TEMP_01]
+ add x14, x19, #8
; byrRegs +[x14]
mov x15, x0
; gcrRegs +[x15]
@@ -75,14 +68,14 @@ G_M25941_IG02: ; bbWeight=1, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x15 x19-x20]
; byrRegs -[x14]
- ;; size=92 bbWeight=1 PerfScore 22.50
+ ;; size=84 bbWeight=1 PerfScore 19.50
G_M25941_IG03: ; bbWeight=1, epilog, nogc, extend
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x40
+ ldp x19, x20, [sp, #0x20]
+ ldp fp, lr, [sp], #0x30
ret lr
;; size=12 bbWeight=1 PerfScore 3.00
-; Total bytes of code 128, prolog size 16, PerfScore 30.00, instruction count 32, allocated bytes for code 128 (MethodHash=3a149aaa) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
+; Total bytes of code 116, prolog size 12, PerfScore 26.00, instruction count 29, allocated bytes for code 116 (MethodHash=3a149aaa) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -93,7 +86,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 29 (0x0001d) Actual length = 116 (0x000074)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -101,8 +94,8 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- 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]!
+ 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
+20 (+4.00%) : 23810.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitDoStatement(Microsoft.CodeAnalysis.CSharp.BoundDoStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 29, 28 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]>
+; V00 this [V00,T00] ( 26, 25 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]>
; V01 arg1 [V01,T01] ( 10, 8.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundDoStatement>
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol>
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x22 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x23 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V06 tmp3 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
-; V08 tmp5 [V08 ] ( 5, 4 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
+; V08 tmp5 [V08 ] ( 5, 4 ) struct ( 8) [fp+0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V09 tmp6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
; V10 tmp7 [V10,T03] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
; V11 tmp8 [V11,T04] ( 4, 4 ) byref -> x0 single-def "Inline stloc first use temp"
@@ -24,49 +24,51 @@
; V13 tmp10 [V13,T06] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V15 tmp12 [V15 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V16 tmp13 [V16 ] ( 5, 10 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
+; V16 tmp13 [V16 ] ( 5, 10 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V17 tmp14 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol>
;* V18 tmp15 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
;* V19 tmp16 [V19 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
-; V20 tmp17 [V20,T09] ( 2, 2 ) ubyte -> x22 single-def "field V02.Alive (fldOffset=0x0)" P-INDEP
-; V21 tmp18 [V21,T10] ( 2, 2 ) ubyte -> x23 single-def "field V02.Reported (fldOffset=0x1)" P-INDEP
+; V20 tmp17 [V20,T11] ( 2, 2 ) ubyte -> x23 single-def "field V02.Alive (fldOffset=0x0)" P-INDEP
+; V21 tmp18 [V21,T12] ( 2, 2 ) ubyte -> x24 single-def "field V02.Reported (fldOffset=0x1)" P-INDEP
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.Alive (fldOffset=0x0)" P-INDEP
;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.Reported (fldOffset=0x1)" P-INDEP
-; V24 tmp21 [V24,T11] ( 2, 2 ) ubyte -> x0 single-def "field V07.Alive (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T12] ( 2, 2 ) ubyte -> x1 single-def "field V07.Reported (fldOffset=0x1)" P-INDEP
-; V26 tmp23 [V26 ] ( 3, 2.50) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V08.Alive (fldOffset=0x0)" P-DEP
-; V27 tmp24 [V27 ] ( 3, 2.50) ubyte -> [fp+0x21] do-not-enreg[X] addr-exposed "field V08.Reported (fldOffset=0x1)" P-DEP
-; V28 tmp25 [V28,T13] ( 2, 2 ) ubyte -> x2 single-def "field V09.Alive (fldOffset=0x0)" P-INDEP
-; V29 tmp26 [V29,T14] ( 2, 2 ) ubyte -> x1 single-def "field V09.Reported (fldOffset=0x1)" P-INDEP
+; V24 tmp21 [V24,T13] ( 2, 2 ) ubyte -> x0 single-def "field V07.Alive (fldOffset=0x0)" P-INDEP
+; V25 tmp22 [V25,T14] ( 2, 2 ) ubyte -> x1 single-def "field V07.Reported (fldOffset=0x1)" P-INDEP
+; V26 tmp23 [V26 ] ( 3, 2.50) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed "field V08.Alive (fldOffset=0x0)" P-DEP
+; V27 tmp24 [V27 ] ( 3, 2.50) ubyte -> [fp+0x29] do-not-enreg[X] addr-exposed "field V08.Reported (fldOffset=0x1)" P-DEP
+; V28 tmp25 [V28,T15] ( 2, 2 ) ubyte -> x2 single-def "field V09.Alive (fldOffset=0x0)" P-INDEP
+; V29 tmp26 [V29,T16] ( 2, 2 ) ubyte -> x1 single-def "field V09.Reported (fldOffset=0x1)" P-INDEP
;* V30 tmp27 [V30 ] ( 0, 0 ) ubyte -> zero-ref "field V12.Alive (fldOffset=0x0)" P-INDEP
;* V31 tmp28 [V31 ] ( 0, 0 ) ubyte -> zero-ref "field V12.Reported (fldOffset=0x1)" P-INDEP
-; V32 tmp29 [V32,T17] ( 2, 1 ) ubyte -> x1 single-def "field V14.Alive (fldOffset=0x0)" P-INDEP
-; V33 tmp30 [V33,T18] ( 2, 1 ) ubyte -> x2 single-def "field V14.Reported (fldOffset=0x1)" P-INDEP
-; V34 tmp31 [V34 ] ( 3, 4 ) ubyte -> [fp+0x18] do-not-enreg[X] addr-exposed "field V16.Alive (fldOffset=0x0)" P-DEP
-; V35 tmp32 [V35 ] ( 3, 4 ) ubyte -> [fp+0x19] do-not-enreg[X] addr-exposed "field V16.Reported (fldOffset=0x1)" P-DEP
+; V32 tmp29 [V32,T19] ( 2, 1 ) ubyte -> x2 single-def "field V14.Alive (fldOffset=0x0)" P-INDEP
+; V33 tmp30 [V33,T20] ( 2, 1 ) ubyte -> x1 single-def "field V14.Reported (fldOffset=0x1)" P-INDEP
+; V34 tmp31 [V34 ] ( 3, 4 ) ubyte -> [fp+0x20] do-not-enreg[X] addr-exposed "field V16.Alive (fldOffset=0x0)" P-DEP
+; V35 tmp32 [V35 ] ( 3, 4 ) ubyte -> [fp+0x21] do-not-enreg[X] addr-exposed "field V16.Reported (fldOffset=0x1)" P-DEP
;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Alive (fldOffset=0x0)" P-INDEP
;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V18.Reported (fldOffset=0x1)" P-INDEP
-; V38 tmp35 [V38,T15] ( 2, 2 ) ubyte -> x0 single-def "field V19.Alive (fldOffset=0x0)" P-INDEP
-; V39 tmp36 [V39,T16] ( 2, 2 ) ubyte -> x1 single-def "field V19.Reported (fldOffset=0x1)" P-INDEP
-; V40 tmp37 [V40,T07] ( 3, 3 ) struct ( 8) [fp+0x10] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
-; V41 tmp38 [V41,T08] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
-;* V42 tmp39 [V42,T19] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V43 cse0 [V43,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
+; V38 tmp35 [V38,T17] ( 2, 2 ) ubyte -> x0 single-def "field V19.Alive (fldOffset=0x0)" P-INDEP
+; V39 tmp36 [V39,T18] ( 2, 2 ) ubyte -> x1 single-def "field V19.Reported (fldOffset=0x1)" P-INDEP
+; V40 tmp37 [V40,T10] ( 3, 3 ) struct ( 8) [fp+0x18] do-not-enreg[SF] "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState>
+; V41 cse0 [V41,T05] ( 4, 4 ) long -> x21 "CSE - aggressive"
+; V42 cse1 [V42,T07] ( 3, 3 ) byref -> x22 "CSE - aggressive"
+; V43 cse2 [V43,T08] ( 3, 3 ) byref -> x25 "CSE - aggressive"
+; V44 cse3 [V44,T09] ( 3, 3 ) byref -> x26 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M21086_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x70]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
- str xzr, [fp, #0x20] // [V08 tmp5]
+ str xzr, [fp, #0x28] // [V08 tmp5]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -89,7 +91,9 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcrRegs -[x0-x1]
ldr x2, [x20, #0x20]
; gcrRegs +[x2]
- add x1, x19, #116
+ add x22, x19, #116
+ ; byrRegs +[x22]
+ mov x1, x22
; byrRegs +[x1]
mov x0, x19
; gcrRegs +[x0]
@@ -100,31 +104,35 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x3
; gcrRegs -[x0 x2]
; byrRegs -[x1]
- ldr x22, [x20, #0x28]
- ; gcrRegs +[x22]
+ ldr x23, [x20, #0x28]
+ ; gcrRegs +[x23]
mov x0, x19
; gcrRegs +[x0]
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
ldr x2, [x21, #0x48]
ldr x2, [x2, #0x20]
blr x2
; gcrRegs -[x1]
mov x0, x19
- mov x1, x22
+ mov x1, x23
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:AdjustConditionalState(Microsoft.CodeAnalysis.CSharp.BoundExpression):this
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
- ; gcrRegs -[x0-x1 x22]
- ldrb w22, [x19, #0x78]
- ldrb w23, [x19, #0x79]
+ ; gcrRegs -[x0-x1 x23]
+ ldrb w23, [x19, #0x78]
+ ldrb w24, [x19, #0x79]
ldrb w0, [x19, #0x76]
ldrb w1, [x19, #0x77]
- strh wzr, [x19, #0x78]
- strh wzr, [x19, #0x76]
+ add x25, x19, #120
+ ; byrRegs +[x25]
+ strh wzr, [x25]
+ add x26, x19, #118
+ ; byrRegs +[x26]
+ strh wzr, [x26]
strb wzr, [x19, #0x71]
strb w0, [x19, #0x74]
strb w1, [x19, #0x75]
@@ -143,11 +151,11 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
cbz x0, G_M21086_IG06
ldrb w2, [x0]
ldrb w1, [x0, #0x01]
- strb w2, [fp, #0x20] // [V26 tmp23]
- strb w1, [fp, #0x21] // [V27 tmp24]
- add x2, x19, #116
+ strb w2, [fp, #0x28] // [V26 tmp23]
+ strb w1, [fp, #0x29] // [V27 tmp24]
+ mov x2, x22
; byrRegs +[x2]
- add x1, fp, #32 // [V08 tmp5]
+ add x1, fp, #40 // [V08 tmp5]
mov x0, x19
; gcrRegs +[x0]
; byrRegs -[x0]
@@ -155,20 +163,20 @@ G_M21086_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3, #0x10]
blr x3
; gcrRegs -[x0]
- ; byrRegs -[x2]
+ ; byrRegs -[x2 x22]
cbz w0, G_M21086_IG04
- ;; size=252 bbWeight=1 PerfScore 94.50
-G_M21086_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=264 bbWeight=1 PerfScore 96.00
+G_M21086_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=6000000 {x25 x26}, byref
ldr x0, [x19, #0x58]
; gcrRegs +[x0]
- ldrb w1, [fp, #0x20] // [V26 tmp23]
- ldrb w2, [fp, #0x21] // [V27 tmp24]
+ ldrb w2, [fp, #0x28] // [V26 tmp23]
+ ldrb w1, [fp, #0x29] // [V27 tmp24]
ldrsb wzr, [x0]
- strb w1, [fp, #0x10] // [V40 tmp37]
- strb w2, [fp, #0x11] // [V40 tmp37+0x01]
+ strb w2, [fp, #0x18] // [V40 tmp37]
+ strb w1, [fp, #0x19] // [V40 tmp37+0x01]
+ ldrh w2, [fp, #0x18] // [V40 tmp37]
mov x1, x20
; gcrRegs +[x1]
- ldrh w2, [fp, #0x10] // [V40 tmp37]
mov w3, #1
movz x4, #0xD1FFAB1E // code for <unknown method>
movk x4, #0xD1FFAB1E LSL #16
@@ -184,12 +192,12 @@ G_M21086_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
mov w2, #1
strb w2, [x19, #0x70]
;; size=84 bbWeight=0.50 PerfScore 13.75
-G_M21086_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- strb w22, [fp, #0x18] // [V34 tmp31]
- strb w23, [fp, #0x19] // [V35 tmp32]
+G_M21086_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=6000000 {x25 x26}, byref
+ strb w23, [fp, #0x20] // [V34 tmp31]
+ strb w24, [fp, #0x21] // [V35 tmp32]
ldr x2, [x20, #0x18]
; gcrRegs +[x2]
- add x1, fp, #24 // [V16 tmp13]
+ add x1, fp, #32 // [V16 tmp13]
mov x0, x19
; gcrRegs +[x0]
movz x3, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:JoinPendingBranches(byref,Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol):this
@@ -198,24 +206,26 @@ G_M21086_IG04: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0 x2 x20]
- ldrb w0, [fp, #0x18] // [V34 tmp31]
- ldrb w1, [fp, #0x19] // [V35 tmp32]
- strh wzr, [x19, #0x78]
- strh wzr, [x19, #0x76]
+ ldrb w0, [fp, #0x20] // [V34 tmp31]
+ ldrb w1, [fp, #0x21] // [V35 tmp32]
+ strh wzr, [x25]
+ strh wzr, [x26]
strb wzr, [x19, #0x71]
strb w0, [x19, #0x74]
strb w1, [x19, #0x75]
mov x0, xzr
;; size=72 bbWeight=1 PerfScore 21.00
G_M21086_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x23, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
- ldp fp, lr, [sp], #0x50
+ ldp x25, x26, [sp, #0x60]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x70
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M21086_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x19] +[x20]
+ ; byrRegs -[x25-x26]
mov x1, x20
; gcrRegs +[x1]
...
+16 (+6.90%) : 26188.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
-; V01 arg1 [V01,T01] ( 5, 5 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
-; V02 arg2 [V02,T03] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+; V00 this [V00,T01] ( 4, 3.50) ref -> x20 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2>
+; V01 arg1 [V01,T00] ( 15, 15 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundCall>
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundExpression>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V04 loc1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,7 +27,7 @@
;* V16 tmp11 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]>
;* V17 tmp12 [V17 ] ( 0, 0 ) struct ( 8) zero-ref single-def "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
;* V18 tmp13 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]>
-; V19 tmp14 [V19,T04] ( 2, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+; V19 tmp14 [V19,T03] ( 2, 4 ) ref -> x2 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
;* V20 tmp15 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V03.array (fldOffset=0x0)" P-INDEP
;* V21 tmp16 [V21 ] ( 0, 0 ) ref -> zero-ref "field V06.array (fldOffset=0x0)" P-INDEP
;* V22 tmp17 [V22 ] ( 0, 0 ) ref -> zero-ref "field V08.array (fldOffset=0x0)" P-INDEP
@@ -37,30 +37,27 @@
;* V26 tmp21 [V26 ] ( 0, 0 ) long -> zero-ref "field V14._bits0 (fldOffset=0x8)" P-INDEP
;* V27 tmp22 [V27 ] ( 0, 0 ) int -> zero-ref "field V14._capacity (fldOffset=0x10)" P-INDEP
;* V28 tmp23 [V28 ] ( 0, 0 ) ref -> zero-ref "field V16.array (fldOffset=0x0)" P-INDEP
-; V29 tmp24 [V29,T15] ( 3, 2 ) ref -> x22 single-def "field V17.array (fldOffset=0x0)" P-INDEP
-; V30 tmp25 [V30,T14] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
-; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
-; V32 tmp27 [V32,T00] ( 12, 24 ) ref -> x19 single-def "argument with side effect"
-; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
-; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V35 tmp30 [V35,T07] ( 2, 4 ) ref -> x3 single-def "argument with side effect"
-; V36 tmp31 [V36,T08] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
-; V37 tmp32 [V37,T09] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
-; V38 tmp33 [V38,T11] ( 2, 4 ) int -> x6 "argument with side effect"
-; V39 tmp34 [V39,T12] ( 2, 4 ) int -> x7 "argument with side effect"
-; V40 tmp35 [V40,T13] ( 2, 4 ) int -> x8 "argument with side effect"
-; V41 tmp36 [V41,T10] ( 2, 4 ) ref -> x9 single-def "argument with side effect"
+; V29 tmp24 [V29,T12] ( 3, 2 ) ref -> x3 single-def "field V17.array (fldOffset=0x0)" P-INDEP
+; V30 tmp25 [V30,T11] ( 3, 2.50) ref -> x2 single-def "field V18.array (fldOffset=0x0)" P-INDEP
+; V31 tmp26 [V31 ] ( 2, 4 ) struct (24) [fp+0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.BitVector>
+; V32 tmp27 [V32,T04] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
+; V33 tmp28 [V33,T05] ( 2, 4 ) ref -> x5 single-def "argument with side effect"
+; V34 tmp29 [V34,T06] ( 2, 4 ) ref -> x6 single-def "argument with side effect"
+; V35 tmp30 [V35,T08] ( 2, 4 ) int -> x7 "argument with side effect"
+; V36 tmp31 [V36,T09] ( 2, 4 ) int -> x0 "argument with side effect"
+; V37 tmp32 [V37,T10] ( 2, 4 ) int -> x1 "argument with side effect"
+; V38 tmp33 [V38,T07] ( 2, 4 ) ref -> x8 single-def "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M26558_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub sp, sp, #128
+ sub sp, sp, #112
stp fp, lr, [sp, #0x30]
- stp x19, x20, [sp, #0x60]
- stp x21, x22, [sp, #0x70]
+ stp x19, x20, [sp, #0x58]
+ str x21, [sp, #0x68]
add fp, sp, #48
- stp xzr, xzr, [fp, #0x18] // [V31 tmp26], [V31 tmp26+0x08]
- str xzr, [fp, #0x28] // [V31 tmp26+0x10]
+ stp xzr, xzr, [fp, #0x10] // [V31 tmp26], [V31 tmp26+0x08]
+ str xzr, [fp, #0x20] // [V31 tmp26+0x10]
mov x20, x0
; gcrRegs +[x20]
mov x19, x1
@@ -75,12 +72,12 @@ G_M26558_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
;; size=8 bbWeight=1 PerfScore 4.00
G_M26558_IG03: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
- mov x22, xzr
- ; gcrRegs +[x22]
+ mov x3, xzr
+ ; gcrRegs +[x3]
b G_M26558_IG05
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x22] +[x2]
+ ; gcrRegs -[x3] +[x2]
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E
@@ -92,73 +89,79 @@ G_M26558_IG04: ; bbWeight=0.50, gcrefRegs=380004 {x2 x19 x20 x21}, byrefR
ldr x3, [x3]
blr x3
; gcrRegs -[x2]
- mov x22, x0
- ; gcrRegs +[x22]
- ;; size=40 bbWeight=0.50 PerfScore 4.00
-G_M26558_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- ldr x0, [x19, #0x18]
- ; gcrRegs +[x0]
- ldrsb wzr, [x20]
- mov x1, x21
- ; gcrRegs +[x1]
- ldr x2, [x19, #0x28]
- ; gcrRegs +[x2]
- mov x3, x22
+ mov x3, x0
; gcrRegs +[x3]
- ldp x4, x5, [x19, #0x40]
- ; gcrRegs +[x4-x5]
- ldrb w6, [x19, #0x30]
- ldrb w7, [x19, #0x31]
- ldrb w8, [x19, #0x32]
- ldr x9, [x19, #0x50]
- ; gcrRegs +[x9]
- ;; size=40 bbWeight=1 PerfScore 26.00
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
+G_M26558_IG05: ; bbWeight=1, gcrefRegs=380008 {x3 x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ldr x2, [x19, #0x18]
+ ; gcrRegs +[x2]
+ ldrsb wzr, [x20]
+ ldr x4, [x19, #0x28]
+ ; gcrRegs +[x4]
+ ldp x5, x6, [x19, #0x40]
+ ; gcrRegs +[x5-x6]
+ ldrb w7, [x19, #0x30]
+ ldrb w0, [x19, #0x31]
+ ldrb w1, [x19, #0x32]
+ ldr x8, [x19, #0x50]
+ ; gcrRegs +[x8]
+ ;; size=32 bbWeight=1 PerfScore 25.00
G_M26558_IG06: ; bbWeight=1, nogc, extend
- ldp x10, x11, [x19, #0x58]
- stp x10, x11, [fp, #0x18]
- ldr x10, [x19, #0x68]
- str x10, [fp, #0x28]
+ ldp x9, x10, [x19, #0x58]
+ stp x9, x10, [fp, #0x10]
+ ldr x9, [x19, #0x68]
+ str x9, [fp, #0x20]
;; size=16 bbWeight=1 PerfScore 9.00
G_M26558_IG07: ; bbWeight=1, extend
- ldrb w10, [x19, #0x33]
- str w10, [sp, #0x18] // [V05 OutArgs+0x18]
- ldr x10, [x19, #0x70]
- ; gcrRegs +[x10]
- str x10, [sp, #0x20] // [V05 OutArgs+0x20]
- str x0, [sp, #0x28] // [V05 OutArgs+0x28]
+ ldrb w9, [x19, #0x33]
+ str w9, [sp, #0x18] // [V05 OutArgs+0x18]
+ ldr x9, [x19, #0x70]
+ ; gcrRegs +[x9]
+ str x9, [sp, #0x20] // [V05 OutArgs+0x20]
+ str x2, [sp, #0x28] // [V05 OutArgs+0x28]
+ mov x2, x4
+ mov x4, x5
+ mov x5, x6
+ mov w6, w7
+ ; gcrRegs -[x6]
+ mov w7, w0
+ str w1, [sp] // [V05 OutArgs]
+ str x8, [sp, #0x08] // [V05 OutArgs+0x08]
+ add x0, fp, #16 // [V31 tmp26]
+ str x0, [sp, #0x10] // [V05 OutArgs+0x10]
mov x0, x19
- str w8, [sp] // [V05 OutArgs]
- str x9, [sp, #0x08] // [V05 OutArgs+0x08]
- add x8, fp, #24 // [V31 tmp26]
- str x8, [sp, #0x10] // [V05 OutArgs+0x10]
+ ; gcrRegs +[x0]
+ mov x1, x21
+ ; gcrRegs +[x1]
movz x8, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x8]
movk x8, #0xD1FFAB1E LSL #16
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1-x5 x9-x10 x19-x22]
- ;; size=60 bbWeight=1 PerfScore 18.50
+ ; gcrRegs -[x1-x5 x9 x19-x21]
+ ;; size=84 bbWeight=1 PerfScore 21.50
G_M26558_IG08: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x70]
- ldp x19, x20, [sp, #0x60]
+ ldr x21, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
ldp fp, lr, [sp, #0x30]
- add sp, sp, #128
+ add sp, sp, #112
ret lr
- ;; size=20 bbWeight=1 PerfScore 4.50
+ ;; size=20 bbWeight=1 PerfScore 5.50
-; Total bytes of code 232, prolog size 28, PerfScore 74.25, instruction count 58, allocated bytes for code 232 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
+; Total bytes of code 248, prolog size 28, PerfScore 77.25, instruction count 62, allocated bytes for code 248 (MethodHash=faef9841) for method Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression: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
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -166,9 +169,12 @@ Unwind Info:
---- Unwind codes ----
E2 06 add_fp 6 (0x06); add fp, sp, #48
---- Epilog start at index 2 ----
- E6 save_next
- C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
+ D0 8D save_reg X#2 Z#13 (0x0D); str x21, [sp, #104]
+ C8 0B save_regp X#0 Z#11 (0x0B); stp x19, x20, [sp, #88]
46 save_fplr #6 (0x06); stp fp, lr, [sp, #48]
- 08 alloc_s #8 (0x08); sub sp, sp, #128 (0x080)
+ 07 alloc_s #7 (0x07); sub sp, sp, #112 (0x070)
+ E4 end
+ E4 end
+ E4 end
E4 end
+16 (+12.50%) : 901.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
@@ -8,88 +8,86 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 9, 6.50) ref -> [fp+0x18] this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
+; V00 this [V00,T00] ( 9, 6.50) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]>
; V01 loc0 [V01,T02] ( 3, 2.50) ref -> x1 class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02,T03] ( 3, 2.50) int -> x3
+; V02 loc1 [V02,T03] ( 3, 2.50) int -> x2
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
-; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x2 single-def "argument with side effect"
-; V06 cse0 [V06,T04] ( 3, 2.50) int -> x2 "CSE - aggressive"
-; V07 cse1 [V07,T05] ( 2, 2 ) int -> x4 "CSE - aggressive"
+; V04 tmp1 [V04 ] ( 2, 2 ) struct (32) [fp+0x18] do-not-enreg[XS] addr-exposed "by-value struct argument" <BenchmarkDotNet.Reports.Measurement>
+; V05 tmp2 [V05,T01] ( 3, 3 ) ref -> x3 single-def "argument with side effect"
+; V06 cse0 [V06,T04] ( 3, 2.50) int -> x0 "CSE - aggressive"
+; V07 cse1 [V07,T05] ( 2, 2 ) int -> x3 "CSE - aggressive"
;
-; Lcl frame size = 48
+; Lcl frame size = 40
G_M7274_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
+ str x19, [sp, #0x38]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7274_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x0]
- ldr x1, [x0, #0x18]
+ mov x19, x0
+ ; gcrRegs +[x19]
+ ;; size=16 bbWeight=1 PerfScore 3.00
+G_M7274_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [x19, #0x18]
; gcrRegs +[x1]
- ldr w2, [x0, #0x14]
- sub w3, w2, #1
- ldr w4, [x1, #0x08]
- cmp w4, w3
+ ldr w0, [x19, #0x14]
+ sub w2, w0, #1
+ ldr w3, [x1, #0x08]
+ cmp w3, w2
bls G_M7274_IG05
;; size=24 bbWeight=1 PerfScore 11.00
-G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
- add w2, w2, #1
- str w2, [x0, #0x14]
- str x0, [fp, #0x18] // [V00 this]
- ; GC ptr vars +{V00}
- ldr x2, [x0, #0x20]
- ; gcrRegs +[x2]
- ubfiz x3, x3, #5, #32
- add x3, x3, #16
- add x1, x1, x3
+G_M7274_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ add w0, w0, #1
+ str w0, [x19, #0x14]
+ ldr x3, [x19, #0x20]
+ ; gcrRegs +[x3]
+ ubfiz x0, x2, #5, #32
+ add x0, x0, #16
+ add x1, x1, x0
; gcrRegs -[x1]
; byrRegs +[x1]
- ldp q16, q17, [x1]
- stp q16, q17, [fp, #0x20]
- add x1, fp, #32 // [V04 tmp1]
+ ldp x0, x2, [x1]
+ stp x0, x2, [fp, #0x18]
+ ldp x0, x2, [x1, #0x10]
+ stp x0, x2, [fp, #0x28]
+ add x1, fp, #24 // [V04 tmp1]
; byrRegs -[x1]
- ldr x0, [x2, #0x08]
- ldr x2, [x2, #0x18]
- ; gcrRegs -[x2]
- blr x2
- ; gcrRegs -[x0]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x3, #0x08]
; gcrRegs +[x0]
- str d0, [x0, #0x08]
+ ldr x2, [x3, #0x18]
+ blr x2
+ ; gcrRegs -[x0 x3]
+ str d0, [x19, #0x08]
mov w0, #1
- ; gcrRegs -[x0]
- ;; size=64 bbWeight=0.50 PerfScore 11.25
+ ;; size=64 bbWeight=0.50 PerfScore 12.75
G_M7274_IG04: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[x0]
- ; GC ptr vars -{V00}
- str xzr, [x0, #0x08]
- movn w1, #0
- str w1, [x0, #0x14]
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M7274_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
+ str xzr, [x19, #0x08]
+ movn w0, #0
+ str w0, [x19, #0x14]
mov w0, wzr
- ; gcrRegs -[x0]
;; size=16 bbWeight=0.50 PerfScore 1.50
G_M7274_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x19, [sp, #0x38]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 128, prolog size 8, PerfScore 27.25, instruction count 32, allocated bytes for code 128 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 12, PerfScore 32.25, instruction count 36, allocated bytes for code 144 (MethodHash=937fe395) for method System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 1
+ Code Words : 2
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 36 (0x00024) Actual length = 144 (0x000090)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -100,7 +98,10 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+ D0 07 save_reg X#0 Z#7 (0x07); str x19, [sp, #56]
87 save_fplr_x #7 (0x07); stp fp, lr, [sp, #-64]!
E4 end
E4 end
+ E4 end
+ E4 end
smoke_tests.nativeaot.windows.arm64.checked.mch
-8 (-8.70%) : 8587.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 8
@@ -32,10 +32,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w1, #1
swpal w1, w0, [x0]
; byrRegs -[x0]
- cmp w0, #0
- cset x0, eq
- cbnz w0, G_M21281_IG05
- ;; size=36 bbWeight=1 PerfScore 10.50
+ cbz w0, G_M21281_IG05
+ ;; size=28 bbWeight=1 PerfScore 9.50
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
@@ -57,7 +55,7 @@ G_M21281_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 92, prolog size 12, PerfScore 18.50, instruction count 23, allocated bytes for code 92 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 84, prolog size 12, PerfScore 17.50, instruction count 21, allocated bytes for code 84 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
Unwind Info:
@@ -68,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ 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)
-8 (-8.70%) : 22980.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -9,7 +9,7 @@
;
; V00 this [V00,T00] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ubyte -> x0 "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 8
@@ -31,10 +31,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
mov w1, #1
swpal w1, w0, [x0]
; byrRegs -[x0]
- cmp w0, #0
- cset x0, eq
- cbnz w0, G_M21281_IG05
- ;; size=36 bbWeight=1 PerfScore 10.50
+ cbz w0, G_M21281_IG05
+ ;; size=28 bbWeight=1 PerfScore 9.50
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
@@ -56,7 +54,7 @@ G_M21281_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret lr
;; size=12 bbWeight=0.50 PerfScore 2.00
-; Total bytes of code 92, prolog size 12, PerfScore 18.50, instruction count 23, allocated bytes for code 92 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 84, prolog size 12, PerfScore 17.50, instruction count 21, allocated bytes for code 84 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
Unwind Info:
@@ -67,7 +65,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 23 (0x00017) Actual length = 92 (0x00005c)
+ 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)
-8 (-8.33%) : 12677.dasm - System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
@@ -9,14 +9,12 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> x0 this class-hnd exact single-def <System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction>
; V01 arg1 [V01,T00] ( 6, 6 ) ref -> x1 class-hnd exact single-def <System.Linq.Expressions.Interpreter.InterpretedFrame>
-; V02 loc0 [V02,T08] ( 3, 3 ) int -> x3
+; V02 loc0 [V02,T06] ( 3, 3 ) int -> x4
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T04] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> x1 single-def "arr expr"
-; V06 tmp3 [V06,T02] ( 3, 6 ) int -> x0 "index expr"
+; V04 tmp1 [V04,T04] ( 2, 4 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V05 tmp2 [V05,T01] ( 3, 6 ) ref -> x2 single-def "arr expr"
+; V06 tmp3 [V06,T02] ( 3, 6 ) int -> x1 "index expr"
; V07 tmp4 [V07,T05] ( 2, 4 ) ref -> x2 single-def "argument with side effect"
-; V08 tmp5 [V08,T07] ( 2, 4 ) long -> x3 "argument with side effect"
-; V09 tmp6 [V09,T06] ( 2, 4 ) ref -> x4 single-def "argument with side effect"
;
; Lcl frame size = 0
@@ -26,33 +24,33 @@ G_M22389_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M22389_IG02: ; bbWeight=1, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
- ldr x2, [x1, #0x28]
+ ldr x3, [x1, #0x28]
+ ; gcrRegs +[x3]
+ ldr w4, [x1, #0x40]
+ add w2, w4, #1
+ str w2, [x1, #0x40]
+ ldr x2, [x1, #0x08]
; gcrRegs +[x2]
- ldr w3, [x1, #0x40]
- add w4, w3, #1
- str w4, [x1, #0x40]
- sxtw x3, w3
- ldr x1, [x1, #0x08]
- ldr x1, [x1, #0x08]
- ldr w0, [x0, #0x08]
- ; gcrRegs -[x0]
- ldr w4, [x1, #0x08]
- cmp w0, w4
- bhs G_M22389_IG04
- add x1, x1, #16
+ ldr x2, [x2, #0x08]
+ ldr w1, [x0, #0x08]
; gcrRegs -[x1]
- ; byrRegs +[x1]
- ldr x4, [x1, w0, UXTW #3]
- ; gcrRegs +[x4]
- mov x0, x2
+ ldr w0, [x2, #0x08]
+ ; gcrRegs -[x0]
+ cmp w1, w0
+ bhs G_M22389_IG04
+ add x2, x2, #16
+ ; gcrRegs -[x2]
+ ; byrRegs +[x2]
+ ldr x2, [x2, w1, UXTW #3]
+ ; gcrRegs +[x2]
+ ; byrRegs -[x2]
+ sxtw x1, w4
+ mov x0, x3
; gcrRegs +[x0]
- mov x1, x3
- ; byrRegs -[x1]
- mov x2, x4
bl CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[x0 x2 x4]
+ ; gcrRegs -[x0 x2-x3]
mov w0, #1
- ;; size=72 bbWeight=1 PerfScore 28.00
+ ;; size=64 bbWeight=1 PerfScore 27.00
G_M22389_IG03: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
@@ -62,7 +60,7 @@ G_M22389_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 8, PerfScore 31.50, instruction count 24, allocated bytes for code 96 (MethodHash=ee43a88a) for method System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 30.50, instruction count 22, allocated bytes for code 88 (MethodHash=ee43a88a) for method System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -73,7 +71,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 24 (0x00018) Actual length = 96 (0x000060)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+3.33%) : 17615.dasm - System.Globalization.TextInfo:ChangeCaseCommonSystem.Globalization.TextInfo+ToUpperConversion:this (FullOpts)
@@ -7,10 +7,10 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T01] ( 7, 4.50) ref -> x19 this class-hnd exact single-def <System.Globalization.TextInfo>
+; V00 this [V00,T02] ( 7, 4.50) ref -> x20 this class-hnd exact single-def <System.Globalization.TextInfo>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]>
-;* V03 loc0 [V03,T23] ( 0, 0 ) ubyte -> zero-ref
+;* V03 loc0 [V03,T22] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04 ] ( 5, 2.50) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
;* V05 loc2 [V05 ] ( 0, 0 ) int -> zero-ref
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
@@ -57,7 +57,7 @@
;* V47 tmp37 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V48 tmp38 [V48 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V49 tmp39 [V49 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V50 tmp40 [V50,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V50 tmp40 [V50,T23] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp41 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V52 tmp42 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V53 tmp43 [V53 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
@@ -68,7 +68,7 @@
;* V58 tmp48 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V59 tmp49 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V60 tmp50 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-;* V61 tmp51 [V61,T25] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V61 tmp51 [V61,T24] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V62 tmp52 [V62 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
;* V63 tmp53 [V63 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
;* V64 tmp54 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -78,7 +78,7 @@
;* V68 tmp58 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V69 tmp59 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
; V70 tmp60 [V70,T03] ( 4, 2.50) byref -> x21 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V71 tmp61 [V71,T02] ( 5, 3.50) int -> x20 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V71 tmp61 [V71,T01] ( 5, 3.50) int -> x19 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V72 tmp62 [V72,T04] ( 4, 2.50) byref -> x22 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V73 tmp63 [V73,T05] ( 4, 2.50) int -> x23 single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V74 tmp64 [V74 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP
@@ -101,36 +101,35 @@
;* V91 tmp81 [V91 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V92 tmp82 [V92 ] ( 0, 0 ) byref -> zero-ref single-def "field V41._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp83 [V93 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
-;* V94 tmp84 [V94,T17] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
-;* V95 tmp85 [V95,T26] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-;* V96 tmp86 [V96,T18] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
-;* V97 tmp87 [V97,T27] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
+;* V94 tmp84 [V94,T16] ( 0, 0 ) byref -> zero-ref single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V95 tmp85 [V95,T25] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
+;* V96 tmp86 [V96,T17] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V97 tmp87 [V97,T26] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V98 tmp88 [V98 ] ( 0, 0 ) byref -> zero-ref "field V44._reference (fldOffset=0x0)" P-INDEP
;* V99 tmp89 [V99 ] ( 0, 0 ) int -> zero-ref "field V44._length (fldOffset=0x8)" P-INDEP
-;* V100 tmp90 [V100,T19] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
+;* V100 tmp90 [V100,T18] ( 0, 0 ) byref -> zero-ref single-def "field V47._reference (fldOffset=0x0)" P-INDEP
;* V101 tmp91 [V101 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
-;* V102 tmp92 [V102,T20] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP
-;* V103 tmp93 [V103,T28] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
+;* V102 tmp92 [V102,T19] ( 0, 0 ) byref -> zero-ref single-def "field V51._reference (fldOffset=0x0)" P-INDEP
+;* V103 tmp93 [V103,T27] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
;* V104 tmp94 [V104 ] ( 0, 0 ) byref -> zero-ref single-def "field V52._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp95 [V105 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
-;* V106 tmp96 [V106,T21] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+;* V106 tmp96 [V106,T20] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp97 [V107 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-;* V108 tmp98 [V108,T22] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
-;* V109 tmp99 [V109,T29] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+;* V108 tmp98 [V108,T21] ( 0, 0 ) byref -> zero-ref single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V109 tmp99 [V109,T28] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
;* V110 tmp100 [V110 ] ( 0, 0 ) byref -> zero-ref single-def "field V68._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp101 [V111 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP
;* V112 tmp102 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V69._reference (fldOffset=0x0)" P-INDEP
;* V113 tmp103 [V113 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
; V114 tmp104 [V114,T07] ( 2, 2 ) long -> x21 "Cast away GC"
; V115 tmp105 [V115,T08] ( 2, 2 ) long -> x22 "Cast away GC"
-;* V116 tmp106 [V116,T16] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V117 tmp107 [V117,T09] ( 2, 2 ) long -> x1 "argument with side effect"
-; V118 tmp108 [V118,T10] ( 2, 2 ) int -> x2 "argument with side effect"
-; V119 tmp109 [V119,T11] ( 2, 2 ) long -> x3 "argument with side effect"
-; V120 cse0 [V120,T14] ( 3, 1.50) long -> x0 "CSE - moderate"
-; V121 cse1 [V121,T15] ( 3, 1.50) int -> x0 "CSE - moderate"
-; V122 cse2 [V122,T00] ( 15, 7.50) ref -> x1 multi-def "CSE - aggressive"
-; V123 rat0 [V123,T06] ( 3, 6 ) long -> x24 "fgMakeTemp is creating a new local variable"
+; V116 tmp106 [V116,T09] ( 2, 2 ) long -> x2 "argument with side effect"
+; V117 tmp107 [V117,T10] ( 2, 2 ) int -> x3 "argument with side effect"
+; V118 tmp108 [V118,T11] ( 2, 2 ) long -> x4 "argument with side effect"
+; V119 cse0 [V119,T14] ( 3, 1.50) long -> x1 "CSE - moderate"
+; V120 cse1 [V120,T15] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V121 cse2 [V121,T00] ( 15, 7.50) ref -> x1 multi-def "CSE - aggressive"
+; V122 rat0 [V122,T06] ( 3, 6 ) long -> x24 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 32
@@ -141,26 +140,26 @@ G_M14148_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x23, x24, [sp, #0x50]
mov fp, sp
stp xzr, xzr, [fp, #0x18] // [V09 loc6], [V07 loc4]
- mov x19, x0
- ; gcrRegs +[x19]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov x21, x1
; byrRegs +[x21]
- mov w20, w2
+ mov w19, w2
mov x22, x3
; byrRegs +[x22]
mov w23, w4
;; size=44 bbWeight=1 PerfScore 8.00
-G_M14148_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M14148_IG02: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
adrp x24, [HIGH RELOC #0xD1FFAB1E]
add x24, x24, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x24, #-0x08]
cbnz x0, G_M14148_IG14
;; size=16 bbWeight=1 PerfScore 5.00
-G_M14148_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M14148_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
ldrb w0, [x24]
cbz w0, G_M14148_IG05
;; size=8 bbWeight=1 PerfScore 4.00
-G_M14148_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref
+G_M14148_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x1]
@@ -169,11 +168,11 @@ G_M14148_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
bl <unknown method>
; gcrRegs -[x0-x1]
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M14148_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- cbnz w20, G_M14148_IG07
+G_M14148_IG05: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ cbnz w19, G_M14148_IG07
;; size=4 bbWeight=1 PerfScore 1.00
G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[x19]
+ ; gcrRegs -[x20]
; byrRegs -[x21-x22]
ldp x23, x24, [sp, #0x50]
ldp x21, x22, [sp, #0x40]
@@ -181,19 +180,19 @@ G_M14148_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=0.50 PerfScore 2.50
-G_M14148_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
- ; gcrRegs +[x19]
+G_M14148_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, gcvars, byref, isz
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
str wzr, [fp, #0x28] // [V04 loc1]
- ldrb w0, [x19, #0x31]
+ ldrb w0, [x20, #0x31]
cbnz w0, G_M14148_IG08
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
bl <unknown method>
; gcrRegs -[x0]
;; size=20 bbWeight=0.50 PerfScore 3.25
-G_M14148_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x31]
+G_M14148_IG08: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x31]
cmp w0, #2
beq G_M14148_IG09
cmp w0, #1
@@ -208,11 +207,11 @@ G_M14148_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
bl <unknown method>
; gcrRegs -[x0-x1]
;; size=44 bbWeight=0.50 PerfScore 4.75
-G_M14148_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
- ldrb w0, [x19, #0x31]
+G_M14148_IG09: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
+ ldrb w0, [x20, #0x31]
cmp w0, #2
bne G_M14148_IG12
- tbz w20, #31, G_M14148_IG10
+ tbz w19, #31, G_M14148_IG10
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x1]
@@ -221,7 +220,7 @@ G_M14148_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
bl <unknown method>
; gcrRegs -[x0-x1]
;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M14148_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M14148_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
tbz w23, #31, G_M14148_IG11
adrp x1, [HIGH RELOC #0xD1FFAB1E]
add x1, x1, [LOW RELOC #0xD1FFAB1E]
@@ -231,10 +230,10 @@ G_M14148_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
bl <unknown method>
; gcrRegs -[x0-x1]
;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M14148_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref, isz
+G_M14148_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref, isz
mov x0, x21
; byrRegs +[x0]
- mov w1, w20
+ mov w1, w19
mov x2, x22
; byrRegs +[x2]
mov w3, w23
@@ -250,30 +249,33 @@ G_M14148_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {
mov x0, x1
; gcrRegs +[x0]
bl <unknown method>
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
; byrRegs -[x21-x22]
b G_M14148_IG06
;; size=56 bbWeight=0.50 PerfScore 4.75
-G_M14148_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=600000 {x21 x22}, byref
- ; gcrRegs +[x19]
+G_M14148_IG12: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=600000 {x21 x22}, byref
+ ; gcrRegs +[x20]
; byrRegs +[x21-x22]
stp x22, x21, [fp, #0x18] // [V09 loc6], [V07 loc4]
- ldr w0, [fp, #0x28] // [V04 loc1]
- sbfiz x0, x0, #1, #32
- add x1, x21, x0
- ldr w2, [fp, #0x28] // [V04 loc1]
- sub w2, w20, w2
- add x3, x22, x0
- mov x0, x19
- ; gcrRegs +[x0]
+ ldr w1, [fp, #0x28] // [V04 loc1]
+ sbfiz x1, x1, #1, #32
+ add x2, x21, x1
+ ldr w3, [fp, #0x28] // [V04 loc1]
+ sub w3, w19, w3
+ add x4, x22, x1
+ mov x1, x2
+ mov w2, w3
+ mov x3, x4
ldr w4, [fp, #0x28] // [V04 loc1]
sub w4, w23, w4
+ mov x0, x20
+ ; gcrRegs +[x0]
mov w5, #1
bl System.Globalization.TextInfo:ChangeCaseCore(ulong,int,ulong,int,ubyte):this
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0 x20]
; byrRegs -[x21-x22]
stp xzr, xzr, [fp, #0x18] // [V09 loc6], [V07 loc4]
- ;; size=52 bbWeight=0.50 PerfScore 6.50
+ ;; size=64 bbWeight=0.50 PerfScore 7.25
G_M14148_IG13: ; bbWeight=0.50, epilog, nogc, extend
...
+16 (+10.81%) : 2596.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
@@ -13,16 +13,15 @@
; V03 arg3 [V03,T03] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T04] ( 3, 3 ) long -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T10] ( 2, 2 ) int -> x19
+; V06 loc1 [V06,T09] ( 2, 2 ) int -> x19
;* V07 loc2 [V07 ] ( 0, 0 ) long -> zero-ref
; V08 loc3 [V08 ] ( 2, 2 ) byref -> [fp+0x58] must-init pinned
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 4, 3 ) byref -> x1 "Inline return value spill temp"
+; V10 tmp1 [V10,T08] ( 4, 3 ) byref -> x1 "Inline return value spill temp"
; V11 tmp2 [V11,T05] ( 2, 4 ) int -> x0 "Single return block return value"
; V12 PInvokeFrame [V12 ] ( 3, 3 ) struct (40) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V13 tmp4 [V13,T06] ( 2, 4 ) long -> x1 "Cast away GC"
-; V14 tmp5 [V14,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V15 tmp6 [V15,T08] ( 2, 4 ) long -> x1 "argument with side effect"
+; V14 tmp5 [V14,T07] ( 2, 4 ) long -> x1 "argument with side effect"
; TEMP_02 int -> [fp+0x54]
; TEMP_01 int -> [fp+0x50]
; TEMP_05 long -> [fp+0x48]
@@ -58,19 +57,23 @@ G_M23060_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M23060_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
str x1, [fp, #0x58] // [V08 loc3]
- stp x1, x0, [fp, #0x40] // [TEMP_04], [TEMP_05]
+ str x1, [fp, #0x48] // [TEMP_05]
uxth w2, w2
- stp w3, w2, [fp, #0x50] // [TEMP_02]
+ str w2, [fp, #0x54] // [TEMP_02]
+ str x0, [fp, #0x40] // [TEMP_04]
+ str w3, [fp, #0x50] // [TEMP_01]
str x4, [fp, #0x38] // [TEMP_03]
add x0, fp, #16 // [V12 PInvokeFrame]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M23060_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
bl CORINFO_HELP_JIT_PINVOKE_BEGIN
- ldp x1, x0, [fp, #0x40] // [TEMP_04], [TEMP_05]
- ldp w3, w2, [fp, #0x50] // [TEMP_02]
+ ldr x1, [fp, #0x48] // [TEMP_05]
+ ldr w2, [fp, #0x54] // [TEMP_02]
+ ldr x0, [fp, #0x40] // [TEMP_04]
+ ldr w3, [fp, #0x50] // [TEMP_01]
ldr x4, [fp, #0x38] // [TEMP_03]
- ;; size=16 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 11.00
G_M23060_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl <unknown method>
mov w19, w0
@@ -91,7 +94,7 @@ G_M23060_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-; Total bytes of code 148, prolog size 32, PerfScore 35.00, instruction count 37, allocated bytes for code 148 (MethodHash=6585a5eb) for method Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
+; Total bytes of code 164, prolog size 32, PerfScore 40.00, instruction count 41, allocated bytes for code 164 (MethodHash=6585a5eb) for method Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -102,7 +105,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)
+16 (+10.81%) : 8332.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
@@ -14,16 +14,15 @@
; V03 arg3 [V03,T03] ( 3, 3 ) int -> x3 single-def
; V04 arg4 [V04,T04] ( 3, 3 ) long -> x4 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ubyte -> zero-ref
-; V06 loc1 [V06,T10] ( 2, 2 ) int -> x19
+; V06 loc1 [V06,T09] ( 2, 2 ) int -> x19
;* V07 loc2 [V07 ] ( 0, 0 ) long -> zero-ref
; V08 loc3 [V08 ] ( 2, 2 ) byref -> [fp+0x58] must-init pinned
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T09] ( 4, 3 ) byref -> x1 "Inline return value spill temp"
+; V10 tmp1 [V10,T08] ( 4, 3 ) byref -> x1 "Inline return value spill temp"
; V11 tmp2 [V11,T05] ( 2, 4 ) int -> x0 "Single return block return value"
; V12 PInvokeFrame [V12 ] ( 3, 3 ) struct (40) [fp+0x10] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
; V13 tmp4 [V13,T06] ( 2, 4 ) long -> x1 "Cast away GC"
-; V14 tmp5 [V14,T07] ( 2, 4 ) long -> x0 "argument with side effect"
-; V15 tmp6 [V15,T08] ( 2, 4 ) long -> x1 "argument with side effect"
+; V14 tmp5 [V14,T07] ( 2, 4 ) long -> x1 "argument with side effect"
; TEMP_02 int -> [fp+0x54]
; TEMP_01 int -> [fp+0x50]
; TEMP_05 long -> [fp+0x48]
@@ -59,19 +58,23 @@ G_M23060_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M23060_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref
str x1, [fp, #0x58] // [V08 loc3]
- stp x1, x0, [fp, #0x40] // [TEMP_04], [TEMP_05]
+ str x1, [fp, #0x48] // [TEMP_05]
uxth w2, w2
- stp w3, w2, [fp, #0x50] // [TEMP_02]
+ str w2, [fp, #0x54] // [TEMP_02]
+ str x0, [fp, #0x40] // [TEMP_04]
+ str w3, [fp, #0x50] // [TEMP_01]
str x4, [fp, #0x38] // [TEMP_03]
add x0, fp, #16 // [V12 PInvokeFrame]
- ;; size=24 bbWeight=1 PerfScore 5.00
+ ;; size=32 bbWeight=1 PerfScore 7.00
G_M23060_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1]
bl CORINFO_HELP_JIT_PINVOKE_BEGIN
- ldp x1, x0, [fp, #0x40] // [TEMP_04], [TEMP_05]
- ldp w3, w2, [fp, #0x50] // [TEMP_02]
+ ldr x1, [fp, #0x48] // [TEMP_05]
+ ldr w2, [fp, #0x54] // [TEMP_02]
+ ldr x0, [fp, #0x40] // [TEMP_04]
+ ldr w3, [fp, #0x50] // [TEMP_01]
ldr x4, [fp, #0x38] // [TEMP_03]
- ;; size=16 bbWeight=1 PerfScore 8.00
+ ;; size=24 bbWeight=1 PerfScore 11.00
G_M23060_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl <unknown method>
mov w19, w0
@@ -92,7 +95,7 @@ G_M23060_IG08: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-; Total bytes of code 148, prolog size 32, PerfScore 35.00, instruction count 37, allocated bytes for code 148 (MethodHash=6585a5eb) for method Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
+; Total bytes of code 164, prolog size 32, PerfScore 40.00, instruction count 41, allocated bytes for code 164 (MethodHash=6585a5eb) for method Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -103,7 +106,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ 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)
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch
831
201
28
602
-2,996
+536
benchmarks.run_pgo.windows.arm64.checked.mch
4,474
1,916
10
2,548
-42,800
+72
benchmarks.run_tiered.windows.arm64.checked.mch
819
646
13
160
-14,116
+192
coreclr_tests.run.windows.arm64.checked.mch
7,983
5,696
123
2,164
-229,580
+1,088
libraries.crossgen2.windows.arm64.checked.mch
4,919
984
189
3,746
-14,260
+2,360
libraries.pmi.windows.arm64.checked.mch
7,358
1,375
336
5,647
-15,064
+3,776
libraries_tests.run.windows.arm64.Release.mch
25,696
20,028
324
5,344
-437,008
+7,264
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
18,289
3,367
418
14,504
-35,568
+4,012
realworld.run.windows.arm64.checked.mch
1,637
415
73
1,149
-9,652
+1,128
smoke_tests.nativeaot.windows.arm64.checked.mch
268
70
28
170
-564
+224
72,274
34,698
1,542
36,034
-801,608
+20,652
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
benchmarks.run.windows.arm64.checked.mch
24,445
4
24,441
4 (0.02%)
4 (0.02%)
benchmarks.run_pgo.windows.arm64.checked.mch
98,308
48,543
49,765
125 (0.13%)
125 (0.13%)
benchmarks.run_tiered.windows.arm64.checked.mch
48,501
36,685
11,816
4 (0.01%)
4 (0.01%)
coreclr_tests.run.windows.arm64.checked.mch
595,368
362,737
232,631
317 (0.05%)
317 (0.05%)
libraries.crossgen2.windows.arm64.checked.mch
243,430
15
243,415
0 (0.00%)
0 (0.00%)
libraries.pmi.windows.arm64.checked.mch
304,046
6
304,040
7 (0.00%)
7 (0.00%)
libraries_tests.run.windows.arm64.Release.mch
630,437
461,984
168,453
2,223 (0.35%)
2,225 (0.35%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
316,297
21,559
294,738
4 (0.00%)
4 (0.00%)
realworld.run.windows.arm64.checked.mch
33,192
3
33,189
3 (0.01%)
3 (0.01%)
smoke_tests.nativeaot.windows.arm64.checked.mch
24,181
7
24,174
0 (0.00%)
0 (0.00%)
2,318,205
931,543
1,386,662
2,687 (0.12%)
2,689 (0.12%)
jit-analyze output
benchmarks.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 10961236 (overridden on cmd)
Total bytes of diff: 10958776 (overridden on cmd)
Total bytes of delta: -2460 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
112 : 20858.dasm (1.00 % of base)
60 : 777.dasm (5.79 % of base)
56 : 1841.dasm (0.50 % of base)
56 : 3706.dasm (0.45 % of base)
48 : 20846.dasm (0.79 % of base)
44 : 5896.dasm (1.27 % of base)
20 : 18795.dasm (0.66 % of base)
16 : 908.dasm (12.50 % of base)
12 : 16381.dasm (0.93 % of base)
12 : 18337.dasm (0.31 % of base)
12 : 724.dasm (0.96 % of base)
12 : 17254.dasm (0.28 % of base)
8 : 24360.dasm (1.06 % of base)
8 : 21871.dasm (0.16 % of base)
8 : 7917.dasm (1.56 % of base)
4 : 17344.dasm (0.17 % of base)
4 : 19045.dasm (0.74 % of base)
4 : 2064.dasm (0.76 % of base)
4 : 6711.dasm (0.97 % of base)
4 : 17784.dasm (0.70 % of base)
Top file improvements (bytes):
-440 : 2845.dasm (-10.74 % of base)
-140 : 11290.dasm (-6.01 % of base)
-84 : 6374.dasm (-3.44 % of base)
-76 : 22580.dasm (-12.42 % of base)
-64 : 19236.dasm (-9.70 % of base)
-64 : 19347.dasm (-7.41 % of base)
-60 : 6469.dasm (-1.98 % of base)
-48 : 14296.dasm (-2.17 % of base)
-44 : 17402.dasm (-1.68 % of base)
-40 : 2683.dasm (-1.44 % of base)
-36 : 6392.dasm (-2.48 % of base)
-36 : 11495.dasm (-0.33 % of base)
-36 : 1918.dasm (-6.04 % of base)
-32 : 20253.dasm (-12.90 % of base)
-32 : 21653.dasm (-12.90 % of base)
-32 : 6707.dasm (-10.26 % of base)
-32 : 14725.dasm (-3.15 % of base)
-28 : 6353.dasm (-2.99 % of base)
-28 : 6328.dasm (-3.74 % of base)
-24 : 7547.dasm (-5.66 % of base)
60 total files with Code Size differences (35 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
112 (1.00 % of base) : 20858.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
60 (5.79 % of base) : 777.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
56 (0.50 % of base) : 1841.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
56 (0.45 % of base) : 3706.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.79 % of base) : 20846.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
44 (1.27 % of base) : 5896.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
20 (0.66 % of base) : 18795.dasm - Microsoft.CodeAnalysis.CSharp.LocalScopeBinder:BuildLocals(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (FullOpts)
16 (12.50 % of base) : 908.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
12 (0.28 % of base) : 17254.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (FullOpts)
12 (0.31 % of base) : 18337.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
12 (0.96 % of base) : 724.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
12 (0.93 % of base) : 16381.dasm - System.Net.CertificateValidationPal:GetRequestCertificateAuthorities(System.Net.Security.SafeDeleteContext):System.String[] (FullOpts)
8 (1.06 % of base) : 24360.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
8 (1.56 % of base) : 7917.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
8 (0.16 % of base) : 21871.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts)
4 (0.17 % of base) : 17344.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:CreateRootSingleNamespaceDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.CompilationUnitSyntax,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration],ubyte):Microsoft.CodeAnalysis.CSharp.RootSingleNamespaceDeclaration:this (FullOpts)
4 (0.15 % of base) : 17251.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitNamespaceChildren(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.MemberDeclarationSyntax]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.SingleNamespaceOrTypeDeclaration]:this (FullOpts)
4 (0.74 % of base) : 19045.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (FullOpts)
4 (0.70 % of base) : 17784.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
4 (0.97 % of base) : 6711.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
Top method improvements (bytes):
-440 (-10.74 % of base) : 2845.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-140 (-6.01 % of base) : 11290.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-84 (-3.44 % of base) : 6374.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetFieldTokenNoLock(System.Reflection.FieldInfo):int:this (FullOpts)
-76 (-12.42 % of base) : 22580.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-64 (-9.70 % of base) : 19236.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 19347.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-60 (-1.98 % of base) : 6469.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-48 (-2.17 % of base) : 14296.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-44 (-1.68 % of base) : 17402.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-40 (-1.44 % of base) : 2683.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:.ctor(System.Type):this (FullOpts)
-36 (-2.48 % of base) : 6392.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMemberRefToken(System.Reflection.MethodBase,System.Type[]):int:this (FullOpts)
-36 (-6.04 % of base) : 1918.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-36 (-0.33 % of base) : 11495.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-32 (-3.15 % of base) : 14725.dasm - Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser:ParseStream(System.IO.Stream):System.Collections.Generic.Dictionary`2[System.String,System.String]:this (FullOpts)
-32 (-10.26 % of base) : 6707.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[int,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,int,System.__Canon,System.Exception):this (FullOpts)
-32 (-12.90 % of base) : 21653.dasm - System.Text.Json.Document.Tests.Perf_EnumerateArray:Parse():this (FullOpts)
-32 (-12.90 % of base) : 20253.dasm - System.Text.Json.Document.Tests.Perf_EnumerateObject:Parse():this (FullOpts)
-28 (-3.74 % of base) : 6328.dasm - System.Reflection.Emit.RuntimeMethodBuilder:GetTokenNoLock():int:this (FullOpts)
-28 (-2.99 % of base) : 6353.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenInternal(System.Reflection.MethodBase,System.Type[],ubyte):int:this (FullOpts)
-24 (-3.09 % of base) : 6301.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetTypeTokenWorkerNoLock(System.Type,ubyte):int:this (FullOpts)
Top method regressions (percentages):
16 (12.50 % of base) : 908.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
60 (5.79 % of base) : 777.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
4 (1.82 % of base) : 7548.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
8 (1.56 % of base) : 7917.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (FullOpts)
44 (1.27 % of base) : 5896.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
4 (1.15 % of base) : 10075.dasm - System.Runtime.Serialization.BitFlagsGenerator:LoadArray():this (FullOpts)
8 (1.06 % of base) : 24360.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (FullOpts)
4 (1.02 % of base) : 1910.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitCachingMemberAccessor+Cache`1[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon]]:EvictStaleCacheEntries(long):this (FullOpts)
112 (1.00 % of base) : 20858.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
4 (0.97 % of base) : 6711.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
12 (0.96 % of base) : 724.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (FullOpts)
12 (0.93 % of base) : 16381.dasm - System.Net.CertificateValidationPal:GetRequestCertificateAuthorities(System.Net.Security.SafeDeleteContext):System.String[] (FullOpts)
48 (0.79 % of base) : 20846.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
4 (0.76 % of base) : 2064.dasm - System.Text.Json.Serialization.Metadata.ReflectionEmitMemberAccessor:CreatePropertySetter(System.Reflection.PropertyInfo,System.Type):System.Reflection.Emit.DynamicMethod (FullOpts)
4 (0.74 % of base) : 19045.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder:GetFakeSymbolTokenForIL(Microsoft.Cci.IReference,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.DiagnosticBag):uint:this (FullOpts)
4 (0.70 % of base) : 17784.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (FullOpts)
20 (0.66 % of base) : 18795.dasm - Microsoft.CodeAnalysis.CSharp.LocalScopeBinder:BuildLocals(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):this (FullOpts)
4 (0.60 % of base) : 23789.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
56 (0.50 % of base) : 1841.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
56 (0.45 % of base) : 3706.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
Top method improvements (percentages):
-20 (-14.29 % of base) : 19197.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-16 (-14.29 % of base) : 9724.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
-16 (-13.33 % of base) : 23614.dasm - Span.IndexerBench:SameIndex2():ubyte:this (FullOpts)
-32 (-12.90 % of base) : 21653.dasm - System.Text.Json.Document.Tests.Perf_EnumerateArray:Parse():this (FullOpts)
-32 (-12.90 % of base) : 20253.dasm - System.Text.Json.Document.Tests.Perf_EnumerateObject:Parse():this (FullOpts)
-76 (-12.42 % of base) : 22580.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-440 (-10.74 % of base) : 2845.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-32 (-10.26 % of base) : 6707.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[int,System.__Canon]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,int,System.__Canon,System.Exception):this (FullOpts)
-64 (-9.70 % of base) : 19236.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 19347.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-8 (-6.25 % of base) : 13958.dasm - System.Text.Json.Serialization.Tests.ReadJson`1[int]:DeserializeFromUtf8Bytes():int:this (FullOpts)
-8 (-6.06 % of base) : 3467.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-36 (-6.04 % of base) : 1918.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-140 (-6.01 % of base) : 11290.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-24 (-5.66 % of base) : 7547.dasm - System.Text.Json.Node.Tests.Perf_ParseThenWrite:ParseThenWrite():this (FullOpts)
-20 (-5.43 % of base) : 19488.dasm - Microsoft.Cci.MetadataVisitor:Visit(Microsoft.Cci.ICustomAttribute):this (FullOpts)
-20 (-5.38 % of base) : 15791.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]:ContinueDeserialize(byref,byref,byref):int:this (FullOpts)
-8 (-5.26 % of base) : 21447.dasm - System.Collections.Generic.PriorityQueue`2+UnorderedItemsCollection+Enumerator[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-16 (-5.19 % of base) : 9662.dasm - System.Collections.Stack+StackEnumerator:MoveNext():ubyte:this (FullOpts)
-8 (-5.13 % of base) : 24256.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
benchmarks.run_pgo.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 47394624 (overridden on cmd)
Total bytes of diff: 47351896 (overridden on cmd)
Total bytes of delta: -42728 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 74203.dasm (1.02 % of base)
16 : 81708.dasm (1.03 % of base)
12 : 34435.dasm (0.85 % of base)
4 : 91231.dasm (0.14 % of base)
4 : 82232.dasm (0.16 % of base)
4 : 49236.dasm (0.16 % of base)
4 : 58586.dasm (0.85 % of base)
4 : 69638.dasm (5.88 % of base)
4 : 69686.dasm (0.08 % of base)
4 : 90667.dasm (1.00 % of base)
Top file improvements (bytes):
-296 : 21211.dasm (-1.50 % of base)
-288 : 60668.dasm (-5.22 % of base)
-272 : 55787.dasm (-5.48 % of base)
-248 : 57352.dasm (-10.65 % of base)
-248 : 60375.dasm (-9.63 % of base)
-208 : 68795.dasm (-5.46 % of base)
-196 : 60957.dasm (-4.73 % of base)
-192 : 55453.dasm (-1.85 % of base)
-184 : 61712.dasm (-3.00 % of base)
-184 : 60630.dasm (-2.36 % of base)
-176 : 19828.dasm (-2.57 % of base)
-176 : 44997.dasm (-2.57 % of base)
-172 : 56412.dasm (-2.72 % of base)
-172 : 56483.dasm (-3.70 % of base)
-168 : 17784.dasm (-4.25 % of base)
-168 : 23496.dasm (-2.37 % of base)
-160 : 56878.dasm (-4.69 % of base)
-156 : 71441.dasm (-2.88 % of base)
-152 : 17766.dasm (-5.60 % of base)
-152 : 57938.dasm (-2.85 % of base)
60 total files with Code Size differences (50 improved, 10 regressed), 30 unchanged.
Top method regressions (bytes):
16 (1.02 % of base) : 74203.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
16 (1.03 % of base) : 81708.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
12 (0.85 % of base) : 34435.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.85 % of base) : 58586.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (0.08 % of base) : 69686.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantTriviaOnly>d__175:MoveNext():ubyte:this (Tier1)
4 (5.88 % of base) : 69638.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (0.14 % of base) : 91231.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (0.16 % of base) : 82232.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (0.16 % of base) : 49236.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (1.00 % of base) : 90667.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
Top method improvements (bytes):
-296 (-1.50 % of base) : 21211.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Instrumented Tier0)
-288 (-5.22 % of base) : 60668.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-272 (-5.48 % of base) : 55787.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-248 (-9.63 % of base) : 60375.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-248 (-10.65 % of base) : 57352.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-208 (-5.46 % of base) : 68795.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Instrumented Tier0)
-196 (-4.73 % of base) : 60957.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Instrumented Tier0)
-192 (-1.85 % of base) : 55453.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-184 (-3.00 % of base) : 61712.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-184 (-2.36 % of base) : 60630.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Instrumented Tier0)
-176 (-2.57 % of base) : 19828.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-176 (-2.57 % of base) : 44997.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-172 (-3.70 % of base) : 56483.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-172 (-2.72 % of base) : 56412.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-168 (-4.25 % of base) : 17784.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-168 (-2.37 % of base) : 23496.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Instrumented Tier0)
-160 (-4.69 % of base) : 56878.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-156 (-2.88 % of base) : 71441.dasm - System.Net.Security.SafeDeleteContext:AcceptSecurityContext(byref,byref,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int (Instrumented Tier0)
-152 (-2.85 % of base) : 57938.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol+<Microsoft-Cci-ITypeDefinition-GetExplicitImplementationOverrides>d__30:MoveNext():ubyte:this (Instrumented Tier0)
-152 (-5.60 % of base) : 17766.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (Instrumented Tier0)
Top method regressions (percentages):
4 (5.88 % of base) : 69638.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
16 (1.03 % of base) : 81708.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
16 (1.02 % of base) : 74203.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (1.00 % of base) : 90667.dasm - System.Text.RegularExpressions.RegexCache:GetOrAdd(System.String):System.Text.RegularExpressions.Regex (Instrumented Tier0)
12 (0.85 % of base) : 34435.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.85 % of base) : 58586.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (0.16 % of base) : 49236.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (0.16 % of base) : 82232.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (0.14 % of base) : 91231.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.RuntimeType,System.RuntimeType,ubyte):System.Object[] (Tier1)
4 (0.08 % of base) : 69686.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantTriviaOnly>d__175:MoveNext():ubyte:this (Tier1)
Top method improvements (percentages):
-96 (-29.27 % of base) : 61588.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-96 (-29.27 % of base) : 57226.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 61627.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-88 (-27.16 % of base) : 57288.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 69246.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-44 (-26.83 % of base) : 68825.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-48 (-22.22 % of base) : 68775.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-28 (-21.88 % of base) : 8196.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-56 (-20.90 % of base) : 56000.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-40 (-20.00 % of base) : 71405.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Instrumented Tier0)
-40 (-20.00 % of base) : 4399.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Tier0)
-40 (-20.00 % of base) : 73400.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-36 (-18.75 % of base) : 60291.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Instrumented Tier0)
-36 (-18.75 % of base) : 55202.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-24 (-18.75 % of base) : 38667.dasm - System.Xml.Serialization.XmlSerializer:Deserialize(System.Xml.XmlReader,System.String):System.Object:this (Tier0)
-88 (-18.33 % of base) : 68772.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-40 (-17.86 % of base) : 69247.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-40 (-17.86 % of base) : 68826.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-16.67 % of base) : 57308.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-20 (-15.62 % of base) : 55809.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInExpressionBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken):ubyte (Tier0)
benchmarks.run_tiered.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15343840 (overridden on cmd)
Total bytes of diff: 15329916 (overridden on cmd)
Total bytes of delta: -13924 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
60 : 9810.dasm (5.79 % of base)
48 : 41429.dasm (0.80 % of base)
20 : 43692.dasm (0.76 % of base)
12 : 15661.dasm (0.96 % of base)
12 : 15664.dasm (2.86 % of base)
8 : 48491.dasm (1.06 % of base)
8 : 19052.dasm (1.57 % of base)
4 : 10639.dasm (0.30 % of base)
4 : 38655.dasm (0.70 % of base)
4 : 41468.dasm (5.88 % of base)
4 : 27957.dasm (0.48 % of base)
4 : 38077.dasm (0.85 % of base)
4 : 47045.dasm (0.13 % of base)
Top file improvements (bytes):
-248 : 37038.dasm (-10.65 % of base)
-208 : 40984.dasm (-6.68 % of base)
-172 : 36169.dasm (-3.70 % of base)
-172 : 36098.dasm (-2.72 % of base)
-160 : 36564.dasm (-4.69 % of base)
-140 : 36972.dasm (-11.82 % of base)
-108 : 35495.dasm (-4.08 % of base)
-104 : 36976.dasm (-8.44 % of base)
-96 : 36912.dasm (-29.27 % of base)
-96 : 37236.dasm (-2.12 % of base)
-92 : 36994.dasm (-16.67 % of base)
-88 : 40960.dasm (-18.33 % of base)
-88 : 245.dasm (-10.95 % of base)
-88 : 36974.dasm (-27.16 % of base)
-88 : 40912.dasm (-6.81 % of base)
-84 : 34779.dasm (-10.40 % of base)
-80 : 36922.dasm (-5.13 % of base)
-80 : 37747.dasm (-13.16 % of base)
-80 : 36893.dasm (-5.21 % of base)
-76 : 32905.dasm (-4.05 % of base)
58 total files with Code Size differences (45 improved, 13 regressed), 27 unchanged.
Top method regressions (bytes):
60 (5.79 % of base) : 9810.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
48 (0.80 % of base) : 41429.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
20 (0.76 % of base) : 43692.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
12 (2.86 % of base) : 15664.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
12 (0.96 % of base) : 15661.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
8 (1.06 % of base) : 48491.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
8 (1.57 % of base) : 19052.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
4 (0.85 % of base) : 38077.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
4 (0.70 % of base) : 38655.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
4 (5.88 % of base) : 41468.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (0.48 % of base) : 27957.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:FindValue(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]):byref:this (Tier1)
4 (0.30 % of base) : 10639.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
4 (0.13 % of base) : 47045.dasm - System.Net.Sockets.Socket:Dispose(ubyte):this (Tier1)
Top method improvements (bytes):
-248 (-10.65 % of base) : 37038.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-208 (-6.68 % of base) : 40984.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier0)
-172 (-3.70 % of base) : 36169.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-172 (-2.72 % of base) : 36098.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-160 (-4.69 % of base) : 36564.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-140 (-11.82 % of base) : 36972.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeCall(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-108 (-4.08 % of base) : 35495.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`12[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0)
-104 (-8.44 % of base) : 36976.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-96 (-2.12 % of base) : 37236.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Tier0)
-96 (-29.27 % of base) : 36912.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-92 (-16.67 % of base) : 36994.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-6.81 % of base) : 40912.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDeclarationStatementParts(Microsoft.CodeAnalysis.CSharp.Syntax.LocalDeclarationStatementSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier0)
-88 (-27.16 % of base) : 36974.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-18.33 % of base) : 40960.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-88 (-10.95 % of base) : 245.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:GetListByName(ulong,int,ulong,int,int,int):System.__Canon[]:this (Tier0)
-84 (-10.40 % of base) : 34779.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:Create(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,int,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]],ubyte,byref):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol (Tier0)
-80 (-13.16 % of base) : 37747.dasm - Microsoft.Cci.ReferenceIndexerBase:Visit(Microsoft.Cci.ITypeDefinition):this (Tier0)
-80 (-5.21 % of base) : 36893.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GenerateBaseParameterlessConstructorInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCall (Tier0)
-80 (-5.13 % of base) : 36922.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier0)
-76 (-4.05 % of base) : 32905.dasm - Microsoft.CodeAnalysis.Compilation:Emit(System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.ResourceDescription],Microsoft.CodeAnalysis.Emit.EmitOptions,Microsoft.CodeAnalysis.IMethodSymbol,System.IO.Stream,System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.EmbeddedText],Microsoft.CodeAnalysis.RebuildData,Microsoft.CodeAnalysis.CodeGen.CompilationTestData,System.Threading.CancellationToken):Microsoft.CodeAnalysis.Emit.EmitResult:this (Tier0)
Top method regressions (percentages):
4 (5.88 % of base) : 41468.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
60 (5.79 % of base) : 9810.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
12 (2.86 % of base) : 15664.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (Tier1)
8 (1.57 % of base) : 19052.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:FindStartPositionDeltas[System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+DfaStateHandler[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoZAnchorInputReader[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1+NoAnchorsNullabilityHandler[ulong]](System.ReadOnlySpan`1[ushort],byref,int,byref,byref):ubyte:this (Tier1-OSR)
8 (1.06 % of base) : 48491.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
12 (0.96 % of base) : 15661.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Tier1)
4 (0.85 % of base) : 38077.dasm - Microsoft.Cci.MetadataWriter:GetResolutionScopeHandle(Microsoft.Cci.IUnitReference):System.Reflection.Metadata.EntityHandle:this (Tier0)
48 (0.80 % of base) : 41429.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier1)
20 (0.76 % of base) : 43692.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
4 (0.70 % of base) : 38655.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
4 (0.48 % of base) : 27957.dasm - System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong],System.__Canon]:FindValue(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]):byref:this (Tier1)
4 (0.30 % of base) : 10639.dasm - System.Collections.Hashtable:Insert(System.Object,System.Object,ubyte):this (Tier1)
4 (0.13 % of base) : 47045.dasm - System.Net.Sockets.Socket:Dispose(ubyte):this (Tier1)
Top method improvements (percentages):
-96 (-29.27 % of base) : 36912.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 36974.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 41014.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-48 (-22.22 % of base) : 40963.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-28 (-21.88 % of base) : 7158.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-56 (-20.90 % of base) : 35676.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-40 (-20.00 % of base) : 7621.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Tier0)
-40 (-20.00 % of base) : 43628.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-36 (-18.75 % of base) : 34876.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-24 (-18.75 % of base) : 27373.dasm - System.Xml.Serialization.XmlSerializer:Deserialize(System.Xml.XmlReader,System.String):System.Object:this (Tier0)
-88 (-18.33 % of base) : 40960.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-40 (-17.86 % of base) : 41015.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-16.67 % of base) : 36994.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-20 (-15.62 % of base) : 35485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInExpressionBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.ArrowExpressionClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken):ubyte (Tier0)
-28 (-15.56 % of base) : 23833.dasm - System.Diagnostics.ActivitySource:StartActivity(System.String,int,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset):System.Diagnostics.Activity:this (Tier0)
-32 (-15.38 % of base) : 35481.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.BaseMethodDeclarationSyntax):ubyte (Tier0)
-40 (-15.15 % of base) : 40951.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (Tier0)
-20 (-15.15 % of base) : 34740.dasm - Microsoft.CodeAnalysis.PEModule:HasFixedBufferAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier0)
-24 (-15.00 % of base) : 40992.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceSimpleParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,ubyte,ubyte,System.String,Microsoft.CodeAnalysis.Location):this (Tier0)
-48 (-14.63 % of base) : 36189.dasm - Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData:CreateIfNeeded(Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]):Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData (Tier0)
coreclr_tests.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 495372096 (overridden on cmd)
Total bytes of diff: 495143604 (overridden on cmd)
Total bytes of delta: -228492 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
116 : 284995.dasm (0.15 % of base)
112 : 501152.dasm (1.00 % of base)
48 : 501140.dasm (0.78 % of base)
24 : 392066.dasm (0.34 % of base)
24 : 532202.dasm (3.75 % of base)
20 : 31058.dasm (0.88 % of base)
20 : 486609.dasm (9.26 % of base)
16 : 388534.dasm (0.22 % of base)
16 : 514391.dasm (8.33 % of base)
16 : 538346.dasm (0.28 % of base)
12 : 218735.dasm (0.81 % of base)
12 : 241870.dasm (0.82 % of base)
12 : 356570.dasm (0.99 % of base)
12 : 497978.dasm (0.28 % of base)
12 : 513709.dasm (4.11 % of base)
12 : 532628.dasm (2.38 % of base)
12 : 241996.dasm (0.91 % of base)
12 : 255990.dasm (1.03 % of base)
12 : 514424.dasm (6.98 % of base)
12 : 514646.dasm (5.77 % of base)
Top file improvements (bytes):
-456 : 218316.dasm (-2.07 % of base)
-444 : 287782.dasm (-3.56 % of base)
-440 : 503263.dasm (-10.74 % of base)
-424 : 297681.dasm (-1.10 % of base)
-328 : 507015.dasm (-20.25 % of base)
-316 : 507014.dasm (-14.31 % of base)
-304 : 504356.dasm (-19.49 % of base)
-300 : 504355.dasm (-13.54 % of base)
-300 : 504933.dasm (-19.23 % of base)
-284 : 296504.dasm (-7.77 % of base)
-284 : 288945.dasm (-2.47 % of base)
-280 : 504390.dasm (-16.87 % of base)
-280 : 504932.dasm (-13.11 % of base)
-272 : 246510.dasm (-5.48 % of base)
-272 : 504951.dasm (-17.62 % of base)
-264 : 504389.dasm (-10.86 % of base)
-264 : 503765.dasm (-10.73 % of base)
-260 : 274118.dasm (-2.12 % of base)
-256 : 504593.dasm (-18.55 % of base)
-256 : 505720.dasm (-11.23 % of base)
87 total files with Code Size differences (52 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
116 (0.15 % of base) : 284995.dasm - Test_1000w1d.testout1:Func_0():int (Tier0)
112 (1.00 % of base) : 501152.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
48 (0.78 % of base) : 501140.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
24 (3.75 % of base) : 532202.dasm - DefaultNamespace.DoubLinkBig:.ctor(int):this (FullOpts)
24 (0.34 % of base) : 392066.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
20 (9.26 % of base) : 486609.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.DynamicVariantExtensions:SetAsByrefVariantIndirect(byref,byref) (FullOpts)
20 (0.88 % of base) : 31058.dasm - VectorMgdMgd+HVATests`1[ubyte]:doTests():this (Tier0)
16 (8.33 % of base) : 514391.dasm - (dynamicClass):ABIStress_TailCaller462(ABIStress.S2U,ABIStress.S2U,ABIStress.S2P,ABIStress.S8P,ABIStress.S4P,ABIStress.S2P,ABIStress.S1P,ABIStress.S2P,ABIStress.S1P,ABIStress.S8U,ABIStress.S8U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2U,ABIStress.S8P,ABIStress.S2P,ubyte,float,ABIStress.S2U,short,ubyte,double,long,short):int (FullOpts)
16 (0.22 % of base) : 388534.dasm - Internal.JitInterface.CorInfoImpl:resolveVirtualMethod(ulong):ubyte:this (Tier1)
16 (0.28 % of base) : 538346.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:VisitEq(System.Xml.Xsl.Qil.QilBinary):System.Xml.Xsl.Qil.QilNode:this (FullOpts)
12 (6.98 % of base) : 514424.dasm - (dynamicClass):ABIStress_TailCaller481(ABIStress.S4P,ABIStress.S8U,ubyte,long,long,ABIStress.S1P,ABIStress.S8U,ABIStress.S8U,ubyte,ABIStress.S2P,ABIStress.S2U,float,ABIStress.S8P,ABIStress.S1P,ABIStress.S8P,ABIStress.S8U,ABIStress.S1P,float,ubyte,ABIStress.S8P,ABIStress.S4P,ABIStress.S8P):int (FullOpts)
12 (12.00 % of base) : 515313.dasm - (dynamicClass):ABIStress_TailCaller978(short,ABIStress.S2P,short,ABIStress.S1P,ubyte,double,ABIStress.S8U,ubyte,ABIStress.S4P,ABIStress.S1P,long,short,double,ABIStress.S4U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2P):int (FullOpts)
12 (4.11 % of base) : 513709.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
12 (5.77 % of base) : 514646.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
12 (0.28 % of base) : 497978.dasm - Microsoft.CodeAnalysis.CSharp.DeclarationTreeBuilder:VisitTypeDeclaration(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax,ubyte):Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration:this (FullOpts)
12 (2.38 % of base) : 532628.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
12 (0.81 % of base) : 218735.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (Instrumented Tier1)
12 (0.91 % of base) : 241996.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (Tier1)
12 (0.82 % of base) : 241870.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.String):System.String:this (Instrumented Tier1)
12 (0.99 % of base) : 356570.dasm - System.Reflection.CustomAttribute:GetCustomAttributes(System.Reflection.RuntimeMethodInfo,System.RuntimeType,ubyte):System.Object[] (Tier1)
Top method improvements (bytes):
-456 (-2.07 % of base) : 218316.dasm - Dynamic.CollectionTest:CustomCollection():this (Instrumented Tier0)
-444 (-3.56 % of base) : 287782.dasm - JitTest_huge_struct_Arrays_il.Test:Main():int (MinOpts)
-440 (-10.74 % of base) : 503263.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-424 (-1.10 % of base) : 297681.dasm - DefaultNamespace.cb6054ToByte_all:runTest():ubyte:this (Instrumented Tier0)
-328 (-20.25 % of base) : 507015.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S2U,ABIStress.S11U,ABIStress.S11U,ABIStress.S16U,ABIStress.S6U,ABIStress.S6U,ABIStress.S4P,ABIStress.S14U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S13U,ABIStress.Hfa1,double,ABIStress.S10U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S5U,ABIStress.S9U,ABIStress.S4U,ABIStress.S12U,ABIStress.S2U,ABIStress.Hfa2,float,ABIStress.S6U,ABIStress.S32U):int (MinOpts)
-316 (-14.31 % of base) : 507014.dasm - (dynamicClass):ABIStress_PInvoker929(ABIStress.S17U,ABIStress.S10U,double,System.Numerics.Vector`1[int],System.Int128,int,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S7U,ABIStress.S8P,float,ABIStress.S8U,ABIStress.S15U,ABIStress.S16U,ABIStress.S6U,ABIStress.S31U,ABIStress.S2P,double,ABIStress.S7U,ABIStress.S3U,ABIStress.I128_2,ABIStress.Hfa1,short):int[] (MinOpts)
-304 (-19.49 % of base) : 504356.dasm - (dynamicClass):IL_STUB_PInvoke(double,ABIStress.S13U,ABIStress.S6U,ABIStress.S14U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,ABIStress.S5U,ABIStress.S2U,ABIStress.Hfa1,long,ABIStress.S11U,ABIStress.S12U,ABIStress.S1P,ABIStress.S32U,ABIStress.S10U,long,ABIStress.S15U,ABIStress.S11U,ABIStress.S16U,ABIStress.S4P,ABIStress.S8U,ABIStress.S10U,ABIStress.S32U):int (MinOpts)
-300 (-13.54 % of base) : 504355.dasm - (dynamicClass):ABIStress_PInvoker179(ABIStress.S14U,ABIStress.Hfa2,ABIStress.S8P,ABIStress.I128_2,ABIStress.S16U,ABIStress.S14U,float,ABIStress.I128_1,System.Int128,ABIStress.S14U,short,double,System.Numerics.Vector`1[int],ABIStress.S10U,ABIStress.I128_2,ABIStress.I128_1,ABIStress.S14U,ABIStress.I128_1,ABIStress.S13U,System.Runtime.Intrinsics.Vector128`1[int]):int[] (MinOpts)
-300 (-19.23 % of base) : 504933.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S12U,ABIStress.S2P,ABIStress.S5U,ABIStress.S16U,ABIStress.S15U,ABIStress.S5U,ABIStress.S2P,ABIStress.S15U,ABIStress.S4P,ABIStress.S13U,ABIStress.S3U,long,ABIStress.S8U,ABIStress.S12U,ABIStress.S9U,ABIStress.S9U,ABIStress.S8U,double,double,ABIStress.S3U,ABIStress.S1P,ABIStress.S14U,ABIStress.S6U,ABIStress.S2U,ABIStress.S31U):int (MinOpts)
-284 (-2.47 % of base) : 288945.dasm - JitTest_huge_struct_huge_il.Test:Main():int (Instrumented Tier0)
-284 (-7.77 % of base) : 296504.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMemberAccessWithBoundLeft(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-280 (-13.11 % of base) : 504932.dasm - (dynamicClass):ABIStress_PInvoker334(ABIStress.S12U,ABIStress.S8P,ABIStress.S13U,ABIStress.S6U,short,ABIStress.S4P,ABIStress.S5U):int[] (MinOpts)
-280 (-16.87 % of base) : 504390.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S14U,ABIStress.S2P,float,ABIStress.S15U,ABIStress.S4P,ABIStress.S10U,ABIStress.S13U,ABIStress.S15U,ABIStress.S11U,ABIStress.S2P,ubyte,ABIStress.S8U,ABIStress.S31U,ABIStress.S4U,ABIStress.S14U,ABIStress.S11U,ABIStress.S10U,ABIStress.S15U,double,ABIStress.S17U,short,ABIStress.S31U,ABIStress.Hfa1,ABIStress.Hfa1,ABIStress.S8U):int (MinOpts)
-272 (-17.62 % of base) : 504951.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S16U,ABIStress.S6U,ABIStress.S14U,ABIStress.S11U,ABIStress.S17U,ABIStress.S12U,ubyte,ABIStress.S13U,ABIStress.S2U,ABIStress.S4U,ABIStress.S2P,short,ABIStress.S8U,ABIStress.S17U,ubyte,ABIStress.S3U,ABIStress.Hfa1,ABIStress.S8U,ABIStress.S15U,ABIStress.S11U,ABIStress.S15U,ABIStress.S6U,ABIStress.S2P,ABIStress.S32U):int (MinOpts)
-272 (-5.48 % of base) : 246510.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-264 (-10.86 % of base) : 504389.dasm - (dynamicClass):ABIStress_PInvoker188(short,ABIStress.S14U,ABIStress.S1P,ABIStress.S3U,ABIStress.I128_1,ABIStress.S12U,ABIStress.S15U,ABIStress.S5U,double):int[] (MinOpts)
-264 (-10.73 % of base) : 503765.dasm - (dynamicClass):ABIStress_PInvoker28(ABIStress.S8U,ABIStress.I128_1,ABIStress.S6U,ABIStress.S5U,ABIStress.S2U,ABIStress.S1P,ABIStress.S9U,ABIStress.Hfa2,ABIStress.S11U,ABIStress.I128_2,ABIStress.S14U,ABIStress.S9U,ABIStress.I128_2,ABIStress.S4U,ABIStress.S1P,ABIStress.S17U,ABIStress.S7U,double):int[] (MinOpts)
-260 (-2.12 % of base) : 274118.dasm - JitTest_huge_struct_huge_il.Test:Main():int (MinOpts)
-256 (-11.23 % of base) : 505720.dasm - (dynamicClass):ABIStress_PInvoker552(ABIStress.S11U,ABIStress.S5U,ABIStress.S10U,ABIStress.S4U,float,ABIStress.Hfa2,ubyte,ABIStress.Hfa1,ABIStress.S13U,double,ABIStress.S12U,ABIStress.I128_2,ABIStress.S8P,ABIStress.S13U,ABIStress.S10U):int[] (MinOpts)
-256 (-18.55 % of base) : 504593.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S17U,long,ABIStress.S14U,ABIStress.S15U,int,ABIStress.Hfa2,ubyte,ABIStress.S15U,float,double,long,ABIStress.S17U,ABIStress.S4U,ABIStress.S15U,short,ABIStress.S10U,double,ABIStress.S15U,ABIStress.S32U):int (MinOpts)
Top method regressions (percentages):
12 (12.00 % of base) : 515313.dasm - (dynamicClass):ABIStress_TailCaller978(short,ABIStress.S2P,short,ABIStress.S1P,ubyte,double,ABIStress.S8U,ubyte,ABIStress.S4P,ABIStress.S1P,long,short,double,ABIStress.S4U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2P):int (FullOpts)
20 (9.26 % of base) : 486609.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.DynamicVariantExtensions:SetAsByrefVariantIndirect(byref,byref) (FullOpts)
4 (9.09 % of base) : 515246.dasm - (dynamicClass):ABIStress_TailCaller940(short,ubyte,ABIStress.S2P,float,double,ABIStress.S4P,ABIStress.S1P,int):int (FullOpts)
8 (8.70 % of base) : 515322.dasm - (dynamicClass):ABIStress_TailCaller985(ABIStress.S8P,ABIStress.S4P,ubyte,ABIStress.S8U,float,ubyte,ABIStress.S2P,short,double,int,ubyte):int (FullOpts)
16 (8.33 % of base) : 514391.dasm - (dynamicClass):ABIStress_TailCaller462(ABIStress.S2U,ABIStress.S2U,ABIStress.S2P,ABIStress.S8P,ABIStress.S4P,ABIStress.S2P,ABIStress.S1P,ABIStress.S2P,ABIStress.S1P,ABIStress.S8U,ABIStress.S8U,ABIStress.S8P,ABIStress.S8U,ABIStress.S2U,ABIStress.S8P,ABIStress.S2P,ubyte,float,ABIStress.S2U,short,ubyte,double,long,short):int (FullOpts)
12 (6.98 % of base) : 514424.dasm - (dynamicClass):ABIStress_TailCaller481(ABIStress.S4P,ABIStress.S8U,ubyte,long,long,ABIStress.S1P,ABIStress.S8U,ABIStress.S8U,ubyte,ABIStress.S2P,ABIStress.S2U,float,ABIStress.S8P,ABIStress.S1P,ABIStress.S8P,ABIStress.S8U,ABIStress.S1P,float,ubyte,ABIStress.S8P,ABIStress.S4P,ABIStress.S8P):int (FullOpts)
8 (6.67 % of base) : 514112.dasm - (dynamicClass):ABIStress_TailCaller310(short,ABIStress.S1P,short,ABIStress.S4P,ABIStress.S4P,long,ubyte,ABIStress.S4P,short,ubyte,int,float,ABIStress.S8U):int (FullOpts)
8 (6.25 % of base) : 514364.dasm - (dynamicClass):ABIStress_TailCaller448(short,ABIStress.S2P,ABIStress.S4P,ABIStress.S2P,ABIStress.S1P,ABIStress.S8U,ABIStress.S8P,ABIStress.S1P,float,double,ABIStress.S8U,ABIStress.S2U,ABIStress.S2U,float,ABIStress.S4P,double,ABIStress.S8U):int (FullOpts)
4 (5.88 % of base) : 514268.dasm - (dynamicClass):ABIStress_TailCaller396(ABIStress.S2P,ABIStress.S8P,double,ABIStress.S4U,double,ABIStress.S8U,ABIStress.S8P,short,int,int,double,ABIStress.S2P,ABIStress.S4U,ABIStress.S2P,ABIStress.S4P,ABIStress.S1P,long,double):int (FullOpts)
4 (5.88 % of base) : 410510.dasm - SP1d:M(int,int,int,int,int,int,int):int (FullOpts)
12 (5.77 % of base) : 514646.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
4 (5.56 % of base) : 513848.dasm - (dynamicClass):ABIStress_TailCaller170(ABIStress.S1P,long,short,ABIStress.S4P,long,double,ABIStress.S8P,ABIStress.S4P,ABIStress.S1P,ABIStress.S8P,ABIStress.S2U,int,long,double,ABIStress.S2U,ABIStress.S2P):int (FullOpts)
4 (5.56 % of base) : 515266.dasm - (dynamicClass):ABIStress_TailCaller950(ABIStress.S2P,long,ABIStress.S8P,ABIStress.S4P,float,double,long,ABIStress.S8P,ABIStress.S8P,ABIStress.S4P,ABIStress.S8P,ubyte,double,float,ubyte):int (FullOpts)
4 (5.26 % of base) : 513551.dasm - (dynamicClass):ABIStress_TailCaller13(double,double,ABIStress.S4U,float,ABIStress.S4U,ABIStress.S8U,ABIStress.S8U,double,ABIStress.S8U):int (FullOpts)
4 (5.00 % of base) : 513961.dasm - (dynamicClass):ABIStress_TailCaller230(ubyte,ABIStress.S2P,ABIStress.S8P,short,ABIStress.S2P,ABIStress.S8U,short,ABIStress.S8P):int (FullOpts)
8 (5.00 % of base) : 515293.dasm - (dynamicClass):ABIStress_TailCaller964(ABIStress.S8U,ubyte,ubyte,ABIStress.S8U,ABIStress.S2P,ABIStress.S8P,ubyte,long,short,ubyte,ubyte,ubyte,ABIStress.S2P,ABIStress.S4P,double,ubyte,ABIStress.S8P,ABIStress.S8U,ABIStress.S2U):int (FullOpts)
4 (4.55 % of base) : 514344.dasm - (dynamicClass):ABIStress_TailCaller436(long,ABIStress.S8P,ABIStress.S4U,ABIStress.S8P,ABIStress.S8U,ABIStress.S1P,ABIStress.S1P,ABIStress.S1P,ABIStress.S4P,ABIStress.S4P,long,ABIStress.S2P):int (FullOpts)
8 (4.26 % of base) : 513753.dasm - (dynamicClass):ABIStress_TailCaller121(long,double,double,ABIStress.S1P,ubyte,ABIStress.S2U,ubyte,ABIStress.S2P,short,long,ABIStress.S2U,short,ubyte,ABIStress.S8P,float,ABIStress.S2P,long,short):int (FullOpts)
12 (4.11 % of base) : 513709.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
4 (3.85 % of base) : 589704.dasm - NullableTest:BoxUnboxToQ(System.ValueType):ubyte (FullOpts)
Top method improvements (percentages):
-96 (-29.27 % of base) : 247963.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-27.16 % of base) : 248023.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-44 (-26.83 % of base) : 249914.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-48 (-22.22 % of base) : 249862.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol+LocalWithInitializer:.ctor(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte):this (Tier0)
-56 (-20.90 % of base) : 246726.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-328 (-20.25 % of base) : 507015.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S2U,ABIStress.S11U,ABIStress.S11U,ABIStress.S16U,ABIStress.S6U,ABIStress.S6U,ABIStress.S4P,ABIStress.S14U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S13U,ABIStress.Hfa1,double,ABIStress.S10U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S5U,ABIStress.S9U,ABIStress.S4U,ABIStress.S12U,ABIStress.S2U,ABIStress.Hfa2,float,ABIStress.S6U,ABIStress.S32U):int (MinOpts)
-304 (-19.49 % of base) : 504356.dasm - (dynamicClass):IL_STUB_PInvoke(double,ABIStress.S13U,ABIStress.S6U,ABIStress.S14U,ABIStress.S1P,ABIStress.S13U,ABIStress.S10U,ABIStress.S5U,ABIStress.S2U,ABIStress.Hfa1,long,ABIStress.S11U,ABIStress.S12U,ABIStress.S1P,ABIStress.S32U,ABIStress.S10U,long,ABIStress.S15U,ABIStress.S11U,ABIStress.S16U,ABIStress.S4P,ABIStress.S8U,ABIStress.S10U,ABIStress.S32U):int (MinOpts)
-300 (-19.23 % of base) : 504933.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S12U,ABIStress.S2P,ABIStress.S5U,ABIStress.S16U,ABIStress.S15U,ABIStress.S5U,ABIStress.S2P,ABIStress.S15U,ABIStress.S4P,ABIStress.S13U,ABIStress.S3U,long,ABIStress.S8U,ABIStress.S12U,ABIStress.S9U,ABIStress.S9U,ABIStress.S8U,double,double,ABIStress.S3U,ABIStress.S1P,ABIStress.S14U,ABIStress.S6U,ABIStress.S2U,ABIStress.S31U):int (MinOpts)
-212 (-19.13 % of base) : 506025.dasm - (dynamicClass):ABIStress_PInvoker635(ubyte,ABIStress.S3U,System.Numerics.Vector`1[int],ABIStress.S14U,ABIStress.S9U,ABIStress.Hfa1,ABIStress.S5U,int,System.Int128,float,ABIStress.S17U,ABIStress.S3U,ABIStress.S2P,ABIStress.Hfa2,ABIStress.S9U,ABIStress.S31U,ABIStress.I128_2,ABIStress.S13U,ABIStress.S4U,ABIStress.S32U,System.Runtime.Intrinsics.Vector128`1[int],ABIStress.I128_2,ABIStress.S15U,ABIStress.I128_1,ABIStress.S2U):int[] (MinOpts)
-36 (-18.75 % of base) : 245916.dasm - Microsoft.CodeAnalysis.CachedUseSiteInfo`1[System.__Canon]:Initialize(System.__Canon,Microsoft.CodeAnalysis.UseSiteInfo`1[System.__Canon]):this (Tier0)
-256 (-18.55 % of base) : 504593.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S13U,ABIStress.S17U,long,ABIStress.S14U,ABIStress.S15U,int,ABIStress.Hfa2,ubyte,ABIStress.S15U,float,double,long,ABIStress.S17U,ABIStress.S4U,ABIStress.S15U,short,ABIStress.S10U,double,ABIStress.S15U,ABIStress.S32U):int (MinOpts)
-88 (-18.33 % of base) : 249859.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-252 (-18.10 % of base) : 504244.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S16U,ubyte,ABIStress.S13U,ABIStress.S8U,ABIStress.S15U,ABIStress.S9U,double,ABIStress.S6U,short,ABIStress.S9U,ABIStress.S13U,ABIStress.S8P,ABIStress.Hfa1,ABIStress.S3U,ABIStress.Hfa2,ABIStress.S10U,ABIStress.S17U,ABIStress.S13U,ABIStress.S31U,ABIStress.S2U):int (MinOpts)
-200 (-17.86 % of base) : 505932.dasm - (dynamicClass):ABIStress_PInvoker609(ABIStress.S15U,ABIStress.S9U,ABIStress.S32U,ABIStress.S8U,ABIStress.S14U,ABIStress.S3U,ABIStress.S8P,ABIStress.S6U,ABIStress.Hfa2,ABIStress.S4U,ABIStress.S17U,long,int,int,ABIStress.S5U,ABIStress.I128_1,float,ABIStress.S2P,ABIStress.Hfa1):int[] (MinOpts)
-40 (-17.86 % of base) : 249915.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-32 (-17.78 % of base) : 511542.dasm - (dynamicClass):ABIStress_Stub_Caller15StaticValueTypeGenericOverReferenceTypeGenericOverValueType(ABIStress.S12U,ABIStress.I128_2,System.Int128,long):int (FullOpts)
-204 (-17.71 % of base) : 506302.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S11U,ABIStress.S4U,ubyte,ABIStress.S12U,ABIStress.S13U,ABIStress.S4U,ABIStress.S8U,ABIStress.S10U,float,ABIStress.Hfa1,ABIStress.S13U,ABIStress.S6U,ABIStress.S8P,ABIStress.S10U,ABIStress.S8U,ABIStress.S12U,ABIStress.S17U):int (MinOpts)
-36 (-17.65 % of base) : 296499.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BoundTypeExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-272 (-17.62 % of base) : 504951.dasm - (dynamicClass):IL_STUB_PInvoke(ABIStress.S16U,ABIStress.S6U,ABIStress.S14U,ABIStress.S11U,ABIStress.S17U,ABIStress.S12U,ubyte,ABIStress.S13U,ABIStress.S2U,ABIStress.S4U,ABIStress.S2P,short,ABIStress.S8U,ABIStress.S17U,ubyte,ABIStress.S3U,ABIStress.Hfa1,ABIStress.S8U,ABIStress.S15U,ABIStress.S11U,ABIStress.S15U,ABIStress.S6U,ABIStress.S2P,ABIStress.S32U):int (MinOpts)
-208 (-17.57 % of base) : 506301.dasm - (dynamicClass):ABIStress_PInvoker717(ABIStress.S17U,ABIStress.S12U,ABIStress.S1P,double,ABIStress.S7U,int,ABIStress.S10U,ABIStress.S8U,double,short):int[] (MinOpts)
libraries.crossgen2.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 58964780 (overridden on cmd)
Total bytes of diff: 58952880 (overridden on cmd)
Total bytes of delta: -11900 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
96 : 70836.dasm (3.10 % of base)
64 : 69975.dasm (4.19 % of base)
60 : 77360.dasm (7.81 % of base)
60 : 56688.dasm (2.66 % of base)
48 : 171882.dasm (2.65 % of base)
48 : 142075.dasm (2.65 % of base)
44 : 140402.dasm (0.16 % of base)
40 : 69833.dasm (2.78 % of base)
40 : 179577.dasm (5.35 % of base)
32 : 114266.dasm (5.10 % of base)
32 : 162194.dasm (5.59 % of base)
32 : 124044.dasm (5.59 % of base)
32 : 126501.dasm (2.11 % of base)
32 : 72785.dasm (3.45 % of base)
32 : 114264.dasm (3.59 % of base)
28 : 229630.dasm (4.96 % of base)
28 : 26319.dasm (3.63 % of base)
28 : 142435.dasm (3.87 % of base)
28 : 202422.dasm (1.03 % of base)
28 : 208610.dasm (3.74 % of base)
Top file improvements (bytes):
-1280 : 173379.dasm (-5.26 % of base)
-1280 : 143607.dasm (-5.26 % of base)
-140 : 178405.dasm (-4.77 % of base)
-128 : 178570.dasm (-11.51 % of base)
-124 : 199111.dasm (-4.59 % of base)
-92 : 133189.dasm (-0.93 % of base)
-88 : 114358.dasm (-7.03 % of base)
-88 : 178487.dasm (-5.39 % of base)
-72 : 96800.dasm (-14.88 % of base)
-72 : 119163.dasm (-2.96 % of base)
-68 : 167709.dasm (-3.93 % of base)
-64 : 180745.dasm (-4.23 % of base)
-64 : 118085.dasm (-5.50 % of base)
-64 : 52216.dasm (-10.13 % of base)
-60 : 113257.dasm (-1.73 % of base)
-60 : 51885.dasm (-0.19 % of base)
-56 : 110890.dasm (-1.72 % of base)
-56 : 151103.dasm (-6.01 % of base)
-56 : 81621.dasm (-9.33 % of base)
-52 : 97557.dasm (-3.38 % of base)
78 total files with Code Size differences (44 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
96 (3.10 % of base) : 70836.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:MakeSynthesizedTupleMembers(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbol]):Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]:this (FullOpts)
64 (4.19 % of base) : 69975.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
60 (7.81 % of base) : 77360.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+<>c__DisplayClass35_0:<SynthesizeClosureEnvironments>g__MakeFrame|1(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+ClosureEnvironment):Microsoft.CodeAnalysis.CSharp.SynthesizedClosureEnvironment:this (FullOpts)
60 (2.66 % of base) : 56688.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeParameterConstraints(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]):this (FullOpts)
48 (2.65 % of base) : 171882.dasm - Microsoft.Cci.PdbWriter:DefineNamespaceScopes(Microsoft.Cci.IMethodBody):this (FullOpts)
48 (2.65 % of base) : 142075.dasm - Microsoft.Cci.PdbWriter:DefineNamespaceScopes(Microsoft.Cci.IMethodBody):this (FullOpts)
44 (0.16 % of base) : 140402.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
40 (2.78 % of base) : 69833.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpDefinitionMap:CreateLocalSlotMap(Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.LocalInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Emit.EncLocalInfo] (FullOpts)
40 (5.35 % of base) : 179577.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+DiagnosticDescriptorSet:ToSortedList():System.Collections.Generic.List`1[System.ValueTuple`3[int,Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
32 (3.45 % of base) : 72785.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:InfiniteFlatteningGraph(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):ubyte (FullOpts)
32 (3.59 % of base) : 114264.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:DoGetSyntaxErrors(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxNodeOrToken):System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.CodeAnalysis.Diagnostic] (FullOpts)
32 (5.10 % of base) : 114266.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
32 (5.59 % of base) : 162194.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
32 (5.59 % of base) : 124044.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
32 (2.11 % of base) : 126501.dasm - System.Security.Cryptography.X509Certificates.CertificatePal:CopyWithPrivateKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.ICertificatePal:this (FullOpts)
28 (3.87 % of base) : 142435.dasm - Microsoft.Cci.MetadataWriter:SerializeCustomAttributeSignature(Microsoft.Cci.ICustomAttribute,System.Reflection.Metadata.BlobBuilder):this (FullOpts)
28 (4.96 % of base) : 229630.dasm - Microsoft.Extensions.Logging.LoggerFilterConfigureOptions:LoadRules(Microsoft.Extensions.Logging.LoggerFilterOptions,Microsoft.Extensions.Configuration.IConfigurationSection,System.String) (FullOpts)
28 (3.74 % of base) : 208610.dasm - System.Linq.Parallel.DecimalAverageAggregationOperator:InternalAggregate(byref):System.Decimal:this (FullOpts)
28 (3.63 % of base) : 26319.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateFields(System.RuntimeType+RuntimeTypeCache+Filter):System.Reflection.RuntimeFieldInfo[]:this (FullOpts)
28 (1.03 % of base) : 202422.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:PreprocessSimpleType(System.Xml.Schema.XmlSchemaSimpleType,ubyte):this (FullOpts)
Top method improvements (bytes):
-1280 (-5.26 % of base) : 173379.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-1280 (-5.26 % of base) : 143607.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-140 (-4.77 % of base) : 178405.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-128 (-11.51 % of base) : 178570.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-124 (-4.59 % of base) : 199111.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-92 (-0.93 % of base) : 133189.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-88 (-5.39 % of base) : 178487.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-88 (-7.03 % of base) : 114358.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
-72 (-14.88 % of base) : 96800.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.QuickAttributeHelpers:GetQuickAttributes(System.String,ubyte):ubyte (FullOpts)
-72 (-2.96 % of base) : 119163.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-68 (-3.93 % of base) : 167709.dasm - System.Data.Common.DecimalStorage:Aggregate(int[],int):System.Object:this (FullOpts)
-64 (-10.13 % of base) : 52216.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-4.23 % of base) : 180745.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
-64 (-5.50 % of base) : 118085.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEDeltaAssemblyBuilder+VB$StateMachine_27_GetTopLevelTypeDefinitions:MoveNext():ubyte:this (FullOpts)
-60 (-0.19 % of base) : 51885.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-60 (-1.73 % of base) : 113257.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitFieldOrPropertyInitializer(Microsoft.CodeAnalysis.VisualBasic.BoundFieldOrPropertyInitializer,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
-56 (-6.01 % of base) : 151103.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-56 (-1.72 % of base) : 110890.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
-56 (-9.33 % of base) : 81621.dasm - System.Text.Json.JsonDocument:Parse(System.Buffers.ReadOnlySequence`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-52 (-3.38 % of base) : 97557.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:DecodeWellKnownAttribute(byref):this (FullOpts)
Top method regressions (percentages):
60 (7.81 % of base) : 77360.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion+<>c__DisplayClass35_0:<SynthesizeClosureEnvironments>g__MakeFrame|1(Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+Scope,Microsoft.CodeAnalysis.CSharp.ClosureConversion+Analysis+ClosureEnvironment):Microsoft.CodeAnalysis.CSharp.SynthesizedClosureEnvironment:this (FullOpts)
4 (7.69 % of base) : 132450.dasm - System.Speech.Internal.SrgsCompiler.Tag:Serialize(System.Speech.Internal.StreamMarshaler):this (FullOpts)
4 (7.14 % of base) : 100689.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
20 (6.02 % of base) : 76318.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
24 (5.83 % of base) : 2940.dasm - System.Reflection.Metadata.Ecma335.CustomAttributeDecoder`1[System.__Canon]:DecodeFixedArguments(byref,byref,int,System.Reflection.Metadata.BlobReader):System.Collections.Immutable.ImmutableArray`1[System.Reflection.Metadata.CustomAttributeTypedArgument`1[System.__Canon]]:this (FullOpts)
32 (5.59 % of base) : 162194.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
32 (5.59 % of base) : 124044.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
4 (5.56 % of base) : 78634.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (5.56 % of base) : 78633.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (5.56 % of base) : 118104.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (5.56 % of base) : 118103.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
40 (5.35 % of base) : 179577.dasm - Microsoft.CodeAnalysis.SarifV2ErrorLogger+DiagnosticDescriptorSet:ToSortedList():System.Collections.Generic.List`1[System.ValueTuple`3[int,Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
32 (5.10 % of base) : 114266.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:ProcessTrivia(Microsoft.CodeAnalysis.SyntaxTree,System.Collections.Generic.List`1[Microsoft.CodeAnalysis.Diagnostic],System.Collections.Generic.Stack`1[Microsoft.CodeAnalysis.SyntaxNodeOrToken],Microsoft.CodeAnalysis.SyntaxTriviaList) (FullOpts)
4 (5.00 % of base) : 143856.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 173628.dasm - Microsoft.CodeAnalysis.SourceLocation:GetLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 143857.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
4 (5.00 % of base) : 173629.dasm - Microsoft.CodeAnalysis.SourceLocation:GetMappedLineSpan():Microsoft.CodeAnalysis.FileLinePositionSpan:this (FullOpts)
28 (4.96 % of base) : 229630.dasm - Microsoft.Extensions.Logging.LoggerFilterConfigureOptions:LoadRules(Microsoft.Extensions.Logging.LoggerFilterOptions,Microsoft.Extensions.Configuration.IConfigurationSection,System.String) (FullOpts)
20 (4.95 % of base) : 76323.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
24 (4.80 % of base) : 231747.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):int:this (FullOpts)
Top method improvements (percentages):
-12 (-21.43 % of base) : 82108.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 82094.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-21.43 % of base) : 82119.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-32 (-16.67 % of base) : 83605.dasm - System.Text.Json.JsonDocument:ParseRented(System.Text.Json.PooledByteBufferWriter,System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-72 (-14.88 % of base) : 96800.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.QuickAttributeHelpers:GetQuickAttributes(System.String,ubyte):ubyte (FullOpts)
-28 (-14.29 % of base) : 127664.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-28 (-14.29 % of base) : 191810.dasm - System.Formats.Asn1.AsnValueReader:ThrowIfNotEmpty():this (FullOpts)
-24 (-13.64 % of base) : 82195.dasm - System.Text.Json.Nodes.JsonValue:Create(System.Nullable`1[System.Decimal],System.Nullable`1[System.Text.Json.Nodes.JsonNodeOptions]):System.Text.Json.Nodes.JsonValue (FullOpts)
-8 (-13.33 % of base) : 82095.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 82097.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 82101.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-13.33 % of base) : 82100.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-32 (-12.90 % of base) : 83104.dasm - System.Text.Json.JsonDocument:ParseValue(System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-12 (-12.00 % of base) : 81620.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-24 (-11.76 % of base) : 25542.dasm - System.Reflection.Emit.RuntimeModuleBuilder:SetFieldRVAContent(System.Runtime.CompilerServices.QCallModule,int,ubyte[],int) (FullOpts)
-128 (-11.51 % of base) : 178570.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-28 (-11.48 % of base) : 144581.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-28 (-11.48 % of base) : 174332.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-11.32 % of base) : 25547.dasm - System.Reflection.Emit.RuntimeTypeBuilder:DefineMethodSpec(System.Runtime.CompilerServices.QCallModule,int,ubyte[],int):int (FullOpts)
-32 (-10.67 % of base) : 50384.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
libraries.pmi.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 79594724 (overridden on cmd)
Total bytes of diff: 79583436 (overridden on cmd)
Total bytes of delta: -11288 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
124 : 95680.dasm (1.10 % of base)
112 : 82029.dasm (0.93 % of base)
104 : 96544.dasm (4.48 % of base)
96 : 55545.dasm (2.38 % of base)
84 : 118273.dasm (1.72 % of base)
80 : 95707.dasm (0.80 % of base)
76 : 138086.dasm (1.99 % of base)
76 : 95446.dasm (1.38 % of base)
64 : 173425.dasm (1.70 % of base)
64 : 95452.dasm (2.12 % of base)
56 : 199026.dasm (0.45 % of base)
48 : 59760.dasm (0.44 % of base)
48 : 95203.dasm (0.49 % of base)
48 : 195131.dasm (5.00 % of base)
44 : 121381.dasm (1.04 % of base)
40 : 100006.dasm (2.24 % of base)
40 : 53804.dasm (0.65 % of base)
40 : 228721.dasm (1.42 % of base)
40 : 95591.dasm (0.68 % of base)
40 : 95602.dasm (0.99 % of base)
Top file improvements (bytes):
-440 : 147662.dasm (-8.97 % of base)
-440 : 147758.dasm (-9.30 % of base)
-160 : 247682.dasm (-3.06 % of base)
-140 : 210865.dasm (-6.01 % of base)
-128 : 173537.dasm (-11.51 % of base)
-124 : 173365.dasm (-4.32 % of base)
-112 : 225149.dasm (-6.68 % of base)
-112 : 173454.dasm (-5.26 % of base)
-96 : 124014.dasm (-4.69 % of base)
-88 : 154072.dasm (-6.49 % of base)
-64 : 143055.dasm (-7.41 % of base)
-64 : 57782.dasm (-9.70 % of base)
-60 : 148576.dasm (-4.16 % of base)
-56 : 59654.dasm (-0.51 % of base)
-48 : 178386.dasm (-3.58 % of base)
-48 : 214935.dasm (-0.75 % of base)
-48 : 222452.dasm (-6.09 % of base)
-48 : 85755.dasm (-1.77 % of base)
-48 : 213806.dasm (-1.68 % of base)
-44 : 97297.dasm (-0.51 % of base)
80 total files with Code Size differences (42 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
124 (1.10 % of base) : 95680.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,int,int,int,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.MemberModifiers:this (FullOpts)
112 (0.93 % of base) : 82029.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
104 (4.48 % of base) : 96544.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
96 (2.38 % of base) : 55545.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:<LoadAndValidateAttributes>g__removeObsoleteDiagnosticsForForwardedTypes|197_0(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],byref):this (FullOpts)
84 (1.72 % of base) : 118273.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
80 (0.80 % of base) : 95707.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterList(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,int,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Binder+CheckParameterModifierDelegate,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
76 (1.99 % of base) : 138086.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],byref,byref):this (FullOpts)
76 (1.38 % of base) : 95446.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
64 (1.70 % of base) : 173425.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]):this (FullOpts)
64 (2.12 % of base) : 95452.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ConstructAnonymousDelegateSymbol(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol:this (FullOpts)
56 (0.45 % of base) : 199026.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.44 % of base) : 59760.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (FullOpts)
48 (0.49 % of base) : 95203.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindAttributeNamedArgument(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
48 (5.00 % of base) : 195131.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConvertArithmeticResult(int,System.Type):this (FullOpts)
44 (1.04 % of base) : 121381.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+TypeBinder:LookupDottedName(Microsoft.CodeAnalysis.VisualBasic.LookupResult,Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte,ubyte) (FullOpts)
40 (0.65 % of base) : 53804.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
40 (0.68 % of base) : 95591.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeLocalModifiersAndReportErrors(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (0.99 % of base) : 95602.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:VerifyNameShadowingInMethodBody(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
40 (2.24 % of base) : 100006.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol:CreateWithEvents(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxReference,Microsoft.CodeAnalysis.VisualBasic.MemberModifiers,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.SourcePropertySymbol (FullOpts)
40 (1.42 % of base) : 228721.dasm - System.Speech.Internal.Synthesis.SsmlParser:ProcessSpeakElement(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,System.Object) (FullOpts)
Top method improvements (bytes):
-440 (-9.30 % of base) : 147758.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-440 (-8.97 % of base) : 147662.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
-160 (-3.06 % of base) : 247682.dasm - R2RTest.BuildFolderSet:WriteCombinedLog(System.String):this (FullOpts)
-140 (-6.01 % of base) : 210865.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-128 (-11.51 % of base) : 173537.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-124 (-4.32 % of base) : 173365.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-112 (-5.26 % of base) : 173454.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-112 (-6.68 % of base) : 225149.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-96 (-4.69 % of base) : 124014.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
-88 (-6.49 % of base) : 154072.dasm - Microsoft.Build.Graph.GraphBuilder:AddEdgesFromProjectReferenceItems(System.Collections.Generic.Dictionary`2[Microsoft.Build.BackEnd.ConfigurationMetadata,Microsoft.Build.Graph.ParsedProject],Microsoft.Build.Graph.GraphBuilder+GraphEdges):this (FullOpts)
-64 (-9.70 % of base) : 57782.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 143055.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-60 (-4.16 % of base) : 148576.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetGenericTypeFromTypeName(System.String,System.Reflection.Assembly):System.Type:this (FullOpts)
-56 (-0.51 % of base) : 59654.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-48 (-1.77 % of base) : 85755.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-48 (-3.58 % of base) : 178386.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
-48 (-6.09 % of base) : 222452.dasm - System.Security.Cryptography.Pkcs.SignerInfo:VerifySignature(System.Security.Cryptography.Pkcs.CmsSignature,System.Security.Cryptography.X509Certificates.X509Certificate2,ubyte):ubyte:this (FullOpts)
-48 (-1.68 % of base) : 213806.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-48 (-0.75 % of base) : 214935.dasm - System.Xml.Xsl.Xslt.XsltLoader:LoadOutput():this (FullOpts)
-44 (-0.51 % of base) : 97297.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol:DecodeWellKnownAttribute(byref):this (FullOpts)
Top method regressions (percentages):
16 (6.90 % of base) : 86441.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
4 (6.67 % of base) : 128912.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
4 (6.67 % of base) : 164405.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (FullOpts)
4 (6.67 % of base) : 103245.dasm - Microsoft.CodeAnalysis.VisualBasic.VBSemanticModel:ComputeDeclarationsInNode(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ISymbol,ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.DeclarationInfo],System.Threading.CancellationToken,System.Nullable`1[int]):this (FullOpts)
4 (6.25 % of base) : 88915.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (6.25 % of base) : 88914.dasm - Microsoft.CodeAnalysis.CSharp.Emit.CSharpSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (6.25 % of base) : 142191.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
4 (6.25 % of base) : 177532.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
4 (6.25 % of base) : 122752.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetFields(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFieldDefinition]:this (FullOpts)
4 (6.25 % of base) : 122751.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.VisualBasicSymbolMatcher+MatchDefsToSource:GetNestedTypes(Microsoft.Cci.ITypeDefinition):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.INestedTypeDefinition]:this (FullOpts)
4 (5.88 % of base) : 141100.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 176482.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 141103.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+UpgradeableReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 176485.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+UpgradeableReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 141105.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
4 (5.88 % of base) : 176487.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (FullOpts)
48 (5.00 % of base) : 195131.dasm - System.Linq.Expressions.Compiler.LambdaCompiler:EmitConvertArithmeticResult(int,System.Type):this (FullOpts)
24 (4.69 % of base) : 55530.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:DecodeWellKnownAttribute(byref):this (FullOpts)
104 (4.48 % of base) : 96544.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
28 (4.24 % of base) : 88171.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Reader:TryTakeOldNodeOrToken(ubyte,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-32 (-20.00 % of base) : 55905.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-12 (-20.00 % of base) : 92647.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.DateTimeOffset):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 92660.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[long]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 92646.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[System.DateTime]):System.Text.Json.Nodes.JsonNode (FullOpts)
-12 (-20.00 % of base) : 92671.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[ulong]):System.Text.Json.Nodes.JsonNode (FullOpts)
-24 (-16.67 % of base) : 101785.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess:MakeRValue():Microsoft.CodeAnalysis.VisualBasic.BoundPropertyAccess:this (FullOpts)
-20 (-14.29 % of base) : 55906.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 101462.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundCall:MakeRValue():Microsoft.CodeAnalysis.VisualBasic.BoundCall:this (FullOpts)
-12 (-12.50 % of base) : 156013.dasm - Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)
-8 (-12.50 % of base) : 92649.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Decimal):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-12.50 % of base) : 92653.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Guid):System.Text.Json.Nodes.JsonNode (FullOpts)
-8 (-12.50 % of base) : 92652.dasm - System.Text.Json.Nodes.JsonNode:op_Implicit(System.Nullable`1[double]):System.Text.Json.Nodes.JsonNode (FullOpts)
-128 (-11.51 % of base) : 173537.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-8 (-11.11 % of base) : 547.dasm - System.String:GetBytesFromEncoding(ulong,int,System.Text.Encoding):int:this (FullOpts)
-12 (-11.11 % of base) : 91035.dasm - System.Text.Json.JsonDocument:Parse(System.ReadOnlyMemory`1[ubyte],System.Text.Json.JsonDocumentOptions):System.Text.Json.JsonDocument (FullOpts)
-16 (-10.81 % of base) : 187062.dasm - System.Data.ProviderBase.SchemaMapping:MappedIndex():this (FullOpts)
-8 (-10.53 % of base) : 251593.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.Nullable`1[int]]:TryUpdate(int,System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (FullOpts)
-8 (-10.53 % of base) : 251695.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.Nullable`1[int]]:TryUpdate(long,System.Nullable`1[int],System.Nullable`1[int]):ubyte:this (FullOpts)
-24 (-10.34 % of base) : 131802.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
-24 (-10.34 % of base) : 167198.dasm - Microsoft.CodeAnalysis.GeneratorDriver:ReplaceAdditionalTexts(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AdditionalText]):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
libraries_tests.run.windows.arm64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 310503812 (overridden on cmd)
Total bytes of diff: 310074068 (overridden on cmd)
Total bytes of delta: -429744 (-0.14 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
632 : 154867.dasm (4.70 % of base)
276 : 599425.dasm (3.44 % of base)
88 : 266537.dasm (0.68 % of base)
88 : 214523.dasm (0.64 % of base)
88 : 62281.dasm (1.20 % of base)
88 : 624654.dasm (0.67 % of base)
84 : 119675.dasm (0.62 % of base)
84 : 170131.dasm (0.63 % of base)
84 : 340727.dasm (0.63 % of base)
84 : 608752.dasm (0.63 % of base)
80 : 504859.dasm (0.61 % of base)
80 : 628133.dasm (0.60 % of base)
80 : 55660.dasm (0.98 % of base)
80 : 469813.dasm (0.56 % of base)
80 : 614170.dasm (0.60 % of base)
76 : 164025.dasm (0.60 % of base)
76 : 176845.dasm (0.56 % of base)
76 : 348111.dasm (0.56 % of base)
76 : 625766.dasm (0.58 % of base)
72 : 327376.dasm (0.55 % of base)
Top file improvements (bytes):
-1572 : 4497.dasm (-7.02 % of base)
-1096 : 380950.dasm (-5.39 % of base)
-1048 : 244455.dasm (-0.79 % of base)
-1048 : 245893.dasm (-0.81 % of base)
-936 : 387162.dasm (-8.25 % of base)
-892 : 4737.dasm (-6.65 % of base)
-684 : 27478.dasm (-3.68 % of base)
-684 : 4768.dasm (-3.85 % of base)
-636 : 69037.dasm (-3.20 % of base)
-496 : 104252.dasm (-4.16 % of base)
-456 : 437148.dasm (-8.96 % of base)
-456 : 437184.dasm (-9.11 % of base)
-456 : 435684.dasm (-9.11 % of base)
-456 : 435711.dasm (-8.96 % of base)
-408 : 379984.dasm (-4.89 % of base)
-392 : 417224.dasm (-2.95 % of base)
-348 : 24002.dasm (-3.65 % of base)
-348 : 31322.dasm (-1.96 % of base)
-348 : 47315.dasm (-3.65 % of base)
-336 : 154065.dasm (-2.69 % of base)
94 total files with Code Size differences (56 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
632 (4.70 % of base) : 154867.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
276 (3.44 % of base) : 599425.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
88 (1.20 % of base) : 62281.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindIdentifier(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
88 (0.68 % of base) : 266537.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
88 (0.64 % of base) : 214523.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
88 (0.67 % of base) : 624654.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
84 (0.62 % of base) : 119675.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
84 (0.63 % of base) : 170131.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
84 (0.63 % of base) : 340727.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
84 (0.63 % of base) : 608752.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
80 (0.98 % of base) : 55660.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsConstructorApplicableInNormalForm(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (Tier1)
80 (0.61 % of base) : 504859.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
80 (0.60 % of base) : 628133.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
80 (0.56 % of base) : 469813.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
80 (0.60 % of base) : 614170.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
76 (0.60 % of base) : 164025.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
76 (0.56 % of base) : 176845.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
76 (0.56 % of base) : 348111.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
76 (0.58 % of base) : 625766.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
72 (0.55 % of base) : 327376.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
Top method improvements (bytes):
-1572 (-7.02 % of base) : 4497.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnPinnedMarshalledTypes>d__2:MoveNext():ubyte:this (Tier0)
-1096 (-5.39 % of base) : 380950.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1048 (-0.81 % of base) : 245893.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (Instrumented Tier0)
-1048 (-0.79 % of base) : 244455.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (Instrumented Tier0)
-936 (-8.25 % of base) : 387162.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-892 (-6.65 % of base) : 4737.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnValueTypes>d__1:MoveNext():ubyte:this (Tier0)
-684 (-3.68 % of base) : 27478.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnCustomCollections>d__3:MoveNext():ubyte:this (Instrumented Tier0)
-684 (-3.85 % of base) : 4768.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnCustomCollections>d__3:MoveNext():ubyte:this (Tier0)
-636 (-3.20 % of base) : 69037.dasm - System.Globalization.Tests.InvariantModeTests:TestCultureData(System.String):this (Instrumented Tier0)
-496 (-4.16 % of base) : 104252.dasm - Microsoft.CodeAnalysis.CSharp.ForEachLoopBinder:BindForEachPartsWorker(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.BoundForEachStatement:this (Instrumented Tier0)
-456 (-9.11 % of base) : 437184.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-456 (-9.11 % of base) : 435684.dasm - System.Numerics.Tests.ToStringTest:RunCustomFormatToStringTests(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter) (Instrumented Tier0)
-456 (-8.96 % of base) : 437148.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-456 (-8.96 % of base) : 435711.dasm - System.Numerics.Tests.ToStringTest:RunStandardFormatToStringTests_Helper(System.Random,System.String,System.String,int,System.Numerics.Tests.ToStringTest+StringFormatter,ubyte) (Instrumented Tier0)
-408 (-4.89 % of base) : 379984.dasm - System.Xml.Serialization.XmlSerializationReader:InitPrimitiveIDs():this (Instrumented Tier0)
-392 (-2.95 % of base) : 417224.dasm - System.Reflection.Tests.PropertyTests:TestProperties_GetterSetter() (Instrumented Tier0)
-348 (-1.96 % of base) : 31322.dasm - ComInterfaceGenerator.Unit.Tests.CompileFails+<CountParameterIsOutSnippets>d__19:MoveNext():ubyte:this (Tier0)
-348 (-3.65 % of base) : 24002.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this (Instrumented Tier0)
-348 (-3.65 % of base) : 47315.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:VisitMethod(Microsoft.CodeAnalysis.IMethodSymbol):this (Instrumented Tier0)
-336 (-2.69 % of base) : 154065.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:LearnFromDecisionDag(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+PossiblyConditionalState]):Microsoft.CodeAnalysis.PooledObjects.PooledDictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LabelSymbol,System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,ubyte]]:this (Instrumented Tier0)
Top method regressions (percentages):
4 (6.67 % of base) : 591416.dasm - Microsoft.Cci.MetadataWriter:GetTypeAttributes(Microsoft.Cci.ITypeDefinition):int:this (Tier1)
16 (6.67 % of base) : 598642.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
4 (5.88 % of base) : 90562.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+ReadLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
4 (5.88 % of base) : 90391.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions+WriteLockExiter:.ctor(System.Threading.ReaderWriterLockSlim):this (Tier1)
16 (5.63 % of base) : 88400.dasm - Microsoft.CodeAnalysis.PEModule:HasRefSafetyRulesAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier1)
16 (5.63 % of base) : 61083.dasm - Microsoft.CodeAnalysis.PEModule:HasRefSafetyRulesAttribute(System.Reflection.Metadata.EntityHandle,byref,byref):ubyte:this (Tier1)
4 (5.26 % of base) : 63789.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryUpdate(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ImportInfo,System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1[System.__Canon]):ubyte:this (Tier1)
632 (4.70 % of base) : 154867.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
8 (3.92 % of base) : 601814.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
8 (3.92 % of base) : 55621.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:WithTypeAndModifiers(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (Tier1)
20 (3.60 % of base) : 598847.dasm - Microsoft.CodeAnalysis.CSharp.ControlFlowPass:VisitLabeledStatement(Microsoft.CodeAnalysis.CSharp.BoundLabeledStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
8 (3.51 % of base) : 486694.dasm - System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests+<>c__DisplayClass36_1:<UnknownHashAlgorithm>b__0():System.Object:this (Tier1)
276 (3.44 % of base) : 599425.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
20 (2.98 % of base) : 421242.dasm - System.Runtime.Serialization.SerializationEventsCache:GetSerializationEventsForType(System.Type):System.Runtime.Serialization.SerializationEvents (Tier1)
8 (2.86 % of base) : 486695.dasm - System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests+<>c__DisplayClass36_1:<UnknownHashAlgorithm>b__1():System.Object:this (Tier1)
12 (2.83 % of base) : 91148.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteAndCatchIfThrows_NoLock[System.ValueTuple`2[System.__Canon,Microsoft.CodeAnalysis.Diagnostics.OperationAnalysisContext]](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Action`1[System.ValueTuple`2[System.__Canon,Microsoft.CodeAnalysis.Diagnostics.OperationAnalysisContext]],System.ValueTuple`2[System.__Canon,Microsoft.CodeAnalysis.Diagnostics.OperationAnalysisContext],System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo],System.Threading.CancellationToken):this (Tier1)
8 (2.82 % of base) : 486679.dasm - System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests+<>c__DisplayClass37_1:<NullInputs>b__3():System.Object:this (Tier1)
12 (2.80 % of base) : 90274.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteAndCatchIfThrows_NoLock[System.__Canon](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Action`1[System.__Canon],System.__Canon,System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo],System.Threading.CancellationToken):this (Tier1)
12 (2.80 % of base) : 66018.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteAndCatchIfThrows_NoLock[System.__Canon](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Action`1[System.__Canon],System.__Canon,System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo],System.Threading.CancellationToken):this (Tier1)
8 (2.60 % of base) : 486676.dasm - System.Security.Cryptography.Algorithms.Tests.DsaFamilySignatureFormatTests+<>c__DisplayClass37_1:<NullInputs>b__0():System.Object:this (Tier1)
Top method improvements (percentages):
-108 (-30.68 % of base) : 39295.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-108 (-30.68 % of base) : 18809.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-88 (-29.73 % of base) : 48403.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-88 (-29.73 % of base) : 26069.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-29.27 % of base) : 135408.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-29.27 % of base) : 146090.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-96 (-27.91 % of base) : 157561.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-96 (-27.91 % of base) : 150059.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-48 (-27.91 % of base) : 76703.dasm - NuGet.Packaging.Signing.SignatureVerificationSummary:.ctor(int,int,int,NuGet.Packaging.Signing.Timestamp,System.Collections.Generic.IEnumerable`1[NuGet.Packaging.Signing.SignatureLog]):this (Tier0)
-80 (-27.40 % of base) : 48408.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:this (Instrumented Tier0)
-80 (-27.40 % of base) : 26082.dasm - Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess:this (Tier0)
-88 (-27.16 % of base) : 146174.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-88 (-27.16 % of base) : 135557.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-40 (-27.03 % of base) : 99659.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Instrumented Tier0)
-40 (-27.03 % of base) : 1586.dasm - Xunit.Sdk.TestCollection:.ctor(Xunit.Abstractions.ITestAssembly,Xunit.Abstractions.ITypeInfo,System.String):this (Tier0)
-44 (-26.83 % of base) : 39090.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Instrumented Tier0)
-44 (-26.83 % of base) : 18972.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-92 (-25.00 % of base) : 159463.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:Update(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:this (Instrumented Tier0)
-32 (-25.00 % of base) : 37891.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Instrumented Tier0)
-32 (-25.00 % of base) : 143627.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations):this (Tier0)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 169134348 (overridden on cmd)
Total bytes of diff: 169102792 (overridden on cmd)
Total bytes of delta: -31556 (-0.02 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
236 : 51112.dasm (1.89 % of base)
236 : 45377.dasm (1.89 % of base)
104 : 9548.dasm (0.89 % of base)
68 : 177105.dasm (1.56 % of base)
56 : 151018.dasm (0.45 % of base)
56 : 185124.dasm (3.27 % of base)
48 : 10477.dasm (0.80 % of base)
40 : 127701.dasm (1.78 % of base)
40 : 239730.dasm (1.43 % of base)
40 : 131241.dasm (3.00 % of base)
40 : 307812.dasm (1.33 % of base)
40 : 50768.dasm (0.69 % of base)
36 : 241836.dasm (4.19 % of base)
36 : 108377.dasm (0.63 % of base)
36 : 45365.dasm (0.89 % of base)
36 : 59825.dasm (0.12 % of base)
36 : 127291.dasm (1.46 % of base)
36 : 51110.dasm (0.89 % of base)
36 : 54602.dasm (0.64 % of base)
32 : 129432.dasm (2.82 % of base)
Top file improvements (bytes):
-392 : 42042.dasm (-9.65 % of base)
-228 : 13380.dasm (-2.33 % of base)
-208 : 272155.dasm (-3.34 % of base)
-180 : 4591.dasm (-0.54 % of base)
-164 : 55715.dasm (-8.22 % of base)
-140 : 33456.dasm (-6.01 % of base)
-128 : 13385.dasm (-3.74 % of base)
-112 : 13384.dasm (-2.16 % of base)
-112 : 223930.dasm (-6.41 % of base)
-104 : 1327.dasm (-2.95 % of base)
-104 : 16711.dasm (-2.91 % of base)
-104 : 18574.dasm (-2.96 % of base)
-104 : 1252.dasm (-2.96 % of base)
-104 : 1382.dasm (-2.95 % of base)
-104 : 16974.dasm (-2.91 % of base)
-104 : 16976.dasm (-2.91 % of base)
-100 : 16633.dasm (-2.79 % of base)
-100 : 26581.dasm (-2.84 % of base)
-100 : 15485.dasm (-2.84 % of base)
-100 : 16887.dasm (-2.79 % of base)
82 total files with Code Size differences (44 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
236 (1.89 % of base) : 51112.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
236 (1.89 % of base) : 45377.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte) (FullOpts)
104 (0.89 % of base) : 9548.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
68 (1.56 % of base) : 177105.dasm - (dynamicClass):<xsl:apply-templates>(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
56 (0.45 % of base) : 151018.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
56 (3.27 % of base) : 185124.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
48 (0.80 % of base) : 10477.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
40 (0.69 % of base) : 50768.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
40 (3.00 % of base) : 131241.dasm - System.IO.Packaging.Tests.Tests:OpenPropertyStream():this (FullOpts)
40 (1.78 % of base) : 127701.dasm - System.IO.Tests.FileStream_ctor_str_fm:FileModeAppendExisting(System.String):this (FullOpts)
40 (1.43 % of base) : 239730.dasm - System.Speech.Internal.Synthesis.SsmlParser:ProcessSpeakElement(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,System.Object) (FullOpts)
40 (1.33 % of base) : 307812.dasm - System.Threading.Tasks.Dataflow.Tests.ActionBlockTests+<TestBasicMessageProcessing>d__5:MoveNext():this (FullOpts)
36 (0.63 % of base) : 108377.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.dlgateEvent.dlgate.dlgate001.dlgate001.nms.Start:MainMethod():int (FullOpts)
36 (0.64 % of base) : 54602.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
36 (0.89 % of base) : 45365.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`11[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
36 (0.89 % of base) : 51110.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:MakeParameters[System.__Canon,System.__Canon,System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,System.__Canon,Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon],byref,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte,ubyte,int,System.Func`11[System.__Canon,System.__Canon,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.__Canon,ubyte,int,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,ubyte,System.__Canon,System.__Canon],ubyte):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
36 (0.12 % of base) : 59825.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
36 (1.46 % of base) : 127291.dasm - System.IO.Tests.Enumeration.TrimmedPaths:TrimmedPathsReplace_Windows():this (FullOpts)
36 (4.19 % of base) : 241836.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
32 (2.82 % of base) : 129432.dasm - System.IO.Tests.FileStream_ctor_str_fm_fa_fs:<FileShareOpen_Inheritable>b__17_0():this (FullOpts)
Top method improvements (bytes):
-392 (-9.65 % of base) : 42042.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-228 (-2.33 % of base) : 13380.dasm - Microsoft.CodeAnalysis.Testing.AnalyzerTest`1[System.__Canon]:VerifyDiagnosticResults(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.Project,Microsoft.CodeAnalysis.Diagnostic]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Testing.DiagnosticResult[],Microsoft.CodeAnalysis.Testing.IVerifier):this (MinOpts)
-208 (-3.34 % of base) : 272155.dasm - System.Text.Json.Nodes.Tests.ParentPathRootTests:GetPathAndRoot() (FullOpts)
-180 (-0.54 % of base) : 4591.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-164 (-8.22 % of base) : 55715.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:ShouldEmitAttribute(Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,ubyte):ubyte:this (FullOpts)
-140 (-6.01 % of base) : 33456.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-128 (-3.74 % of base) : 13385.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:MatchRecursive[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]],byref,byref,double,int,int,ubyte[],double[],ubyte,System.Threading.CancellationToken) (MinOpts)
-112 (-2.16 % of base) : 13384.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:Match[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.TimeSpan):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]] (MinOpts)
-112 (-6.41 % of base) : 223930.dasm - System.Security.Cryptography.RSA:ImportRSAPrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
-104 (-2.96 % of base) : 18574.dasm - Xunit.Assert:Equal[double](double,double,System.Collections.Generic.IEqualityComparer`1[double]) (FullOpts)
-104 (-2.95 % of base) : 1382.dasm - Xunit.Assert:Equal[float](float,float,System.Collections.Generic.IEqualityComparer`1[float]) (FullOpts)
-104 (-2.96 % of base) : 1252.dasm - Xunit.Assert:Equal[int](int,int,System.Collections.Generic.IEqualityComparer`1[int]) (FullOpts)
-104 (-2.91 % of base) : 16711.dasm - Xunit.Assert:Equal[long](long,long,System.Collections.Generic.IEqualityComparer`1[long]) (FullOpts)
-104 (-2.95 % of base) : 1327.dasm - Xunit.Assert:Equal[System.Drawing.Point](System.Drawing.Point,System.Drawing.Point,System.Collections.Generic.IEqualityComparer`1[System.Drawing.Point]) (FullOpts)
-104 (-2.91 % of base) : 16974.dasm - Xunit.Assert:Equal[uint](uint,uint,System.Collections.Generic.IEqualityComparer`1[uint]) (FullOpts)
-104 (-2.91 % of base) : 16976.dasm - Xunit.Assert:Equal[ulong](ulong,ulong,System.Collections.Generic.IEqualityComparer`1[ulong]) (FullOpts)
-100 (-2.84 % of base) : 15485.dasm - Xunit.Assert:Equal[byte](byte,byte,System.Collections.Generic.IEqualityComparer`1[byte]) (FullOpts)
-100 (-2.79 % of base) : 16633.dasm - Xunit.Assert:Equal[ubyte](ubyte,ubyte,System.Collections.Generic.IEqualityComparer`1[ubyte]) (FullOpts)
-100 (-2.84 % of base) : 26581.dasm - Xunit.Assert:Equal[ushort](ushort,ushort,System.Collections.Generic.IEqualityComparer`1[ushort]) (FullOpts)
-100 (-2.79 % of base) : 16887.dasm - Xunit.Assert:Equal[ushort](ushort,ushort,System.Collections.Generic.IEqualityComparer`1[ushort]) (FullOpts)
Top method regressions (percentages):
8 (10.00 % of base) : 268442.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c:<CheckInvalidString>b__76_0():System.Object:this (FullOpts)
8 (7.69 % of base) : 269640.dasm - System.Text.Json.Serialization.Tests.JsonDocumentClass:Initialize():this (FullOpts)
16 (6.67 % of base) : 56935.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
20 (6.41 % of base) : 15043.dasm - Microsoft.CodeAnalysis.Formatting.TokenStream+Changes:AddOrReplace(int,Microsoft.CodeAnalysis.Formatting.TriviaData):this (FullOpts)
12 (6.38 % of base) : 84966.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetReflectionType:InvokeMethodOnTarget():this (FullOpts)
12 (6.38 % of base) : 84988.dasm - Castle.Proxies.Invocations.TypeDescriptionProvider_GetTypeDescriptor:InvokeMethodOnTarget():this (FullOpts)
4 (6.25 % of base) : 126474.dasm - System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
28 (4.24 % of base) : 301820.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Blender+Reader:TryTakeOldNodeOrToken(ubyte,byref):ubyte:this (FullOpts)
36 (4.19 % of base) : 241836.dasm - System.Text.Encodings.Web.TextEncoder:EncodeCore(System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref,byref,ubyte):int:this (FullOpts)
8 (3.92 % of base) : 56940.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
4 (3.85 % of base) : 12265.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
20 (3.38 % of base) : 269638.dasm - System.Text.Json.Serialization.Tests.JsonElementArrayClass:Initialize():this (FullOpts)
8 (3.33 % of base) : 277830.dasm - Microsoft.Cci.ReferenceIndexerBase:Visit(Microsoft.Cci.IGenericParameter):this (FullOpts)
32 (3.29 % of base) : 269626.dasm - System.Text.Json.Serialization.Tests.JsonElementClass:Initialize():this (FullOpts)
56 (3.27 % of base) : 185124.dasm - System.Reflection.Emit.ILGeneratorImpl:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
4 (3.23 % of base) : 68744.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:Contains(int):ubyte:this (FullOpts)
4 (3.23 % of base) : 70754.dasm - System.Collections.Immutable.ImmutableHashSet`1[System.Collections.Frozen.Tests.SimpleNonComparableStruct]:Contains(System.Collections.Frozen.Tests.SimpleNonComparableStruct):ubyte:this (FullOpts)
4 (3.23 % of base) : 72143.dasm - System.Collections.Immutable.ImmutableHashSet`1[ulong]:Contains(ulong):ubyte:this (FullOpts)
12 (3.19 % of base) : 11433.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteAndCatchIfThrows_NoLock[System.__Canon](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Action`1[System.__Canon],System.__Canon,System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo],System.Threading.CancellationToken):this (FullOpts)
12 (3.16 % of base) : 11702.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:ExecuteAndCatchIfThrows_NoLock[System.ValueTuple`2[System.__Canon,System.__Canon]](Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,System.Action`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.ValueTuple`2[System.__Canon,System.__Canon],System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.AnalysisContextInfo],System.Threading.CancellationToken):this (FullOpts)
Top method improvements (percentages):
-32 (-27.59 % of base) : 117851.dasm - System.Formats.Asn1.Tests.Reader.OverlappedReads:<NoOverlappedTextStrings>g__Method|3_0(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],int,byref,byref):ubyte (FullOpts)
-12 (-16.67 % of base) : 274114.dasm - System.Text.Json.Nodes.Tests.JsonArrayTests+<>c__DisplayClass1_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-12 (-16.67 % of base) : 274789.dasm - System.Text.Json.Nodes.Tests.JsonObjectTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-12 (-16.67 % of base) : 269845.dasm - System.Text.Json.Nodes.Tests.JsonValueTests+<>c__DisplayClass16_0:<FromElement_WrongNodeTypeThrows>b__0():System.Object:this (FullOpts)
-28 (-16.67 % of base) : 276711.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__0():System.Object:this (FullOpts)
-28 (-16.67 % of base) : 276714.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__3():System.Object:this (FullOpts)
-20 (-15.15 % of base) : 231619.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_TrailingWhitespaceAfterPosteb():this (FullOpts)
-24 (-15.00 % of base) : 276814.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass86_0:<CheckUnparsable>b__0():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 268633.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass87_0:<CheckParseDepth>b__0():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 276712.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__1():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 276713.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass88_0:<HonorReaderOptionsMaxDepth>b__2():System.Object:this (FullOpts)
-24 (-15.00 % of base) : 276760.dasm - System.Text.Json.Tests.JsonDocumentTests+<>c__DisplayClass94_0:<TrailingCommas>b__0():System.Object:this (FullOpts)
-20 (-14.71 % of base) : 231615.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_IncompletePreebPrefixed():this (FullOpts)
-20 (-14.71 % of base) : 231572.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_PrecedingContentAndWhitespaceBeforePreeb():this (FullOpts)
-20 (-14.29 % of base) : 46965.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 53006.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-20 (-14.29 % of base) : 231628.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_Base64SurroundingWhiteSpaceStripped():this (FullOpts)
-20 (-14.29 % of base) : 231602.dasm - System.Security.Cryptography.Tests.PemEncodingFindTests:Find_Success_LabelCharacterBoundaries():this (FullOpts)
-16 (-14.29 % of base) : 232053.dasm - System.Security.Cryptography.X509Certificates.Tests.CertificateCreation.CrlBuilderTests+<>c__DisplayClass25_0:<AddInvalidSerial>b__2():this (FullOpts)
-32 (-13.79 % of base) : 41362.dasm - Microsoft.Extensions.Logging.LoggerMessage+<>c__DisplayClass12_0`2[double,int]:<Define>g__Log|0(Microsoft.Extensions.Logging.ILogger,double,int,System.Exception):this (FullOpts)
realworld.run.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15891116 (overridden on cmd)
Total bytes of diff: 15882592 (overridden on cmd)
Total bytes of delta: -8524 (-0.05 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
152 : 2392.dasm (1.94 % of base)
136 : 6452.dasm (0.13 % of base)
112 : 19757.dasm (1.00 % of base)
60 : 764.dasm (5.79 % of base)
56 : 14091.dasm (0.45 % of base)
56 : 31118.dasm (0.50 % of base)
48 : 22667.dasm (0.80 % of base)
36 : 18830.dasm (0.64 % of base)
24 : 17801.dasm (1.11 % of base)
20 : 23810.dasm (4.00 % of base)
16 : 26188.dasm (6.90 % of base)
16 : 31917.dasm (1.05 % of base)
16 : 24605.dasm (0.26 % of base)
16 : 901.dasm (12.50 % of base)
16 : 19812.dasm (0.76 % of base)
16 : 19960.dasm (1.16 % of base)
16 : 5367.dasm (1.95 % of base)
12 : 22418.dasm (2.38 % of base)
12 : 20848.dasm (0.18 % of base)
12 : 23944.dasm (0.13 % of base)
Top file improvements (bytes):
-4444 : 4498.dasm (-2.19 % of base)
-180 : 15169.dasm (-0.54 % of base)
-152 : 30738.dasm (-1.09 % of base)
-140 : 1657.dasm (-6.01 % of base)
-112 : 1568.dasm (-18.30 % of base)
-104 : 32551.dasm (-0.29 % of base)
-84 : 4465.dasm (-0.32 % of base)
-72 : 802.dasm (-15.52 % of base)
-64 : 27773.dasm (-7.41 % of base)
-64 : 20110.dasm (-9.70 % of base)
-64 : 8108.dasm (-0.38 % of base)
-56 : 24685.dasm (-0.52 % of base)
-48 : 21519.dasm (-1.89 % of base)
-48 : 12633.dasm (-7.74 % of base)
-48 : 1319.dasm (-4.43 % of base)
-48 : 9960.dasm (-2.72 % of base)
-44 : 8660.dasm (-1.44 % of base)
-44 : 17514.dasm (-1.70 % of base)
-44 : 22391.dasm (-1.61 % of base)
-40 : 23577.dasm (-1.19 % of base)
69 total files with Code Size differences (36 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
152 (1.94 % of base) : 2392.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
136 (0.13 % of base) : 6452.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
112 (1.00 % of base) : 19757.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
60 (5.79 % of base) : 764.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
56 (0.50 % of base) : 31118.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
56 (0.45 % of base) : 14091.dasm - System.Net.Http.Headers.KnownHeaders:.cctor() (FullOpts)
48 (0.80 % of base) : 22667.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindVariableDeclaration(Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclaratorSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration:this (FullOpts)
36 (0.64 % of base) : 18830.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
24 (1.11 % of base) : 17801.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Binder],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol[],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
20 (4.00 % of base) : 23810.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitDoStatement(Microsoft.CodeAnalysis.CSharp.BoundDoStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
16 (1.95 % of base) : 5367.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
16 (6.90 % of base) : 26188.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
16 (0.26 % of base) : 24605.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitSwitchExpressionCore(Microsoft.CodeAnalysis.CSharp.BoundSwitchExpression,ubyte):this (FullOpts)
16 (1.16 % of base) : 19960.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,ubyte,int):ubyte (FullOpts)
16 (0.76 % of base) : 19812.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol:CreateAccessorSymbol(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol,uint,Microsoft.CodeAnalysis.CSharp.Syntax.AccessorDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol (FullOpts)
16 (12.50 % of base) : 901.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
16 (1.05 % of base) : 31917.dasm - System.Management.Automation.AnalysisCache:AnalyzeManifestModule(System.String,System.Management.Automation.ExecutionContext,System.DateTime,ubyte):System.Collections.Concurrent.ConcurrentDictionary`2[System.String,int] (FullOpts)
12 (0.13 % of base) : 23944.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AnalyzeAnonymousFunction(Microsoft.CodeAnalysis.CSharp.Syntax.AnonymousFunctionExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.UnboundLambda:this (FullOpts)
12 (0.18 % of base) : 20848.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
12 (2.38 % of base) : 22418.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
Top method improvements (bytes):
-4444 (-2.19 % of base) : 4498.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:hwTokenFetch(ubyte):FSharp.Compiler.Parser+token:this (Tier0-MinOpts)
-180 (-0.54 % of base) : 15169.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
-152 (-1.09 % of base) : 30738.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-140 (-6.01 % of base) : 1657.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-112 (-18.30 % of base) : 1568.dasm - DemoBenchmarks.FourBodyConstraintBenchmarks:VolumeConstraint():System.ValueTuple`4[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-104 (-0.29 % of base) : 32551.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:LoadModuleManifest(System.String,System.Management.Automation.ExternalScriptInfo,System.Collections.Hashtable,System.Collections.Hashtable,int,System.Version,System.Version,System.Version,System.Nullable`1[System.Guid],byref,byref):System.Management.Automation.PSModuleInfo:this (FullOpts)
-84 (-0.32 % of base) : 4465.dasm - FSharp.Compiler.Lexer:token(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
-72 (-15.52 % of base) : 802.dasm - DemoBenchmarks.ThreeBodyConstraintBenchmarks:AreaConstraint():System.ValueTuple`3[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-64 (-0.38 % of base) : 8108.dasm - FSharp.Compiler.CheckExpressions:TcPat(FSharp.Compiler.NameResolution+WarnOnUpperFlag,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PartialValReprInfo],FSharp.Compiler.TypedTree+ValInline,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+ArgAndRetAttribs,ubyte,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],ubyte,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Syntax.SynPat):System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckExpressions+TcPatPhase2Input,FSharp.Compiler.PatternMatchCompilation+Pattern],System.Tuple`3[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[System.String,FSharp.Compiler.CheckExpressions+PrelimValScheme1],Microsoft.FSharp.Collections.FSharpSet`1[System.String]]] (FullOpts)
-64 (-9.70 % of base) : 20110.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-64 (-7.41 % of base) : 27773.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-56 (-0.52 % of base) : 24685.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
-48 (-4.43 % of base) : 1319.dasm - BepuPhysics.Solver`1[DemoBenchmarks.ShapePileBenchmark+DemoPoseIntegratorCallbacks]:Solve(float,BepuUtilities.IThreadDispatcher):this (FullOpts)
-48 (-2.72 % of base) : 9960.dasm - FSharp.Compiler.CheckExpressions:analyzeRecursiveDeclPat@11316(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.Syntax.SynValTyparDecls,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.Syntax.SynValInfo,FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.CheckExpressions+OverridesOK,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+MemberOrValContainerInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+NormalizedBindingRhs,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynPat):System.Tuple`8[FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckExpressions+PreValMemberInfo],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],System.Tuple`6[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+ExplicitTyparInfo,FSharp.Compiler.CheckExpressions+NormalizedBindingRhs,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar]]] (FullOpts)
-48 (-1.89 % of base) : 21519.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
-48 (-7.74 % of base) : 12633.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-44 (-1.44 % of base) : 8660.dasm - FSharp.Compiler.CheckExpressions:TcValSpec(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+DeclKind,FSharp.Compiler.CheckExpressions+ImplicitlyBoundTyparsAllowed,FSharp.Compiler.CheckExpressions+ContainerInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynValSig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+ValSpecResult],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-44 (-1.70 % of base) : 17514.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-44 (-1.61 % of base) : 22391.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddMemberToCandidateSet[System.__Canon](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.AnalyzedArguments,ubyte,ubyte,ubyte,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte,byref,ubyte,ubyte):this (FullOpts)
-40 (-1.19 % of base) : 23577.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitCompoundAssignmentOperator(Microsoft.CodeAnalysis.CSharp.BoundCompoundAssignmentOperator):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
Top method regressions (percentages):
16 (12.50 % of base) : 901.dasm - System.Linq.Enumerable+SelectArrayIterator`2[BenchmarkDotNet.Reports.Measurement,double]:MoveNext():ubyte:this (FullOpts)
16 (6.90 % of base) : 26188.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:<VisitCall>g__visitArgumentsAndUpdateCall|10_1(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
60 (5.79 % of base) : 764.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
20 (4.00 % of base) : 23810.dasm - Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[Microsoft.CodeAnalysis.CSharp.ControlFlowPass+LocalState,System.__Canon]:VisitDoStatement(Microsoft.CodeAnalysis.CSharp.BoundDoStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
8 (3.92 % of base) : 26428.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.StackOptimizerPass2:VisitObjectCreationExpression(Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
4 (3.85 % of base) : 20337.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
4 (2.94 % of base) : 26496.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedMethodBaseSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
12 (2.38 % of base) : 22418.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:RemoveConstraintViolations[System.__Canon](Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]],Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):this (FullOpts)
16 (1.95 % of base) : 5367.dasm - FSharp.Compiler.Lexer:token$cont@859(FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort],Microsoft.FSharp.Core.Unit):FSharp.Compiler.Parser+token (FullOpts)
152 (1.94 % of base) : 2392.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
4 (1.82 % of base) : 5272.dasm - FSharp.Compiler.Xml.XmlDocCollector:LinesRange(FSharp.Compiler.Text.Position):FSharp.Compiler.Text.Range:this (FullOpts)
8 (1.50 % of base) : 25226.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeOutputTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,byref):this (FullOpts)
8 (1.37 % of base) : 24795.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:MakeExplicitParameterTypeInferences(Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,int,byref):ubyte:this (FullOpts)
4 (1.37 % of base) : 20401.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedMethodSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.33 % of base) : 21024.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedPropertySymbol:get_TypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.30 % of base) : 21381.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SubstitutedFieldSymbol:GetFieldType(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
4 (1.27 % of base) : 27402.dasm - Microsoft.CodeAnalysis.CSharp.BoundTreeRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
8 (1.26 % of base) : 32147.dasm - Microsoft.ApplicationInsights.Metrics.MetricSeriesConfigurationForMeasurement:.cctor() (FullOpts)
16 (1.16 % of base) : 19960.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MemberSignatureComparer:HaveSameParameterTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,ubyte,int):ubyte (FullOpts)
4 (1.12 % of base) : 21894.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<BindQualifiedName>g__convertToUnboundGenericType|1031_0(byref):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations (FullOpts)
Top method improvements (percentages):
-112 (-18.30 % of base) : 1568.dasm - DemoBenchmarks.FourBodyConstraintBenchmarks:VolumeConstraint():System.ValueTuple`4[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-12 (-15.79 % of base) : 12889.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
-72 (-15.52 % of base) : 802.dasm - DemoBenchmarks.ThreeBodyConstraintBenchmarks:AreaConstraint():System.ValueTuple`3[BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide,BepuPhysics.BodyVelocityWide]:this (FullOpts)
-20 (-14.29 % of base) : 25234.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (FullOpts)
-64 (-9.70 % of base) : 20110.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-12 (-9.38 % of base) : 13856.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
-8 (-9.09 % of base) : 3011.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,System.__Canon]:set_Item(int,System.__Canon):this (FullOpts)
-8 (-8.33 % of base) : 31240.dasm - System.Management.Automation.Interpreter.LoadCachedObjectInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
-48 (-7.74 % of base) : 12633.dasm - Microsoft.ML.Internal.Utilities.Heap`1[Microsoft.ML.Internal.Utilities.MinWaiter+WaitStats]:BubbleDown(int):this (FullOpts)
-64 (-7.41 % of base) : 27773.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
-12 (-6.67 % of base) : 23878.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker+<>c__DisplayClass231_0:<VisitArguments>b__3(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte]:this (FullOpts)
-12 (-6.67 % of base) : 13774.dasm - Microsoft.ML.Transforms.Text.NgramExtractingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[]):this (FullOpts)
-12 (-6.25 % of base) : 12573.dasm - Microsoft.ML.Internal.Utilities.HashArray`1[float]:.ctor():this (FullOpts)
-8 (-6.06 % of base) : 2279.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-140 (-6.01 % of base) : 1657.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-4 (-5.88 % of base) : 13260.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[double,double]:CopyOut(int,byref):this (FullOpts)
-4 (-5.88 % of base) : 13262.dasm - Microsoft.ML.Data.ArrayDataViewBuilder+Column`2[System.__Canon,Microsoft.ML.Data.VBuffer`1[double]]:CopyOut(int,byref):this (FullOpts)
-12 (-5.77 % of base) : 13929.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,int,Microsoft.ML.Transforms.Text.WordEmbeddingEstimator+ColumnOptions[]):this (FullOpts)
-12 (-5.66 % of base) : 26251.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitIndexerAccess(Microsoft.CodeAnalysis.CSharp.BoundIndexerAccess,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-12 (-5.56 % of base) : 13386.dasm - Microsoft.ML.Transforms.HashingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
smoke_tests.nativeaot.windows.arm64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3973164 (overridden on cmd)
Total bytes of diff: 3972824 (overridden on cmd)
Total bytes of delta: -340 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
16 : 2596.dasm (10.81 % of base)
16 : 8332.dasm (10.81 % of base)
12 : 13925.dasm (2.75 % of base)
12 : 19473.dasm (3.30 % of base)
12 : 4955.dasm (1.18 % of base)
12 : 12778.dasm (0.56 % of base)
12 : 15085.dasm (2.70 % of base)
12 : 17597.dasm (3.33 % of base)
12 : 17615.dasm (3.33 % of base)
12 : 10430.dasm (1.18 % of base)
12 : 15344.dasm (2.97 % of base)
12 : 7161.dasm (0.56 % of base)
12 : 8117.dasm (2.75 % of base)
4 : 11240.dasm (0.46 % of base)
4 : 6631.dasm (1.11 % of base)
4 : 7553.dasm (1.14 % of base)
4 : 7555.dasm (1.11 % of base)
4 : 13212.dasm (0.90 % of base)
4 : 14979.dasm (1.08 % of base)
4 : 2500.dasm (1.11 % of base)
Top file improvements (bytes):
-24 : 11306.dasm (-5.50 % of base)
-24 : 11308.dasm (-5.94 % of base)
-16 : 7189.dasm (-3.92 % of base)
-16 : 9426.dasm (-6.78 % of base)
-16 : 12785.dasm (-4.60 % of base)
-16 : 588.dasm (-6.78 % of base)
-12 : 12746.dasm (-2.73 % of base)
-12 : 15333.dasm (-6.52 % of base)
-12 : 4577.dasm (-2.33 % of base)
-12 : 9967.dasm (-2.33 % of base)
-8 : 10642.dasm (-5.88 % of base)
-8 : 1669.dasm (-3.08 % of base)
-8 : 10061.dasm (-2.94 % of base)
-8 : 2464.dasm (-5.88 % of base)
-8 : 5317.dasm (-2.86 % of base)
-8 : 6386.dasm (-2.94 % of base)
-8 : 6495.dasm (-5.88 % of base)
-8 : 6822.dasm (-6.06 % of base)
-8 : 8471.dasm (-3.64 % of base)
-8 : 8587.dasm (-8.70 % of base)
56 total files with Code Size differences (31 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
16 (10.81 % of base) : 2596.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
16 (10.81 % of base) : 8332.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
12 (0.56 % of base) : 12778.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
12 (0.56 % of base) : 7161.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
12 (3.33 % of base) : 17597.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (1.18 % of base) : 4955.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
12 (1.18 % of base) : 10430.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
12 (3.33 % of base) : 17615.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (3.30 % of base) : 19473.dasm - System.Globalization.TextInfo:ChangeCaseToUpper(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (2.97 % of base) : 15344.dasm - System.Runtime.InteropServices.PInvokeMarshal:AnsiStringToStringBuilder(ulong,System.Text.StringBuilder) (FullOpts)
12 (2.75 % of base) : 13925.dasm - System.String:CreateStringForSByteConstructor(ulong,int):System.String (FullOpts)
12 (2.70 % of base) : 15085.dasm - System.String:CreateStringForSByteConstructor(ulong,int):System.String (FullOpts)
12 (2.75 % of base) : 8117.dasm - System.String:CreateStringForSByteConstructor(ulong,int):System.String (FullOpts)
4 (0.46 % of base) : 11240.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetMethodInvokeMetadataFromInvokeMap(Internal.Metadata.NativeFormat.MetadataReader,System.RuntimeTypeHandle,Internal.Metadata.NativeFormat.MethodHandle,System.RuntimeTypeHandle[],byref,int,byref):ubyte (FullOpts)
4 (0.90 % of base) : 13212.dasm - System.Linq.Expressions.Interpreter.EnterTryFaultInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
4 (1.27 % of base) : 4213.dasm - System.Text.DecoderNLS:GetChars(ubyte[],int,int,ushort[],int,ubyte):int:this (FullOpts)
4 (1.14 % of base) : 7553.dasm - System.Text.OSEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.14 % of base) : 6630.dasm - System.Text.OSEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.11 % of base) : 6631.dasm - System.Text.OSEncoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
4 (1.11 % of base) : 7555.dasm - System.Text.OSEncoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
Top method improvements (bytes):
-24 (-5.50 % of base) : 11306.dasm - System.Linq.Expressions.Interpreter.LightLambda:Run(System.Object[]):System.Object:this (FullOpts)
-24 (-5.94 % of base) : 11308.dasm - System.Linq.Expressions.Interpreter.LightLambda:RunVoid(System.Object[]):System.Object:this (FullOpts)
-16 (-3.92 % of base) : 7189.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-16 (-4.60 % of base) : 12785.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-16 (-6.78 % of base) : 9426.dasm - System.Action`1[System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]]:InvokeMulticastThunk(System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]):this (FullOpts)
-16 (-6.78 % of base) : 588.dasm - System.Func`2[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:InvokeMulticastThunk(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey):System.__Canon:this (FullOpts)
-12 (-6.52 % of base) : 15333.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-12 (-2.33 % of base) : 4577.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetConstructedGenericTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],byref):ubyte:this (FullOpts)
-12 (-2.33 % of base) : 9967.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetConstructedGenericTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],byref):ubyte:this (FullOpts)
-12 (-2.73 % of base) : 12746.dasm - System.Linq.Expressions.Interpreter.ByRefNewInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-8 (-1.59 % of base) : 1185.dasm - Internal.Console:WriteCore(long,System.String) (FullOpts)
-8 (-5.88 % of base) : 2464.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-5.88 % of base) : 6495.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-3.51 % of base) : 1626.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeManagerHandle,int]:UncheckedAdd(Internal.Runtime.TypeManagerHandle,int):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.TypeManagerHandle,int]:this (FullOpts)
-8 (-3.28 % of base) : 12757.dasm - System.Collections.Generic.LowLevelDictionary`2[Internal.Runtime.TypeManagerHandle,System.__Canon]:UncheckedAdd(Internal.Runtime.TypeManagerHandle,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[Internal.Runtime.TypeManagerHandle,System.__Canon]:this (FullOpts)
-8 (-2.94 % of base) : 6386.dasm - System.Collections.Generic.LowLevelDictionary`2[System.__Canon,long]:UncheckedAdd(System.__Canon,long):System.Collections.Generic.LowLevelDictionary`2+Entry[System.__Canon,long]:this (FullOpts)
-8 (-3.08 % of base) : 1669.dasm - System.Collections.Generic.LowLevelDictionary`2[System.__Canon,System.__Canon]:UncheckedAdd(System.__Canon,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
-8 (-2.86 % of base) : 5317.dasm - System.Collections.Generic.LowLevelDictionary`2[System.__Canon,System.__Canon]:UncheckedAdd(System.__Canon,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[System.__Canon,System.__Canon]:this (FullOpts)
-8 (-3.08 % of base) : 12557.dasm - System.Collections.Generic.LowLevelDictionary`2[System.TypeUnificationKey,System.__Canon]:UncheckedAdd(System.TypeUnificationKey,System.__Canon):System.Collections.Generic.LowLevelDictionary`2+Entry[System.TypeUnificationKey,System.__Canon]:this (FullOpts)
-8 (-3.64 % of base) : 8471.dasm - System.Collections.Generic.LowLevelDictionary`2[uint,long]:UncheckedAdd(uint,long):System.Collections.Generic.LowLevelDictionary`2+Entry[uint,long]:this (FullOpts)
Top method regressions (percentages):
16 (10.81 % of base) : 2596.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
16 (10.81 % of base) : 8332.dasm - Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte (FullOpts)
12 (3.33 % of base) : 17597.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (3.33 % of base) : 17615.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToUpperConversion](System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (3.30 % of base) : 19473.dasm - System.Globalization.TextInfo:ChangeCaseToUpper(System.ReadOnlySpan`1[ushort],System.Span`1[ushort]):this (FullOpts)
12 (2.97 % of base) : 15344.dasm - System.Runtime.InteropServices.PInvokeMarshal:AnsiStringToStringBuilder(ulong,System.Text.StringBuilder) (FullOpts)
12 (2.75 % of base) : 13925.dasm - System.String:CreateStringForSByteConstructor(ulong,int):System.String (FullOpts)
12 (2.75 % of base) : 8117.dasm - System.String:CreateStringForSByteConstructor(ulong,int):System.String (FullOpts)
12 (2.70 % of base) : 15085.dasm - System.String:CreateStringForSByteConstructor(ulong,int):System.String (FullOpts)
4 (1.35 % of base) : 3477.dasm - System.Text.UnicodeEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.27 % of base) : 4213.dasm - System.Text.DecoderNLS:GetChars(ubyte[],int,int,ushort[],int,ubyte):int:this (FullOpts)
12 (1.18 % of base) : 4955.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
12 (1.18 % of base) : 10430.dasm - System.Globalization.TextInfo:ChangeCaseCommon[System.Globalization.TextInfo+ToLowerConversion](System.String):System.String:this (FullOpts)
4 (1.14 % of base) : 7553.dasm - System.Text.OSEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.14 % of base) : 6630.dasm - System.Text.OSEncoding:GetBytes(System.String,int,int,ubyte[],int):int:this (FullOpts)
4 (1.11 % of base) : 6631.dasm - System.Text.OSEncoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
4 (1.11 % of base) : 7555.dasm - System.Text.OSEncoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
4 (1.11 % of base) : 2504.dasm - System.Text.OSEncoding:GetBytes(ushort[],int,int,ubyte[],int):int:this (FullOpts)
4 (1.11 % of base) : 2500.dasm - System.Text.OSEncoding:GetChars(ubyte[],int,int,ushort[],int):int:this (FullOpts)
4 (1.11 % of base) : 6626.dasm - System.Text.OSEncoding:GetChars(ubyte[],int,int,ushort[],int):int:this (FullOpts)
Top method improvements (percentages):
-8 (-8.70 % of base) : 8587.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-8 (-8.70 % of base) : 22980.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-4 (-8.33 % of base) : 18320.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (FullOpts)
-8 (-8.33 % of base) : 12677.dasm - System.Linq.Expressions.Interpreter.LoadCachedObjectInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts)
-16 (-6.78 % of base) : 9426.dasm - System.Action`1[System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]]:InvokeMulticastThunk(System.Threading.AsyncLocalValueChangedArgs`1[System.__Canon]):this (FullOpts)
-16 (-6.78 % of base) : 588.dasm - System.Func`2[System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey,System.__Canon]:InvokeMulticastThunk(System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly+RuntimeAssemblyKey):System.__Canon:this (FullOpts)
-12 (-6.52 % of base) : 15333.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-8 (-6.06 % of base) : 6822.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.Reflection.CustomAttributeTypedArgument]:MoveNext():ubyte:this (FullOpts)
-24 (-5.94 % of base) : 11308.dasm - System.Linq.Expressions.Interpreter.LightLambda:RunVoid(System.Object[]):System.Object:this (FullOpts)
-8 (-5.88 % of base) : 2464.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-5.88 % of base) : 6495.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-5.88 % of base) : 10642.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-5.71 % of base) : 11646.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.Reflection.CustomAttributeNamedArgument]:MoveNext():ubyte:this (FullOpts)
-24 (-5.50 % of base) : 11306.dasm - System.Linq.Expressions.Interpreter.LightLambda:Run(System.Object[]):System.Object:this (FullOpts)
-16 (-4.60 % of base) : 12785.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-4 (-4.00 % of base) : 12993.dasm - System.Linq.Expressions.Interpreter.InterpretedFrame:Dup():this (FullOpts)
-16 (-3.92 % of base) : 7189.dasm - Internal.TypeSystem.FunctionPointerType:InstantiateSignature(Internal.TypeSystem.Instantiation,Internal.TypeSystem.Instantiation):Internal.TypeSystem.TypeDesc:this (FullOpts)
-8 (-3.64 % of base) : 8471.dasm - System.Collections.Generic.LowLevelDictionary`2[uint,long]:UncheckedAdd(uint,long):System.Collections.Generic.LowLevelDictionary`2+Entry[uint,long]:this (FullOpts)
-8 (-3.64 % of base) : 14068.dasm - System.Collections.Generic.LowLevelDictionary`2[uint,long]:UncheckedAdd(uint,long):System.Collections.Generic.LowLevelDictionary`2+Entry[uint,long]:this (FullOpts)
-8 (-3.57 % of base) : 9615.dasm - System.Linq.Expressions.Interpreter.HybridReferenceDictionary`2+<GetEnumeratorWorker>d__7[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
Diffs are based on 2,492,895 contexts (983,689 MinOpts, 1,509,206 FullOpts).
MISSED contexts: base: 3,899 (0.16%), diff: 3,916 (0.16%)
Overall (-2,840,990 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
42,178,999
-126,131
benchmarks.run.windows.x64.checked.mch
8,747,477
-2,284
benchmarks.run_pgo.windows.x64.checked.mch
35,391,293
-134,490
benchmarks.run_tiered.windows.x64.checked.mch
12,661,498
-76,974
coreclr_tests.run.windows.x64.checked.mch
393,404,923
-994,701
libraries.crossgen2.windows.x64.checked.mch
39,443,922
-32,948
libraries.pmi.windows.x64.checked.mch
61,386,973
-16,895
libraries_tests.run.windows.x64.Release.mch
281,632,278
-1,346,220
librariestestsnotieredcompilation.run.windows.x64.Release.mch
133,912,278
-96,807
realworld.run.windows.x64.checked.mch
14,170,687
-13,266
smoke_tests.nativeaot.windows.x64.checked.mch
5,092,364
-274
MinOpts (-2,692,403 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
14,658,725
-118,356
benchmarks.run_pgo.windows.x64.checked.mch
14,234,977
-135,881
benchmarks.run_tiered.windows.x64.checked.mch
9,185,266
-76,584
coreclr_tests.run.windows.x64.checked.mch
273,542,992
-972,566
libraries_tests.run.windows.x64.Release.mch
178,368,316
-1,315,308
librariestestsnotieredcompilation.run.windows.x64.Release.mch
10,423,370
-70,606
realworld.run.windows.x64.checked.mch
389,705
-3,102
FullOpts (-148,587 bytes)
Collection
Base size (bytes)
Diff size (bytes)
aspnet.run.windows.x64.checked.mch
27,520,274
-7,775
benchmarks.run.windows.x64.checked.mch
8,747,116
-2,284
benchmarks.run_pgo.windows.x64.checked.mch
21,156,316
+1,391
benchmarks.run_tiered.windows.x64.checked.mch
3,476,232
-390
coreclr_tests.run.windows.x64.checked.mch
119,861,931
-22,135
libraries.crossgen2.windows.x64.checked.mch
39,442,733
-32,948
libraries.pmi.windows.x64.checked.mch
61,273,454
-16,895
libraries_tests.run.windows.x64.Release.mch
103,263,962
-30,912
librariestestsnotieredcompilation.run.windows.x64.Release.mch
123,488,908
-26,201
realworld.run.windows.x64.checked.mch
13,780,982
-10,164
smoke_tests.nativeaot.windows.x64.checked.mch
5,091,455
-274
Example diffs
aspnet.run.windows.x64.checked.mch
-34 (-28.33%) : 73174.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:GetValue[System.Nullable
1[System.TimeSpan]](Microsoft.Extensions.Configuration.IConfiguration,System.String):System.Nullable1System.TimeSpan@@ -11,61 +11,46 @@
; V03 loc0 [V03 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[S] must-init ld-addr-op <System.Nullable`1[System.TimeSpan]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Nullable`1[System.TimeSpan]>
-; V06 tmp2 [V06 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x38] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 64
G_M38605_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 96
+ sub rsp, 64
vzeroupper
- lea rbp, [rsp+0x60]
+ lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x30], ymm4
- vmovdqa xmmword ptr [rbp-0x10], xmm4
+ mov qword ptr [rbp-0x10], rax
+ mov qword ptr [rbp-0x08], rax
mov bword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
- ;; size=45 bbWeight=1 PerfScore 11.33
+ ;; size=35 bbWeight=1 PerfScore 8.00
G_M38605_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vmovups xmmword ptr [rbp-0x10], xmm0
- mov rcx, bword ptr [rbp+0x10]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x28], rcx
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov gword ptr [rbp-0x30], rcx
- mov rcx, gword ptr [rbp+0x20]
- mov gword ptr [rbp-0x38], rcx
vmovups xmm0, xmmword ptr [rbp-0x10]
vmovups xmmword ptr [rbp-0x20], xmm0
- mov rcx, bword ptr [rbp-0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x30]
- ; gcrRegs +[rdx]
- mov r8, gword ptr [rbp-0x38]
- ; gcrRegs +[r8]
lea r9, [rbp-0x20]
+ mov rdx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rdx]
+ mov r8, gword ptr [rbp+0x20]
+ ; gcrRegs +[r8]
+ mov rcx, bword ptr [rbp+0x10]
+ ; byrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rdx r8]
; byrRegs -[rcx]
mov rax, bword ptr [rbp+0x10]
; byrRegs +[rax]
- ;; size=69 bbWeight=1 PerfScore 18.83
+ ;; size=45 bbWeight=1 PerfScore 12.83
G_M38605_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 120, prolog size 33, PerfScore 31.92, instruction count 31, allocated bytes for code 120 (MethodHash=782c6932) for method Microsoft.Extensions.Configuration.ConfigurationBinder:GetValue[System.Nullable`1[System.TimeSpan]](Microsoft.Extensions.Configuration.IConfiguration,System.String):System.Nullable`1[System.TimeSpan] (Tier0)
+; Total bytes of code 86, prolog size 23, PerfScore 22.58, instruction count 23, allocated bytes for code 86 (MethodHash=782c6932) for method Microsoft.Extensions.Configuration.ConfigurationBinder:GetValue[System.Nullable`1[System.TimeSpan]](Microsoft.Extensions.Configuration.IConfiguration,System.String):System.Nullable`1[System.TimeSpan] (Tier0)
; ============================================================
Unwind Info:
@@ -78,5 +63,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-28 (-26.42%) : 84090.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Resources.ResourceLocator]:set_Item(System.Canon,System.Resources.ResourceLocator):this (Instrumented Tier0)
@@ -11,58 +11,47 @@
; V03 loc0 [V03 ] ( 1, 1 ) ubyte -> [rbp-0x04] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Resources.ResourceLocator>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M48646_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 64
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rbp-0x20], xmm4
- mov qword ptr [rbp-0x10], rax
+ mov qword ptr [rbp-0x18], rax
mov gword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
mov bword ptr [rbp+0x20], r8
- ;; size=44 bbWeight=1 PerfScore 10.33
+ ;; size=31 bbWeight=1 PerfScore 7.00
G_M48646_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8, bword ptr [rbp+0x20]
+ ; byrRegs +[r8]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M48646_IG03: ; bbWeight=1, nogc, extend
+ vmovdqu xmm0, xmmword ptr [r8]
+ vmovdqu xmmword ptr [rbp-0x18], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M48646_IG04: ; bbWeight=1, extend
+ lea r8, [rbp-0x18]
+ ; byrRegs -[r8]
+ mov rdx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rdx]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x20], rcx
- mov rcx, gword ptr [rbp+0x18]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, bword ptr [rbp+0x20]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M48646_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x18], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M48646_IG04: ; bbWeight=1, extend
- mov rcx, gword ptr [rbp-0x20]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov rdx, gword ptr [rbp-0x28]
- ; gcrRegs +[rdx]
- lea r8, [rbp-0x18]
mov r9d, 1
call [<unknown method>]
; gcrRegs -[rcx rdx]
mov dword ptr [rbp-0x04], eax
;; size=27 bbWeight=1 PerfScore 6.75
G_M48646_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 32, PerfScore 28.83, instruction count 28, allocated bytes for code 106 (MethodHash=52cb41f9) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Instrumented Tier0)
+; Total bytes of code 78, prolog size 19, PerfScore 21.50, instruction count 21, allocated bytes for code 78 (MethodHash=52cb41f9) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -75,5 +64,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-28 (-26.42%) : 11363.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Resources.ResourceLocator]:set_Item(System.Canon,System.Resources.ResourceLocator):this (Tier0)
@@ -11,58 +11,47 @@
; V03 loc0 [V03 ] ( 1, 1 ) ubyte -> [rbp-0x04] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Resources.ResourceLocator>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M48646_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 64
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rbp-0x20], xmm4
- mov qword ptr [rbp-0x10], rax
+ mov qword ptr [rbp-0x18], rax
mov gword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
mov bword ptr [rbp+0x20], r8
- ;; size=44 bbWeight=1 PerfScore 10.33
+ ;; size=31 bbWeight=1 PerfScore 7.00
G_M48646_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8, bword ptr [rbp+0x20]
+ ; byrRegs +[r8]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M48646_IG03: ; bbWeight=1, nogc, extend
+ vmovdqu xmm0, xmmword ptr [r8]
+ vmovdqu xmmword ptr [rbp-0x18], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M48646_IG04: ; bbWeight=1, extend
+ lea r8, [rbp-0x18]
+ ; byrRegs -[r8]
+ mov rdx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rdx]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x20], rcx
- mov rcx, gword ptr [rbp+0x18]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, bword ptr [rbp+0x20]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=20 bbWeight=1 PerfScore 5.00
-G_M48646_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x18], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M48646_IG04: ; bbWeight=1, extend
- mov rcx, gword ptr [rbp-0x20]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov rdx, gword ptr [rbp-0x28]
- ; gcrRegs +[rdx]
- lea r8, [rbp-0x18]
mov r9d, 1
call [<unknown method>]
; gcrRegs -[rcx rdx]
mov dword ptr [rbp-0x04], eax
;; size=27 bbWeight=1 PerfScore 6.75
G_M48646_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 32, PerfScore 28.83, instruction count 28, allocated bytes for code 106 (MethodHash=52cb41f9) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Tier0)
+; Total bytes of code 78, prolog size 19, PerfScore 21.50, instruction count 21, allocated bytes for code 78 (MethodHash=52cb41f9) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Tier0)
; ============================================================
Unwind Info:
@@ -75,5 +64,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+34 (+10.49%) : 58891.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan
1[ubyte],System.ReadOnlySpan1[ushort]):this (Tier1)@@ -15,19 +15,19 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp2 [V06,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-; V07 tmp3 [V07,T13] ( 4, 2.00) int -> r9 "Inline return value spill temp"
+; V06 tmp2 [V06,T07] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V07 tmp3 [V07,T12] ( 4, 2.00) int -> r9 "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp5 [V09 ] ( 2, 2.04) byref -> [rsp+0x40] must-init pinned "Inline stloc first use temp"
+; V09 tmp5 [V09 ] ( 2, 2.04) byref -> [rsp+0x50] must-init pinned "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V11 tmp7 [V11,T06] ( 2, 4.08) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
-; V12 tmp8 [V12,T03] ( 8, 6.21) ref -> rcx
-; V13 tmp9 [V13,T14] ( 3, 2 ) int -> r9 "guarded devirt return temp"
+; V11 tmp7 [V11,T06] ( 2, 4.08) ref -> rdx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
+; V12 tmp8 [V12,T03] ( 8, 6.21) ref -> [rsp+0x30]
+; V13 tmp9 [V13,T13] ( 3, 2 ) int -> r9 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.Encodings.Web.DefaultJavaScriptEncoder>
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp14 [V18,T04] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
+; V18 tmp14 [V18,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -37,79 +37,84 @@
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp24 [V28,T15] ( 3, 2 ) int -> rax "field V05._length (fldOffset=0x8)" P-INDEP
-; V29 tmp25 [V29,T09] ( 3, 3.08) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp26 [V30,T10] ( 4, 3 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T16] ( 2, 2 ) byref -> rdx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp28 [V32,T17] ( 2, 2 ) int -> r8 "field V19._length (fldOffset=0x8)" P-INDEP
+; V28 tmp24 [V28,T14] ( 3, 2 ) int -> rax "field V05._length (fldOffset=0x8)" P-INDEP
+; V29 tmp25 [V29,T08] ( 3, 3.08) byref -> rcx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp26 [V30,T09] ( 4, 3 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
+; V31 tmp27 [V31,T15] ( 2, 2 ) byref -> rcx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp28 [V32,T16] ( 2, 2 ) int -> r8 "field V19._length (fldOffset=0x8)" P-INDEP
;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp31 [V35,T05] ( 3, 4.08) long -> rdx "Cast away GC"
-; V36 tmp32 [V36 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp33 [V37,T08] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V38 cse0 [V38,T11] ( 3, 3 ) int -> r8 "CSE - moderate"
-; V39 cse1 [V39,T12] ( 3, 2.99) int -> rbp "CSE - moderate"
+; V35 tmp31 [V35,T05] ( 3, 4.08) long -> [rsp+0x48] spill-single-def "Cast away GC"
+; V36 tmp32 [V36 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V37 cse0 [V37,T10] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V38 cse1 [V38,T11] ( 3, 2.99) int -> rbp "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M39531_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 72
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
+ sub rsp, 88
xor eax, eax
- mov qword ptr [rsp+0x40], rax
+ mov qword ptr [rsp+0x38], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
+ mov qword ptr [rsp+0x50], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rdi, rdx
; byrRegs +[rdi]
mov rbx, r8
; byrRegs +[rbx]
- ;; size=34 bbWeight=1 PerfScore 8.58
+ ;; size=39 bbWeight=1 PerfScore 9.58
G_M39531_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref
mov r8d, dword ptr [rbx+0x08]
mov eax, r8d
cmp eax, 0xD1FFAB1E
jg G_M39531_IG11
cmp byte ptr [rsi], sil
- lea rcx, bword ptr [rsi+0x60]
- ; byrRegs +[rcx]
- mov rdx, bword ptr [rbx]
+ lea rdx, bword ptr [rsi+0x60]
; byrRegs +[rdx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, bword ptr [rbx]
+ ; byrRegs +[rcx]
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
test r8d, r8d
je G_M39531_IG12
;; size=40 bbWeight=1 PerfScore 12.25
-G_M39531_IG03: ; bbWeight=1.04, gcrefRegs=0042 {rcx rsi}, byrefRegs=008C {rdx rbx rdi}, byref
- mov bword ptr [rsp+0x40], rdx
+G_M39531_IG03: ; bbWeight=1.04, gcrefRegs=0044 {rdx rsi}, byrefRegs=008A {rcx rbx rdi}, byref
+ mov bword ptr [rsp+0x50], rcx
+ mov qword ptr [rsp+0x48], rcx
mov rax, 0xD1FFAB1E ; const ptr
- test rcx, rcx
- cmove rcx, gword ptr [rax]
+ test rdx, rdx
+ cmove rdx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; System.Text.Encodings.Web.DefaultJavaScriptEncoder
- cmp qword ptr [rcx], rax
+ cmp qword ptr [rdx], rax
jne G_M39531_IG13
- ;; size=41 bbWeight=1.04 PerfScore 9.12
-G_M39531_IG04: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0088 {rbx rdi}, byref
- ; byrRegs -[rdx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
- mov bword ptr [rsp+0x30], rdx
- mov dword ptr [rsp+0x38], r8d
- lea rdx, [rsp+0x30]
+ ;; size=46 bbWeight=1.04 PerfScore 10.16
+G_M39531_IG04: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0088 {rbx rdi}, byref
+ ; byrRegs -[rcx]
+ mov rax, gword ptr [rdx+0x08]
+ ; gcrRegs +[rax]
+ cmp byte ptr [rax], al
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], r8d
+ lea rdx, [rsp+0x38]
+ ; gcrRegs -[rdx]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov r9d, eax
- ;; size=30 bbWeight=1 PerfScore 10.75
+ ;; size=33 bbWeight=1 PerfScore 11.00
G_M39531_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
xor rcx, rcx
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
+ mov bword ptr [rsp+0x50], rcx
cmp r9d, -1
jne SHORT G_M39531_IG10
;; size=13 bbWeight=1 PerfScore 2.50
@@ -138,7 +143,7 @@ G_M39531_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
mov byte ptr [rsi+0x36], 7
;; size=11 bbWeight=1 PerfScore 4.00
G_M39531_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rbp
pop rsi
@@ -172,16 +177,26 @@ G_M39531_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
mov r9d, -1
jmp SHORT G_M39531_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M39531_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M39531_IG13: ; bbWeight=0, gcrefRegs=0044 {rdx rsi}, byrefRegs=0088 {rbx rdi}, byref
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x30], rdx
+ ; GC ptr vars +{V12}
+ mov rcx, rdx
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rdx, qword ptr [rsp+0x48]
+ ; gcrRegs -[rdx]
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x40]
+ ; GC ptr vars -{V12}
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov r9d, eax
- jmp SHORT G_M39531_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M39531_IG05
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M39531_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
cmp byte ptr [rsi+0x34], 0
je SHORT G_M39531_IG15
@@ -217,7 +232,7 @@ G_M39531_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
jmp G_M39531_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 25, PerfScore 58.69, instruction count 89, allocated bytes for code 324 (MethodHash=be2d6594) for method System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
+; Total bytes of code 358, prolog size 30, PerfScore 60.98, instruction count 96, allocated bytes for code 358 (MethodHash=be2d6594) for method System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -230,7 +245,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
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)
+34 (+10.49%) : 62480.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan
1[ubyte],System.ReadOnlySpan1[ushort]):this (Tier1)@@ -15,19 +15,19 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp2 [V06,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-; V07 tmp3 [V07,T13] ( 4, 2.00) int -> r9 "Inline return value spill temp"
+; V06 tmp2 [V06,T07] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V07 tmp3 [V07,T12] ( 4, 2.00) int -> r9 "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp5 [V09 ] ( 2, 2.01) byref -> [rsp+0x40] must-init pinned "Inline stloc first use temp"
+; V09 tmp5 [V09 ] ( 2, 2.01) byref -> [rsp+0x50] must-init pinned "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V11 tmp7 [V11,T06] ( 2, 4.03) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
-; V12 tmp8 [V12,T03] ( 8, 6.07) ref -> rcx
-; V13 tmp9 [V13,T14] ( 3, 2 ) int -> r9 "guarded devirt return temp"
+; V11 tmp7 [V11,T06] ( 2, 4.03) ref -> rdx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
+; V12 tmp8 [V12,T03] ( 8, 6.07) ref -> [rsp+0x30]
+; V13 tmp9 [V13,T13] ( 3, 2 ) int -> r9 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.Encodings.Web.DefaultJavaScriptEncoder>
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp14 [V18,T04] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
+; V18 tmp14 [V18,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -37,79 +37,84 @@
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp24 [V28,T15] ( 3, 2 ) int -> rax "field V05._length (fldOffset=0x8)" P-INDEP
-; V29 tmp25 [V29,T09] ( 3, 3.03) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp26 [V30,T10] ( 4, 3 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T16] ( 2, 2 ) byref -> rdx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp28 [V32,T17] ( 2, 2 ) int -> r8 "field V19._length (fldOffset=0x8)" P-INDEP
+; V28 tmp24 [V28,T14] ( 3, 2 ) int -> rax "field V05._length (fldOffset=0x8)" P-INDEP
+; V29 tmp25 [V29,T08] ( 3, 3.03) byref -> rcx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp26 [V30,T09] ( 4, 3 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
+; V31 tmp27 [V31,T15] ( 2, 2 ) byref -> rcx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp28 [V32,T16] ( 2, 2 ) int -> r8 "field V19._length (fldOffset=0x8)" P-INDEP
;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp31 [V35,T05] ( 3, 4.03) long -> rdx "Cast away GC"
-; V36 tmp32 [V36 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp33 [V37,T08] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V38 cse0 [V38,T11] ( 3, 3 ) int -> r8 "CSE - moderate"
-; V39 cse1 [V39,T12] ( 3, 2.99) int -> rbp "CSE - moderate"
+; V35 tmp31 [V35,T05] ( 3, 4.03) long -> [rsp+0x48] spill-single-def "Cast away GC"
+; V36 tmp32 [V36 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V37 cse0 [V37,T10] ( 3, 3 ) int -> r8 "CSE - aggressive"
+; V38 cse1 [V38,T11] ( 3, 2.99) int -> rbp "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M39531_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 72
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
+ sub rsp, 88
xor eax, eax
- mov qword ptr [rsp+0x40], rax
+ mov qword ptr [rsp+0x38], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
+ mov qword ptr [rsp+0x50], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rdi, rdx
; byrRegs +[rdi]
mov rbx, r8
; byrRegs +[rbx]
- ;; size=34 bbWeight=1 PerfScore 8.58
+ ;; size=39 bbWeight=1 PerfScore 9.58
G_M39531_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref
mov r8d, dword ptr [rbx+0x08]
mov eax, r8d
cmp eax, 0xD1FFAB1E
jg G_M39531_IG11
cmp byte ptr [rsi], sil
- lea rcx, bword ptr [rsi+0x60]
- ; byrRegs +[rcx]
- mov rdx, bword ptr [rbx]
+ lea rdx, bword ptr [rsi+0x60]
; byrRegs +[rdx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, bword ptr [rbx]
+ ; byrRegs +[rcx]
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
test r8d, r8d
je G_M39531_IG12
;; size=40 bbWeight=1 PerfScore 12.25
-G_M39531_IG03: ; bbWeight=1.01, gcrefRegs=0042 {rcx rsi}, byrefRegs=008C {rdx rbx rdi}, byref
- mov bword ptr [rsp+0x40], rdx
+G_M39531_IG03: ; bbWeight=1.01, gcrefRegs=0044 {rdx rsi}, byrefRegs=008A {rcx rbx rdi}, byref
+ mov bword ptr [rsp+0x50], rcx
+ mov qword ptr [rsp+0x48], rcx
mov rax, 0xD1FFAB1E ; const ptr
- test rcx, rcx
- cmove rcx, gword ptr [rax]
+ test rdx, rdx
+ cmove rdx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; System.Text.Encodings.Web.DefaultJavaScriptEncoder
- cmp qword ptr [rcx], rax
+ cmp qword ptr [rdx], rax
jne G_M39531_IG13
- ;; size=41 bbWeight=1.01 PerfScore 8.87
-G_M39531_IG04: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0088 {rbx rdi}, byref
- ; byrRegs -[rdx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
- mov bword ptr [rsp+0x30], rdx
- mov dword ptr [rsp+0x38], r8d
- lea rdx, [rsp+0x30]
+ ;; size=46 bbWeight=1.01 PerfScore 9.89
+G_M39531_IG04: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0088 {rbx rdi}, byref
+ ; byrRegs -[rcx]
+ mov rax, gword ptr [rdx+0x08]
+ ; gcrRegs +[rax]
+ cmp byte ptr [rax], al
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], r8d
+ lea rdx, [rsp+0x38]
+ ; gcrRegs -[rdx]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov r9d, eax
- ;; size=30 bbWeight=1 PerfScore 10.75
+ ;; size=33 bbWeight=1 PerfScore 11.00
G_M39531_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
xor rcx, rcx
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
+ mov bword ptr [rsp+0x50], rcx
cmp r9d, -1
jne SHORT G_M39531_IG10
;; size=13 bbWeight=1 PerfScore 2.50
@@ -138,7 +143,7 @@ G_M39531_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
mov byte ptr [rsi+0x36], 7
;; size=11 bbWeight=1 PerfScore 4.00
G_M39531_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rbp
pop rsi
@@ -172,16 +177,26 @@ G_M39531_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
mov r9d, -1
jmp SHORT G_M39531_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M39531_IG13: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M39531_IG13: ; bbWeight=0, gcrefRegs=0044 {rdx rsi}, byrefRegs=0088 {rbx rdi}, byref
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x30], rdx
+ ; GC ptr vars +{V12}
+ mov rcx, rdx
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rdx, qword ptr [rsp+0x48]
+ ; gcrRegs -[rdx]
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x40]
+ ; GC ptr vars -{V12}
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov r9d, eax
- jmp SHORT G_M39531_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M39531_IG05
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M39531_IG14: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
cmp byte ptr [rsi+0x34], 0
je SHORT G_M39531_IG15
@@ -217,7 +232,7 @@ G_M39531_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
jmp G_M39531_IG08
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 324, prolog size 25, PerfScore 58.44, instruction count 89, allocated bytes for code 324 (MethodHash=be2d6594) for method System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
+; Total bytes of code 358, prolog size 30, PerfScore 60.71, instruction count 96, allocated bytes for code 358 (MethodHash=be2d6594) for method System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -230,7 +245,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
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)
+34 (+10.66%) : 60268.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan
1[ubyte],System.ReadOnlySpan1[ushort]):this (Tier1)@@ -15,19 +15,19 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V06 tmp2 [V06,T07] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-; V07 tmp3 [V07,T13] ( 4, 2.00) int -> r9 "Inline return value spill temp"
+; V06 tmp2 [V06,T07] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V07 tmp3 [V07,T12] ( 4, 2.00) int -> r9 "Inline return value spill temp"
;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V09 tmp5 [V09 ] ( 2, 2.00) byref -> [rsp+0x40] must-init pinned "Inline stloc first use temp"
+; V09 tmp5 [V09 ] ( 2, 2.00) byref -> [rsp+0x50] must-init pinned "Inline stloc first use temp"
;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V11 tmp7 [V11,T06] ( 2, 4.01) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
-; V12 tmp8 [V12,T03] ( 8, 6.02) ref -> rcx
-; V13 tmp9 [V13,T14] ( 3, 2 ) int -> r9 "guarded devirt return temp"
+; V11 tmp7 [V11,T06] ( 2, 4.01) ref -> rdx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
+; V12 tmp8 [V12,T03] ( 8, 6.02) ref -> [rsp+0x30]
+; V13 tmp9 [V13,T13] ( 3, 2 ) int -> r9 "guarded devirt return temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.Encodings.Web.DefaultJavaScriptEncoder>
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V18 tmp14 [V18,T04] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
+; V18 tmp14 [V18,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -37,79 +37,84 @@
;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V02._reference (fldOffset=0x0)" P-INDEP
;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
;* V27 tmp23 [V27 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP
-; V28 tmp24 [V28,T15] ( 3, 2 ) int -> rax "field V05._length (fldOffset=0x8)" P-INDEP
-; V29 tmp25 [V29,T10] ( 3, 3.01) byref -> rdx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-; V30 tmp26 [V30,T11] ( 4, 3 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
-; V31 tmp27 [V31,T16] ( 2, 2 ) byref -> rdx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp28 [V32,T17] ( 2, 2 ) int -> r8 "field V19._length (fldOffset=0x8)" P-INDEP
+; V28 tmp24 [V28,T14] ( 3, 2 ) int -> rax "field V05._length (fldOffset=0x8)" P-INDEP
+; V29 tmp25 [V29,T09] ( 3, 3.01) byref -> rcx single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+; V30 tmp26 [V30,T10] ( 4, 3 ) int -> r8 "field V08._length (fldOffset=0x8)" P-INDEP
+; V31 tmp27 [V31,T15] ( 2, 2 ) byref -> rcx single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V32 tmp28 [V32,T16] ( 2, 2 ) int -> r8 "field V19._length (fldOffset=0x8)" P-INDEP
;* V33 tmp29 [V33 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V34 tmp30 [V34 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V35 tmp31 [V35,T05] ( 3, 4.01) long -> rdx "Cast away GC"
-; V36 tmp32 [V36 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V37 tmp33 [V37,T08] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V38 cse0 [V38,T09] ( 3, 3.07) int -> rbp "CSE - aggressive"
-; V39 cse1 [V39,T12] ( 3, 3 ) int -> r8 "CSE - moderate"
+; V35 tmp31 [V35,T05] ( 3, 4.01) long -> [rsp+0x48] spill-single-def "Cast away GC"
+; V36 tmp32 [V36 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V37 cse0 [V37,T08] ( 3, 3.07) int -> rbp "CSE - aggressive"
+; V38 cse1 [V38,T11] ( 3, 3 ) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M39531_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbp
push rbx
- sub rsp, 72
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
+ sub rsp, 88
xor eax, eax
- mov qword ptr [rsp+0x40], rax
+ mov qword ptr [rsp+0x38], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
+ mov qword ptr [rsp+0x50], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rdi, rdx
; byrRegs +[rdi]
mov rbx, r8
; byrRegs +[rbx]
- ;; size=34 bbWeight=1 PerfScore 8.58
+ ;; size=39 bbWeight=1 PerfScore 9.58
G_M39531_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref
mov r8d, dword ptr [rbx+0x08]
mov eax, r8d
cmp eax, 0xD1FFAB1E
jg G_M39531_IG12
cmp byte ptr [rsi], sil
- lea rcx, bword ptr [rsi+0x60]
- ; byrRegs +[rcx]
- mov rdx, bword ptr [rbx]
+ lea rdx, bword ptr [rsi+0x60]
; byrRegs +[rdx]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rcx, bword ptr [rbx]
+ ; byrRegs +[rcx]
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
test r8d, r8d
je G_M39531_IG13
;; size=40 bbWeight=1 PerfScore 12.25
-G_M39531_IG03: ; bbWeight=1.00, gcrefRegs=0042 {rcx rsi}, byrefRegs=008C {rdx rbx rdi}, byref
- mov bword ptr [rsp+0x40], rdx
+G_M39531_IG03: ; bbWeight=1.00, gcrefRegs=0044 {rdx rsi}, byrefRegs=008A {rcx rbx rdi}, byref
+ mov bword ptr [rsp+0x50], rcx
+ mov qword ptr [rsp+0x48], rcx
mov rax, 0xD1FFAB1E ; const ptr
- test rcx, rcx
- cmove rcx, gword ptr [rax]
+ test rdx, rdx
+ cmove rdx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; System.Text.Encodings.Web.DefaultJavaScriptEncoder
- cmp qword ptr [rcx], rax
+ cmp qword ptr [rdx], rax
jne G_M39531_IG14
- ;; size=41 bbWeight=1.00 PerfScore 8.79
-G_M39531_IG04: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0088 {rbx rdi}, byref
- ; byrRegs -[rdx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
- mov bword ptr [rsp+0x30], rdx
- mov dword ptr [rsp+0x38], r8d
- lea rdx, [rsp+0x30]
+ ;; size=46 bbWeight=1.00 PerfScore 9.80
+G_M39531_IG04: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0088 {rbx rdi}, byref
+ ; byrRegs -[rcx]
+ mov rax, gword ptr [rdx+0x08]
+ ; gcrRegs +[rax]
+ cmp byte ptr [rax], al
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], r8d
+ lea rdx, [rsp+0x38]
+ ; gcrRegs -[rdx]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov r9d, eax
- ;; size=30 bbWeight=1 PerfScore 10.75
+ ;; size=33 bbWeight=1 PerfScore 11.00
G_M39531_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
xor rcx, rcx
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
+ mov bword ptr [rsp+0x50], rcx
cmp r9d, -1
jne SHORT G_M39531_IG11
;; size=13 bbWeight=1 PerfScore 2.50
@@ -138,7 +143,7 @@ G_M39531_IG08: ; bbWeight=1.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov byte ptr [rsi+0x36], 7
;; size=11 bbWeight=1.02 PerfScore 4.10
G_M39531_IG09: ; bbWeight=1.02, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rbp
pop rsi
@@ -179,16 +184,26 @@ G_M39531_IG13: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rd
mov r9d, -1
jmp SHORT G_M39531_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M39531_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
+G_M39531_IG14: ; bbWeight=0, gcrefRegs=0044 {rdx rsi}, byrefRegs=0088 {rbx rdi}, byref
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x30], rdx
+ ; GC ptr vars +{V12}
+ mov rcx, rdx
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rdx, qword ptr [rsp+0x48]
+ ; gcrRegs -[rdx]
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x40]
+ ; GC ptr vars -{V12}
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov r9d, eax
- jmp SHORT G_M39531_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M39531_IG05
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M39531_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx rdi}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
@@ -215,7 +230,7 @@ G_M39531_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byr
int3
;; size=31 bbWeight=0 PerfScore 0.00
-; Total bytes of code 319, prolog size 25, PerfScore 59.16, instruction count 90, allocated bytes for code 319 (MethodHash=be2d6594) for method System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
+; Total bytes of code 353, prolog size 30, PerfScore 61.42, instruction count 97, allocated bytes for code 353 (MethodHash=be2d6594) for method System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -228,7 +243,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
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)
benchmarks.run.windows.x64.checked.mch
-15 (-14.15%) : 6536.dasm - System.Tests.Perf_Int128:.ctor():this (FullOpts)
@@ -9,60 +9,54 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Tests.Perf_Int128>
-; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Int128>
+; V01 loc0 [V01 ] ( 2, 2 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Int128>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 2, 2 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V01._lower (fldOffset=0x0)" P-DEP
-; V04 tmp2 [V04 ] ( 2, 2 ) long -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V01._upper (fldOffset=0x8)" P-DEP
-; V05 tmp3 [V05 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Int128>
+; V03 tmp1 [V03 ] ( 2, 2 ) long -> [rsp+0x30] do-not-enreg[X] addr-exposed "field V01._lower (fldOffset=0x0)" P-DEP
+; V04 tmp2 [V04 ] ( 2, 2 ) long -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V01._upper (fldOffset=0x8)" P-DEP
+; V05 tmp3 [V05 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Int128>
; V06 tmp4 [V06,T01] ( 2, 4 ) long -> rdx "argument with side effect"
-; TEMP_01 byref -> [rsp+0x48]
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M8463_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 80
- vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [rsp+0x38], xmm4
+ sub rsp, 64
xor eax, eax
- mov qword ptr [rsp+0x48], rax
+ mov qword ptr [rsp+0x30], rax
+ mov qword ptr [rsp+0x38], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 5.08
+ ;; size=20 bbWeight=1 PerfScore 3.75
G_M8463_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rcx, [rsp+0x38]
+ lea rcx, [rsp+0x30]
call [System.Int128:get_MinValue():System.Int128]
; gcr arg pop 0
- lea rcx, bword ptr [rbx+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x48], rcx
- vmovups xmm0, xmmword ptr [rsp+0x38]
- vmovups xmmword ptr [rsp+0x28], xmm0
- lea rcx, [rsp+0x28]
- ; byrRegs -[rcx]
+ vmovups xmm0, xmmword ptr [rsp+0x30]
+ vmovups xmmword ptr [rsp+0x20], xmm0
+ lea rcx, [rsp+0x20]
call [System.Number:Int128ToDecStr(System.Int128):System.String]
- ; gcrRegs -[rbx] +[rax]
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov edx, dword ptr [rax+0x08]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x48]
+ lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
nop
- ;; size=75 bbWeight=1 PerfScore 18.25
+ ;; size=65 bbWeight=1 PerfScore 16.25
G_M8463_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 64
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 22, PerfScore 25.08, instruction count 25, allocated bytes for code 106 (MethodHash=76b8def0) for method System.Tests.Perf_Int128:.ctor():this (FullOpts)
+; Total bytes of code 91, prolog size 17, PerfScore 21.75, instruction count 22, allocated bytes for code 91 (MethodHash=76b8def0) for method System.Tests.Perf_Int128:.ctor():this (FullOpts)
; ============================================================
Unwind Info:
@@ -75,5 +69,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-15 (-11.81%) : 27939.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
@@ -11,9 +11,8 @@
; V01 loc0 [V01,T01] ( 4, 10 ) ubyte -> rsi
; V02 loc1 [V02,T00] ( 4, 13 ) int -> rdi
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04 ] ( 3, 3 ) struct ( 8) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
+; V04 tmp1 [V04 ] ( 3, 3 ) struct ( 8) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "NewObjArrayArgs"
; V05 tmp2 [V05,T03] ( 2, 4 ) long -> r8 "argument with side effect"
-; TEMP_01 byref -> [rsp+0x28]
;
; Lcl frame size = 48
@@ -23,25 +22,20 @@ G_M10312_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 48
xor eax, eax
- mov qword ptr [rsp+0x20], rax
mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=22 bbWeight=1 PerfScore 5.75
+ ;; size=17 bbWeight=1 PerfScore 4.75
G_M10312_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rcx, bword ptr [rbx+0x28]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x28], rcx
- mov dword ptr [rsp+0x20], 13
- mov dword ptr [rsp+0x24], 512
- lea r8, [rsp+0x20]
+ mov dword ptr [rsp+0x28], 13
+ mov dword ptr [rsp+0x2C], 512
+ lea r8, [rsp+0x28]
mov rcx, 0xD1FFAB1E ; <unknown class>
- ; byrRegs -[rcx]
mov edx, 2
call CORINFO_HELP_NEW_MDARR
; gcrRegs +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x28]
+ lea rcx, bword ptr [rbx+0x28]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -50,7 +44,7 @@ G_M10312_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; byrRegs -[rcx]
mov esi, 1
xor edi, edi
- ;; size=70 bbWeight=1 PerfScore 8.25
+ ;; size=60 bbWeight=1 PerfScore 6.25
G_M10312_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -75,7 +69,7 @@ G_M10312_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=8 bbWeight=1 PerfScore 2.75
-; Total bytes of code 127, prolog size 19, PerfScore 38.00, instruction count 34, allocated bytes for code 127 (MethodHash=56f6d7b7) for method Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
+; Total bytes of code 112, prolog size 14, PerfScore 35.00, instruction count 31, allocated bytes for code 112 (MethodHash=56f6d7b7) for method Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
; ============================================================
Unwind Info:
-30 (-10.17%) : 1633.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo:Configure():this (FullOpts)
@@ -10,27 +10,22 @@
;
; V00 this [V00,T00] ( 25, 14.50) ref -> rbx this class-hnd single-def <System.Text.Json.Serialization.Metadata.JsonPropertyInfo>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T03] ( 2, 2 ) ref -> [rsp+0x38] class-hnd exact spill-single-def "impAppendStmt" <System.Text.Json.JsonSerializerOptions>
+; V02 tmp1 [V02,T03] ( 2, 2 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.Text.Json.JsonSerializerOptions>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
; V04 tmp3 [V04,T04] ( 2, 2 ) ref -> rdx class-hnd single-def "impAppendStmt" <System.Type>
; V05 tmp4 [V05,T01] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Json.Serialization.Metadata.JsonTypeInfo>
-;* V06 tmp5 [V06,T07] ( 0, 0 ) ubyte -> zero-ref "field V03.hasValue (fldOffset=0x0)" P-INDEP
-;* V07 tmp6 [V07,T08] ( 0, 0 ) ubyte -> zero-ref "field V03.value (fldOffset=0x1)" P-INDEP
-; V08 tmp7 [V08,T02] ( 3, 3 ) struct ( 8) [rsp+0x40] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V09 tmp8 [V09,T05] ( 2, 2 ) ref -> r9 single-def "argument with side effect"
-; V10 tmp9 [V10,T06] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; TEMP_01 byref -> [rsp+0x48]
+;* V06 tmp5 [V06,T05] ( 0, 0 ) ubyte -> zero-ref "field V03.hasValue (fldOffset=0x0)" P-INDEP
+;* V07 tmp6 [V07,T06] ( 0, 0 ) ubyte -> zero-ref "field V03.value (fldOffset=0x1)" P-INDEP
+; V08 tmp7 [V08,T02] ( 3, 3 ) struct ( 8) [rsp+0x38] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M48713_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 80
- xor eax, eax
- mov qword ptr [rsp+0x48], rax
+ sub rsp, 64
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 2.75
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M48713_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, rbx
; gcrRegs +[rcx]
@@ -49,42 +44,29 @@ G_M48713_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
jne SHORT G_M48713_IG06
mov rcx, gword ptr [rbx+0x68]
; gcrRegs +[rcx]
- mov gword ptr [rsp+0x38], rcx
- ; GC ptr vars +{V02}
mov rdx, gword ptr [rbx+0x48]
; gcrRegs +[rdx]
- lea rcx, bword ptr [rbx+0x78]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x48], rcx
- mov r9, gword ptr [rsp+0x38]
- ; gcrRegs +[r9]
- mov byte ptr [rsp+0x40], 1
- mov byte ptr [rsp+0x41], 1
- xor r8d, r8d
- mov dword ptr [rsp+0x20], r8d
- ;; size=52 bbWeight=0.50 PerfScore 7.38
-G_M48713_IG05: ; bbWeight=0.50, gcrefRegs=020C {rdx rbx r9}, byrefRegs=0000 {}, byref
- ; byrRegs -[rcx]
- ; GC ptr vars -{V02}
- mov dword ptr [rsp+0x28], r8d
- mov rcx, r9
- ; gcrRegs +[rcx]
- movzx r9, word ptr [rsp+0x40]
- ; gcrRegs -[r9]
+ mov byte ptr [rsp+0x38], 1
+ mov byte ptr [rsp+0x39], 1
+ xor r9d, r9d
+ mov dword ptr [rsp+0x20], r9d
+ ;; size=33 bbWeight=0.50 PerfScore 5.62
+G_M48713_IG05: ; bbWeight=0.50, gcrefRegs=000E {rcx rdx rbx}, byrefRegs=0000 {}, byref
+ mov dword ptr [rsp+0x28], r9d
+ movzx r9, word ptr [rsp+0x38]
mov r8d, 1
cmp dword ptr [rcx], ecx
call [<unknown method>]
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x48]
+ lea rcx, bword ptr [rbx+0x78]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- ;; size=41 bbWeight=0.50 PerfScore 5.38
+ ;; size=37 bbWeight=0.50 PerfScore 5.00
G_M48713_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x78]
; gcrRegs +[rcx]
@@ -158,7 +140,7 @@ G_M48713_IG13: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov byte ptr [rbx+0x95], 1
;; size=7 bbWeight=1 PerfScore 1.00
G_M48713_IG14: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 64
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
@@ -180,7 +162,7 @@ G_M48713_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
int3
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 295, prolog size 12, PerfScore 56.12, instruction count 72, allocated bytes for code 295 (MethodHash=7cb841b6) for method System.Text.Json.Serialization.Metadata.JsonPropertyInfo:Configure():this (FullOpts)
+; Total bytes of code 265, prolog size 5, PerfScore 52.75, instruction count 65, allocated bytes for code 265 (MethodHash=7cb841b6) for method System.Text.Json.Serialization.Metadata.JsonPropertyInfo:Configure():this (FullOpts)
; ============================================================
Unwind Info:
@@ -193,5 +175,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+25 (+5.52%) : 26652.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
@@ -8,40 +8,35 @@
; 0 inlinees with PGO data; 5 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T12] ( 10, 11 ) ref -> rbx this class-hnd single-def <V8.Crypto.BigInteger>
-; V01 arg1 [V01,T17] ( 4, 3.50) int -> rcx single-def
-; V02 arg2 [V02,T16] ( 7, 5.50) ref -> rsi class-hnd single-def <V8.Crypto.BigInteger>
+; V00 this [V00,T10] ( 10, 11 ) ref -> rbx this class-hnd single-def <V8.Crypto.BigInteger>
+; V01 arg1 [V01,T15] ( 4, 3.50) int -> r8 single-def
+; V02 arg2 [V02,T14] ( 7, 5.50) ref -> rsi class-hnd single-def <V8.Crypto.BigInteger>
; V03 loc0 [V03,T06] ( 7, 18 ) ref -> rdi class-hnd single-def <V8.Crypto.ListX`1[int]>
-; V04 loc1 [V04,T01] ( 8, 18.50) ref -> rbp class-hnd single-def <V8.Crypto.ListX`1[int]>
-; V05 loc2 [V05,T13] ( 10, 13 ) int -> r15 single-def
-; V06 loc3 [V06,T26] ( 4, 2 ) int -> r13 single-def
-; V07 loc4 [V07,T19] ( 3, 5 ) int -> r14 single-def
-; V08 loc5 [V08,T20] ( 3, 5 ) int -> [rsp+0x24] spill-single-def
-; V09 loc6 [V09,T00] ( 13, 45 ) int -> [rsp+0x20]
+; V04 loc1 [V04,T05] ( 9, 19 ) ref -> rbp class-hnd single-def <V8.Crypto.ListX`1[int]>
+; V05 loc2 [V05,T13] ( 9, 9 ) int -> r15 single-def
+; V06 loc3 [V06,T22] ( 4, 2 ) int -> [rsp+0x34] spill-single-def
+; V07 loc4 [V07,T17] ( 3, 5 ) int -> r14 single-def
+; V08 loc5 [V08,T18] ( 3, 5 ) int -> [rsp+0x30] spill-single-def
+; V09 loc6 [V09,T00] ( 11, 37 ) int -> [rsp+0x2C]
;* V10 loc7 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <V8.Crypto.ListX`1[int]>
-; V11 loc8 [V11,T05] ( 8, 21.50) int -> rdx
+; V11 loc8 [V11,T04] ( 10, 22.50) int -> rdx
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T07] ( 2, 16 ) int -> r8 "impAppendStmt"
-; V14 tmp2 [V14,T23] ( 3, 3 ) ref -> rcx single-def "arr expr"
-;* V15 tmp3 [V15,T29] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V16 tmp4 [V16,T27] ( 2, 2 ) int -> r8 "argument with side effect"
+; V14 tmp2 [V14,T20] ( 3, 3 ) ref -> r8 single-def "arr expr"
+; V15 tmp3 [V15,T23] ( 2, 2 ) int -> r8 "argument with side effect"
+; V16 tmp4 [V16,T01] ( 3, 24 ) ref -> r8 "arr expr"
; V17 tmp5 [V17,T02] ( 3, 24 ) ref -> rcx "arr expr"
-; V18 tmp6 [V18,T03] ( 3, 24 ) ref -> rcx "arr expr"
-;* V19 tmp7 [V19,T14] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V20 tmp8 [V20,T08] ( 2, 16 ) int -> rdx "argument with side effect"
-; V21 tmp9 [V21,T09] ( 2, 16 ) int -> r8 "argument with side effect"
-; V22 tmp10 [V22,T04] ( 3, 24 ) ref -> rcx "arr expr"
-;* V23 tmp11 [V23,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V24 tmp12 [V24,T10] ( 2, 16 ) int -> rdx "argument with side effect"
-; V25 tmp13 [V25,T11] ( 2, 16 ) int -> r8 "argument with side effect"
-; V26 tmp14 [V26,T24] ( 3, 3 ) ref -> r8 single-def "arr expr"
-; V27 tmp15 [V27,T25] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
-; V28 tmp16 [V28,T21] ( 4, 4 ) int -> rdx "argument with side effect"
-; V29 tmp17 [V29,T28] ( 2, 2 ) int -> r8 "argument with side effect"
-; V30 cse0 [V30,T22] ( 4, 3 ) int -> r14 "CSE - moderate"
-; V31 cse1 [V31,T18] ( 4, 5.50) int -> r12 "CSE - moderate"
+; V18 tmp6 [V18,T08] ( 2, 16 ) int -> r8 "argument with side effect"
+; V19 tmp7 [V19,T03] ( 3, 24 ) ref -> r8 "arr expr"
+; V20 tmp8 [V20,T09] ( 2, 16 ) int -> r8 "argument with side effect"
+; V21 tmp9 [V21,T21] ( 3, 3 ) ref -> r8 single-def "arr expr"
+; V22 tmp10 [V22,T24] ( 2, 2 ) int -> r8 "argument with side effect"
+; V23 cse0 [V23,T19] ( 4, 3 ) int -> r14 "CSE - moderate"
+; V24 cse1 [V24,T16] ( 4, 5.50) int -> r12 "CSE - moderate"
+; V25 cse2 [V25,T11] ( 3, 12 ) int -> [rsp+0x28] spill-single-def "CSE - aggressive"
+; V26 cse3 [V26,T12] ( 3, 12 ) long -> [rsp+0x20] spill-single-def "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M7403_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -52,13 +47,13 @@ G_M7403_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
mov rbx, rcx
; gcrRegs +[rbx]
- mov ecx, edx
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=24 bbWeight=1 PerfScore 9.00
+ mov r8d, edx
+ ;; size=25 bbWeight=1 PerfScore 9.00
G_M7403_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
@@ -67,20 +62,20 @@ G_M7403_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
mov eax, dword ptr [rbx+0x14]
mov dword ptr [rsi+0x14], eax
mov r14d, dword ptr [(reloc)] ; static handle
- mov eax, ecx
+ mov eax, r8d
cdq
idiv edx:eax, r14d
mov r15d, eax
cmp r15d, dword ptr [rbx+0x10]
jl SHORT G_M7403_IG05
- ;; size=36 bbWeight=1 PerfScore 39.00
+ ;; size=37 bbWeight=1 PerfScore 39.00
G_M7403_IG03: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rbp rdi]
xor eax, eax
mov dword ptr [rsi+0x10], eax
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M7403_IG04: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -93,27 +88,28 @@ G_M7403_IG04: ; bbWeight=0.50, epilog, nogc, extend
;; size=17 bbWeight=0.50 PerfScore 2.62
G_M7403_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx rbp rdi]
- mov eax, ecx
+ mov eax, r8d
cdq
idiv edx:eax, r14d
mov r13d, edx
+ mov dword ptr [rsp+0x34], r13d
sub r14d, r13d
mov r12d, r13d
and r12d, 31
- mov ecx, 1
- shlx eax, ecx, r12d
+ mov r8d, 1
+ shlx eax, r8d, r12d
dec eax
- mov dword ptr [rsp+0x24], eax
+ mov dword ptr [rsp+0x30], eax
cmp r15d, dword ptr [rdi+0x10]
jae G_M7403_IG11
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- cmp r15d, dword ptr [rcx+0x08]
+ mov r8, gword ptr [rdi+0x08]
+ ; gcrRegs +[r8]
+ cmp r15d, dword ptr [r8+0x08]
jae G_M7403_IG10
- mov r8d, r15d
- mov ecx, dword ptr [rcx+4*r8+0x10]
- ; gcrRegs -[rcx]
- sarx r8d, ecx, r12d
+ mov ecx, r15d
+ mov r8d, dword ptr [r8+4*rcx+0x10]
+ ; gcrRegs -[r8]
+ sarx r8d, r8d, r12d
mov rcx, rbp
; gcrRegs +[rcx]
xor edx, edx
@@ -124,30 +120,34 @@ G_M7403_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00E8
lea eax, [r15+0x01]
cmp eax, dword ptr [rbx+0x10]
jge G_M7403_IG07
- ;; size=98 bbWeight=0.50 PerfScore 26.25
+ ;; size=105 bbWeight=0.50 PerfScore 26.75
G_M7403_IG06: ; bbWeight=4, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref
- mov edx, eax
- sub edx, r15d
- dec edx
+ mov r10d, eax
+ sub r10d, r15d
+ mov dword ptr [rsp+0x28], r10d
+ lea edx, [r10-0x01]
cmp edx, dword ptr [rbp+0x10]
jae G_M7403_IG11
- mov rcx, gword ptr [rbp+0x08]
- ; gcrRegs +[rcx]
- cmp edx, dword ptr [rcx+0x08]
+ mov r8, gword ptr [rbp+0x08]
+ ; gcrRegs +[r8]
+ cmp edx, dword ptr [r8+0x08]
jae G_M7403_IG10
- mov r8d, edx
- mov r8d, dword ptr [rcx+4*r8+0x10]
+ mov ecx, edx
+ mov r8d, dword ptr [r8+4*rcx+0x10]
+ ; gcrRegs -[r8]
cmp eax, dword ptr [rdi+0x10]
jae G_M7403_IG11
mov rcx, gword ptr [rdi+0x08]
+ ; gcrRegs +[rcx]
cmp eax, dword ptr [rcx+0x08]
jae G_M7403_IG10
- mov dword ptr [rsp+0x20], eax
- mov r10d, eax
- mov r9d, dword ptr [rsp+0x24]
- mov r11d, r9d
- and r11d, dword ptr [rcx+4*r10+0x10]
- shlx ecx, r11d, r14d
+ mov dword ptr [rsp+0x2C], eax
+ mov r9d, eax
+ mov qword ptr [rsp+0x20], r9
+ mov r11d, dword ptr [rsp+0x30]
+ mov r13d, r11d
+ and r13d, dword ptr [rcx+4*r9+0x10]
+ shlx ecx, r13d, r14d
; gcrRegs -[rcx]
or r8d, ecx
mov rcx, rbp
@@ -155,56 +155,54 @@ G_M7403_IG06: ; bbWeight=4, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0
call [V8.Crypto.ListX`1[int]:set_Item(int,int):this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov eax, dword ptr [rsp+0x20]
- cmp eax, dword ptr [rdi+0x10]
+ mov r13d, dword ptr [rsp+0x2C]
+ cmp r13d, dword ptr [rdi+0x10]
jae G_M7403_IG11
- mov edx, eax
- sub edx, r15d
- mov rcx, gword ptr [rdi+0x08]
- ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x08]
+ mov r8, gword ptr [rdi+0x08]
+ ; gcrRegs +[r8]
+ cmp r13d, dword ptr [r8+0x08]
jae G_M7403_IG10
- mov dword ptr [rsp+0x20], eax
- mov r8d, eax
- mov ecx, dword ptr [rcx+4*r8+0x10]
- ; gcrRegs -[rcx]
- sarx r8d, ecx, r12d
+ mov rdx, qword ptr [rsp+0x20]
+ mov r8d, dword ptr [r8+4*rdx+0x10]
+ ; gcrRegs -[r8]
+ sarx r8d, r8d, r12d
+ mov edx, dword ptr [rsp+0x28]
mov rcx, rbp
; gcrRegs +[rcx]
call [V8.Crypto.ListX`1[int]:set_Item(int,int):this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov eax, dword ptr [rsp+0x20]
- inc eax
- cmp eax, dword ptr [rbx+0x10]
+ inc r13d
+ cmp r13d, dword ptr [rbx+0x10]
+ mov eax, r13d
jl G_M7403_IG06
- ;; size=168 bbWeight=4 PerfScore 225.00
+ ;; size=182 bbWeight=4 PerfScore 232.00
G_M7403_IG07: ; bbWeight=0.50, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
- test r13d, r13d
+ cmp dword ptr [rsp+0x34], 0
jle SHORT G_M7403_IG08
mov edx, dword ptr [rbx+0x10]
sub edx, r15d
dec edx
cmp edx, dword ptr [rbp+0x10]
jae SHORT G_M7403_IG11
- mov rcx, rbp
- ; gcrRegs +[rcx]
- mov r8, gword ptr [rcx+0x08]
...
+40 (+5.78%) : 14832.dasm - System.Number:FormatCurrencyushort (FullOpts)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 18, 34 ) byref -> rbx single-def
-; V01 arg1 [V01,T10] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T11] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T21] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T29] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T08] ( 9, 13 ) ref -> rsi class-hnd single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc1 [V05,T09] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T22] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T02] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T03] ( 6, 16 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp3 [V11,T72] ( 3, 2 ) ref -> r14
-; V12 tmp4 [V12,T15] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V11 tmp3 [V11,T67] ( 3, 2 ) ref -> r14
+; V12 tmp4 [V12,T12] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -36,8 +36,8 @@
; V25 tmp17 [V25,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V26 tmp18 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V27 tmp19 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V28 tmp20 [V28,T21] ( 2, 8 ) int -> rax "Inlining Arg"
-; V29 tmp21 [V29,T16] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V28 tmp20 [V28,T17] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V29 tmp21 [V29,T13] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp23 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp24 [V32 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -45,7 +45,7 @@
;* V34 tmp26 [V34 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp27 [V35 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V37 tmp29 [V37,T31] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V37 tmp29 [V37,T30] ( 3, 6 ) int -> [rsp+0x84] spill-single-def "Inline stloc first use temp"
;* V38 tmp30 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp31 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V40 tmp32 [V40 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -60,8 +60,8 @@
; V49 tmp41 [V49,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V50 tmp42 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V51 tmp43 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V52 tmp44 [V52,T22] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V53 tmp45 [V53,T17] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V52 tmp44 [V52,T18] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V53 tmp45 [V53,T14] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V54 tmp46 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V55 tmp47 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp48 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -69,7 +69,7 @@
;* V58 tmp50 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V59 tmp51 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V60 tmp52 [V60 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V61 tmp53 [V61,T32] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V61 tmp53 [V61,T31] ( 3, 6 ) int -> [rsp+0x80] spill-single-def "Inline stloc first use temp"
;* V62 tmp54 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V64 tmp56 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -84,8 +84,8 @@
; V73 tmp65 [V73,T06] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V74 tmp66 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V75 tmp67 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V76 tmp68 [V76,T23] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V77 tmp69 [V77,T18] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V76 tmp68 [V76,T19] ( 2, 8 ) int -> rax "Inlining Arg"
+; V77 tmp69 [V77,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V79 tmp71 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V80 tmp72 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -93,13 +93,13 @@
;* V82 tmp74 [V82 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V83 tmp75 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V84 tmp76 [V84 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V85 tmp77 [V85,T33] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V85 tmp77 [V85,T32] ( 3, 6 ) int -> [rsp+0x7C] spill-single-def "Inline stloc first use temp"
;* V86 tmp78 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp79 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V88 tmp80 [V88 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V89 tmp81 [V89 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V90 tmp82 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V91 tmp83 [V91,T12] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V91 tmp83 [V91,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V92 tmp84 [V92 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V93 tmp85 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V94 tmp86 [V94 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -111,8 +111,8 @@
; V100 tmp92 [V100,T07] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V101 tmp93 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V102 tmp94 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V103 tmp95 [V103,T24] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V104 tmp96 [V104,T19] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V103 tmp95 [V103,T20] ( 2, 8 ) int -> rax "Inlining Arg"
+; V104 tmp96 [V104,T16] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V105 tmp97 [V105 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V106 tmp98 [V106 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V107 tmp99 [V107 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -120,20 +120,20 @@
;* V109 tmp101 [V109 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V110 tmp102 [V110 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V111 tmp103 [V111 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V112 tmp104 [V112,T34] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V112 tmp104 [V112,T33] ( 3, 6 ) int -> [rsp+0x78] spill-single-def "Inline stloc first use temp"
;* V113 tmp105 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V114 tmp106 [V114 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V115 tmp107 [V115 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V116 tmp108 [V116 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V117 tmp109 [V117 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V118 tmp110 [V118,T13] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V118 tmp110 [V118,T10] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V119 tmp111 [V119 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V120 tmp112 [V120 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V121 tmp113 [V121,T14] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V121 tmp113 [V121,T11] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V122 tmp114 [V122 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V123 tmp115 [V123 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V124 tmp116 [V124,T41] ( 2, 4 ) byref -> r12 "field V13._reference (fldOffset=0x0)" P-INDEP
-; V125 tmp117 [V125,T55] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
+; V124 tmp116 [V124,T41] ( 2, 4 ) byref -> [rsp+0x48] spill-single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp117 [V125,T55] ( 2, 4 ) int -> [rsp+0x74] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V127 tmp119 [V127 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V128 tmp120 [V128 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
@@ -142,91 +142,86 @@
;* V131 tmp123 [V131 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V134 tmp126 [V134,T25] ( 3, 6 ) byref -> r12 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V135 tmp127 [V135,T35] ( 3, 6 ) int -> rax "field V24._length (fldOffset=0x8)" P-INDEP
-; V136 tmp128 [V136,T42] ( 2, 4 ) byref -> r12 "field V26._reference (fldOffset=0x0)" P-INDEP
-; V137 tmp129 [V137,T56] ( 2, 4 ) int -> rax "field V26._length (fldOffset=0x8)" P-INDEP
+; V134 tmp126 [V134,T23] ( 3, 6 ) byref -> rax "field V24._reference (fldOffset=0x0)" P-INDEP
+; V135 tmp127 [V135,T34] ( 3, 6 ) int -> r8 "field V24._length (fldOffset=0x8)" P-INDEP
+; V136 tmp128 [V136,T42] ( 2, 4 ) byref -> rax "field V26._reference (fldOffset=0x0)" P-INDEP
+; V137 tmp129 [V137,T56] ( 2, 4 ) int -> r8 "field V26._length (fldOffset=0x8)" P-INDEP
;* V138 tmp130 [V138 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
-; V140 tmp132 [V140,T43] ( 2, 4 ) byref -> r12 "field V34._reference (fldOffset=0x0)" P-INDEP
+; V140 tmp132 [V140,T43] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V34._reference (fldOffset=0x0)" P-INDEP
;* V141 tmp133 [V141 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
-; V142 tmp134 [V142,T44] ( 2, 4 ) byref -> r12 "field V38._reference (fldOffset=0x0)" P-INDEP
-; V143 tmp135 [V143,T57] ( 2, 4 ) int -> rax "field V38._length (fldOffset=0x8)" P-INDEP
+; V142 tmp134 [V142,T44] ( 2, 4 ) byref -> rax "field V38._reference (fldOffset=0x0)" P-INDEP
+; V143 tmp135 [V143,T57] ( 2, 4 ) int -> r8 "field V38._length (fldOffset=0x8)" P-INDEP
;* V144 tmp136 [V144 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp139 [V147 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V148 tmp140 [V148 ] ( 0, 0 ) byref -> zero-ref "field V45._reference (fldOffset=0x0)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP
-; V150 tmp142 [V150,T26] ( 3, 6 ) byref -> r8 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V151 tmp143 [V151,T36] ( 3, 6 ) int -> r10 "field V48._length (fldOffset=0x8)" P-INDEP
-; V152 tmp144 [V152,T45] ( 2, 4 ) byref -> r8 "field V50._reference (fldOffset=0x0)" P-INDEP
-; V153 tmp145 [V153,T58] ( 2, 4 ) int -> r10 "field V50._length (fldOffset=0x8)" P-INDEP
+; V150 tmp142 [V150,T24] ( 3, 6 ) byref -> r10 "field V48._reference (fldOffset=0x0)" P-INDEP
+; V151 tmp143 [V151,T35] ( 3, 6 ) int -> r9 "field V48._length (fldOffset=0x8)" P-INDEP
+; V152 tmp144 [V152,T45] ( 2, 4 ) byref -> r10 "field V50._reference (fldOffset=0x0)" P-INDEP
+; V153 tmp145 [V153,T58] ( 2, 4 ) int -> r9 "field V50._length (fldOffset=0x8)" P-INDEP
;* V154 tmp146 [V154 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP
;* V155 tmp147 [V155 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP
-; V156 tmp148 [V156,T46] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+; V156 tmp148 [V156,T46] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V58._reference (fldOffset=0x0)" P-INDEP
;* V157 tmp149 [V157 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V158 tmp150 [V158,T47] ( 2, 4 ) byref -> r8 "field V62._reference (fldOffset=0x0)" P-INDEP
-; V159 tmp151 [V159,T59] ( 2, 4 ) int -> r10 "field V62._length (fldOffset=0x8)" P-INDEP
+; V158 tmp150 [V158,T47] ( 2, 4 ) byref -> r10 "field V62._reference (fldOffset=0x0)" P-INDEP
+; V159 tmp151 [V159,T59] ( 2, 4 ) int -> r9 "field V62._length (fldOffset=0x8)" P-INDEP
;* V160 tmp152 [V160 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
;* V161 tmp153 [V161 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
;* V162 tmp154 [V162 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V163 tmp155 [V163 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
;* V164 tmp156 [V164 ] ( 0, 0 ) byref -> zero-ref "field V69._reference (fldOffset=0x0)" P-INDEP
;* V165 tmp157 [V165 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
-; V166 tmp158 [V166,T27] ( 3, 6 ) byref -> r13 "field V72._reference (fldOffset=0x0)" P-INDEP
-; V167 tmp159 [V167,T37] ( 3, 6 ) int -> r12 "field V72._length (fldOffset=0x8)" P-INDEP
-; V168 tmp160 [V168,T48] ( 2, 4 ) byref -> r13 "field V74._reference (fldOffset=0x0)" P-INDEP
-; V169 tmp161 [V169,T60] ( 2, 4 ) int -> r12 "field V74._length (fldOffset=0x8)" P-INDEP
+; V166 tmp158 [V166,T25] ( 3, 6 ) byref -> r12 "field V72._reference (fldOffset=0x0)" P-INDEP
+; V167 tmp159 [V167,T36] ( 3, 6 ) int -> rax "field V72._length (fldOffset=0x8)" P-INDEP
+; V168 tmp160 [V168,T48] ( 2, 4 ) byref -> r12 "field V74._reference (fldOffset=0x0)" P-INDEP
+; V169 tmp161 [V169,T60] ( 2, 4 ) int -> rax "field V74._length (fldOffset=0x8)" P-INDEP
;* V170 tmp162 [V170 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP
;* V171 tmp163 [V171 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V172 tmp164 [V172,T28] ( 3, 6 ) byref -> r13 "field V82._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp164 [V172,T26] ( 3, 6 ) byref -> r12 "field V82._reference (fldOffset=0x0)" P-INDEP
;* V173 tmp165 [V173 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
-; V174 tmp166 [V174,T49] ( 2, 4 ) byref -> rcx "field V86._reference (fldOffset=0x0)" P-INDEP
-; V175 tmp167 [V175,T38] ( 3, 6 ) int -> r12 "field V86._length (fldOffset=0x8)" P-INDEP
+; V174 tmp166 [V174,T49] ( 2, 4 ) byref -> rdx "field V86._reference (fldOffset=0x0)" P-INDEP
+; V175 tmp167 [V175,T37] ( 3, 6 ) int -> rax "field V86._length (fldOffset=0x8)" P-INDEP
;* V176 tmp168 [V176 ] ( 0, 0 ) byref -> zero-ref "field V87._reference (fldOffset=0x0)" P-INDEP
;* V177 tmp169 [V177 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
-; V178 tmp170 [V178,T50] ( 2, 4 ) byref -> rax "field V92._reference (fldOffset=0x0)" P-INDEP
-; V179 tmp171 [V179,T61] ( 2, 4 ) int -> r8 "field V92._length (fldOffset=0x8)" P-INDEP
+; V178 tmp170 [V178,T50] ( 2, 4 ) byref -> r8 "field V92._reference (fldOffset=0x0)" P-INDEP
+; V179 tmp171 [V179,T61] ( 2, 4 ) int -> r10 "field V92._length (fldOffset=0x8)" P-INDEP
;* V180 tmp172 [V180 ] ( 0, 0 ) byref -> zero-ref "field V93._reference (fldOffset=0x0)" P-INDEP
;* V181 tmp173 [V181 ] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0x8)" P-INDEP
;* V182 tmp174 [V182 ] ( 0, 0 ) byref -> zero-ref "field V94._reference (fldOffset=0x0)" P-INDEP
;* V183 tmp175 [V183 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
;* V184 tmp176 [V184 ] ( 0, 0 ) byref -> zero-ref "field V96._reference (fldOffset=0x0)" P-INDEP
;* V185 tmp177 [V185 ] ( 0, 0 ) int -> zero-ref "field V96._length (fldOffset=0x8)" P-INDEP
-; V186 tmp178 [V186,T29] ( 3, 6 ) byref -> r13 "field V99._reference (fldOffset=0x0)" P-INDEP
-; V187 tmp179 [V187,T39] ( 3, 6 ) int -> r12 "field V99._length (fldOffset=0x8)" P-INDEP
-; V188 tmp180 [V188,T51] ( 2, 4 ) byref -> r13 "field V101._reference (fldOffset=0x0)" P-INDEP
-; V189 tmp181 [V189,T62] ( 2, 4 ) int -> r12 "field V101._length (fldOffset=0x8)" P-INDEP
+; V186 tmp178 [V186,T27] ( 3, 6 ) byref -> r12 "field V99._reference (fldOffset=0x0)" P-INDEP
+; V187 tmp179 [V187,T38] ( 3, 6 ) int -> rax "field V99._length (fldOffset=0x8)" P-INDEP
+; V188 tmp180 [V188,T51] ( 2, 4 ) byref -> r12 "field V101._reference (fldOffset=0x0)" P-INDEP
+; V189 tmp181 [V189,T62] ( 2, 4 ) int -> rax "field V101._length (fldOffset=0x8)" P-INDEP
;* V190 tmp182 [V190 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP
;* V191 tmp183 [V191 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP
-; V192 tmp184 [V192,T30] ( 3, 6 ) byref -> r13 "field V109._reference (fldOffset=0x0)" P-INDEP
+; V192 tmp184 [V192,T28] ( 3, 6 ) byref -> r12 "field V109._reference (fldOffset=0x0)" P-INDEP
;* V193 tmp185 [V193 ] ( 0, 0 ) int -> zero-ref "field V109._length (fldOffset=0x8)" P-INDEP
-; V194 tmp186 [V194,T52] ( 2, 4 ) byref -> rcx "field V113._reference (fldOffset=0x0)" P-INDEP
-; V195 tmp187 [V195,T40] ( 3, 6 ) int -> r12 "field V113._length (fldOffset=0x8)" P-INDEP
+; V194 tmp186 [V194,T52] ( 2, 4 ) byref -> rdx "field V113._reference (fldOffset=0x0)" P-INDEP
+; V195 tmp187 [V195,T39] ( 3, 6 ) int -> rax "field V113._length (fldOffset=0x8)" P-INDEP
;* V196 tmp188 [V196 ] ( 0, 0 ) byref -> zero-ref "field V114._reference (fldOffset=0x0)" P-INDEP
;* V197 tmp189 [V197 ] ( 0, 0 ) int -> zero-ref "field V114._length (fldOffset=0x8)" P-INDEP
-; V198 tmp190 [V198,T53] ( 2, 4 ) byref -> rax "field V119._reference (fldOffset=0x0)" P-INDEP
-; V199 tmp191 [V199,T63] ( 2, 4 ) int -> r8 "field V119._length (fldOffset=0x8)" P-INDEP
+; V198 tmp190 [V198,T53] ( 2, 4 ) byref -> r8 "field V119._reference (fldOffset=0x0)" P-INDEP
+; V199 tmp191 [V199,T63] ( 2, 4 ) int -> r10 "field V119._length (fldOffset=0x8)" P-INDEP
;* V200 tmp192 [V200 ] ( 0, 0 ) byref -> zero-ref "field V120._reference (fldOffset=0x0)" P-INDEP
;* V201 tmp193 [V201 ] ( 0, 0 ) int -> zero-ref "field V120._length (fldOffset=0x8)" P-INDEP
; V202 tmp194 [V202,T54] ( 2, 4 ) byref -> rax "field V122._reference (fldOffset=0x0)" P-INDEP
; V203 tmp195 [V203,T64] ( 2, 4 ) int -> r8 "field V122._length (fldOffset=0x8)" P-INDEP
-; V204 tmp196 [V204,T73] ( 2, 2 ) ref -> rcx single-def "arr expr"
-; V205 tmp197 [V205,T70] ( 3, 3 ) int -> rdx "index expr"
-; V206 tmp198 [V206,T74] ( 2, 2 ) ref -> rcx single-def "arr expr"
-; V207 tmp199 [V207,T71] ( 3, 3 ) int -> rdx "index expr"
-; V208 tmp200 [V208 ] ( 9, 36 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V209 tmp201 [V209 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V210 tmp202 [V210,T65] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V211 tmp203 [V211,T66] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V212 tmp204 [V212,T69] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V213 tmp205 [V213,T20] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V214 tmp206 [V214,T67] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V215 tmp207 [V215,T68] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V216 cse0 [V216,T01] ( 12, 24 ) ref -> rdx multi-def "CSE - aggressive"
+; V204 tmp196 [V204,T68] ( 2, 2 ) ref -> rcx single-def "arr expr"
+; V205 tmp197 [V205,T65] ( 3, 3 ) int -> rdx "index expr"
+; V206 tmp198 [V206,T69] ( 2, 2 ) ref -> rcx single-def "arr expr"
...
+31 (+5.79%) : 661.dasm - System.Number:FormatNumberushort (FullOpts)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 13, 24 ) byref -> rbx single-def
-; V01 arg1 [V01,T09] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T10] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T17] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T23] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T07] ( 7, 10.50) ref -> rsi class-hnd single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc1 [V05,T08] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T18] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T02] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T06] ( 5, 14 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp3 [V11,T56] ( 3, 2 ) ref -> r14
-; V12 tmp4 [V12,T13] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V11 tmp3 [V11,T52] ( 3, 2 ) ref -> r14
+; V12 tmp4 [V12,T10] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -34,8 +34,8 @@
; V23 tmp15 [V23,T03] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V26 tmp18 [V26,T18] ( 2, 8 ) int -> rax "Inlining Arg"
-; V27 tmp19 [V27,T14] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V26 tmp18 [V26,T14] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V27 tmp19 [V27,T11] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp21 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -43,7 +43,7 @@
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V34 tmp26 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V35 tmp27 [V35,T25] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V35 tmp27 [V35,T24] ( 3, 6 ) int -> [rsp+0x74] spill-single-def "Inline stloc first use temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -58,8 +58,8 @@
; V47 tmp39 [V47,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V48 tmp40 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V50 tmp42 [V50,T19] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V51 tmp43 [V51,T15] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V50 tmp42 [V50,T15] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V51 tmp43 [V51,T12] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V52 tmp44 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp45 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp46 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -67,7 +67,7 @@
;* V56 tmp48 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp49 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V58 tmp50 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V59 tmp51 [V59,T26] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V59 tmp51 [V59,T25] ( 3, 6 ) int -> [rsp+0x70] spill-single-def "Inline stloc first use temp"
;* V60 tmp52 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V61 tmp53 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V62 tmp54 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -82,8 +82,8 @@
; V71 tmp63 [V71,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V72 tmp64 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V73 tmp65 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V74 tmp66 [V74,T20] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V75 tmp67 [V75,T16] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V74 tmp66 [V74,T16] ( 2, 8 ) int -> rax "Inlining Arg"
+; V75 tmp67 [V75,T13] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -91,88 +91,84 @@
;* V80 tmp72 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V82 tmp74 [V82 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V83 tmp75 [V83,T27] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V83 tmp75 [V83,T26] ( 3, 6 ) int -> [rsp+0x6C] spill-single-def "Inline stloc first use temp"
;* V84 tmp76 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V85 tmp77 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V86 tmp78 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V87 tmp79 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V88 tmp80 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V89 tmp81 [V89,T11] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V89 tmp81 [V89,T08] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V90 tmp82 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V91 tmp83 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V92 tmp84 [V92,T12] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V92 tmp84 [V92,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V93 tmp85 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V94 tmp86 [V94 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V95 tmp87 [V95,T32] ( 2, 4 ) byref -> r12 "field V13._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp88 [V96,T43] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
+; V95 tmp87 [V95,T32] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp88 [V96,T43] ( 2, 4 ) int -> [rsp+0x68] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V99 tmp91 [V99 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp92 [V100 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V101 tmp93 [V101 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp94 [V102 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
-; V103 tmp95 [V103,T21] ( 3, 6 ) byref -> r12 "field V22._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp96 [V104,T28] ( 3, 6 ) int -> rax "field V22._length (fldOffset=0x8)" P-INDEP
-; V105 tmp97 [V105,T33] ( 2, 4 ) byref -> r12 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V106 tmp98 [V106,T44] ( 2, 4 ) int -> rax "field V24._length (fldOffset=0x8)" P-INDEP
+; V103 tmp95 [V103,T19] ( 3, 6 ) byref -> rax "field V22._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp96 [V104,T27] ( 3, 6 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
+; V105 tmp97 [V105,T33] ( 2, 4 ) byref -> rax "field V24._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp98 [V106,T44] ( 2, 4 ) int -> r8 "field V24._length (fldOffset=0x8)" P-INDEP
;* V107 tmp99 [V107 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V109 tmp101 [V109,T34] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
+; V109 tmp101 [V109,T34] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V110 tmp102 [V110 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
-; V111 tmp103 [V111,T35] ( 2, 4 ) byref -> r12 "field V36._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp104 [V112,T45] ( 2, 4 ) int -> rax "field V36._length (fldOffset=0x8)" P-INDEP
+; V111 tmp103 [V111,T35] ( 2, 4 ) byref -> rax "field V36._reference (fldOffset=0x0)" P-INDEP
+; V112 tmp104 [V112,T45] ( 2, 4 ) int -> r8 "field V36._length (fldOffset=0x8)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp106 [V114 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V115 tmp107 [V115 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V119 tmp111 [V119,T22] ( 3, 6 ) byref -> r8 "field V46._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp112 [V120,T29] ( 3, 6 ) int -> r10 "field V46._length (fldOffset=0x8)" P-INDEP
-; V121 tmp113 [V121,T36] ( 2, 4 ) byref -> r8 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp114 [V122,T46] ( 2, 4 ) int -> r10 "field V48._length (fldOffset=0x8)" P-INDEP
+; V119 tmp111 [V119,T20] ( 3, 6 ) byref -> r10 "field V46._reference (fldOffset=0x0)" P-INDEP
+; V120 tmp112 [V120,T28] ( 3, 6 ) int -> r9 "field V46._length (fldOffset=0x8)" P-INDEP
+; V121 tmp113 [V121,T36] ( 2, 4 ) byref -> r10 "field V48._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp114 [V122,T46] ( 2, 4 ) int -> r9 "field V48._length (fldOffset=0x8)" P-INDEP
;* V123 tmp115 [V123 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp116 [V124 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V125 tmp117 [V125,T37] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V56._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
-; V127 tmp119 [V127,T38] ( 2, 4 ) byref -> r8 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128,T47] ( 2, 4 ) int -> r10 "field V60._length (fldOffset=0x8)" P-INDEP
+; V127 tmp119 [V127,T38] ( 2, 4 ) byref -> r10 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp120 [V128,T47] ( 2, 4 ) int -> r9 "field V60._length (fldOffset=0x8)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp126 [V134 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
-; V135 tmp127 [V135,T23] ( 3, 6 ) byref -> r13 "field V70._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp128 [V136,T30] ( 3, 6 ) int -> r12 "field V70._length (fldOffset=0x8)" P-INDEP
-; V137 tmp129 [V137,T39] ( 2, 4 ) byref -> r13 "field V72._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp130 [V138,T48] ( 2, 4 ) int -> r12 "field V72._length (fldOffset=0x8)" P-INDEP
+; V135 tmp127 [V135,T21] ( 3, 6 ) byref -> r12 "field V70._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp128 [V136,T29] ( 3, 6 ) int -> rax "field V70._length (fldOffset=0x8)" P-INDEP
+; V137 tmp129 [V137,T39] ( 2, 4 ) byref -> r12 "field V72._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp130 [V138,T48] ( 2, 4 ) int -> rax "field V72._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
-; V141 tmp133 [V141,T24] ( 3, 6 ) byref -> r13 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp133 [V141,T22] ( 3, 6 ) byref -> r12 "field V80._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp134 [V142 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP
-; V143 tmp135 [V143,T40] ( 2, 4 ) byref -> rcx "field V84._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp136 [V144,T31] ( 3, 6 ) int -> r12 "field V84._length (fldOffset=0x8)" P-INDEP
+; V143 tmp135 [V143,T40] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp136 [V144,T30] ( 3, 6 ) int -> rax "field V84._length (fldOffset=0x8)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
-; V147 tmp139 [V147,T41] ( 2, 4 ) byref -> rax "field V90._reference (fldOffset=0x0)" P-INDEP
-; V148 tmp140 [V148,T49] ( 2, 4 ) int -> r8 "field V90._length (fldOffset=0x8)" P-INDEP
+; V147 tmp139 [V147,T41] ( 2, 4 ) byref -> r8 "field V90._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp140 [V148,T49] ( 2, 4 ) int -> r10 "field V90._length (fldOffset=0x8)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
; V151 tmp143 [V151,T42] ( 2, 4 ) byref -> rax "field V93._reference (fldOffset=0x0)" P-INDEP
; V152 tmp144 [V152,T50] ( 2, 4 ) int -> r8 "field V93._length (fldOffset=0x8)" P-INDEP
-; V153 tmp145 [V153,T57] ( 2, 2 ) ref -> rcx single-def "arr expr"
-; V154 tmp146 [V154,T55] ( 3, 3 ) int -> rdx "index expr"
-; V155 tmp147 [V155 ] ( 6, 24 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V156 tmp148 [V156 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V157 tmp149 [V157,T51] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V158 tmp150 [V158,T52] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V159 tmp151 [V159,T54] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V160 tmp152 [V160,T17] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V161 tmp153 [V161,T53] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V162 cse0 [V162,T01] ( 9, 18 ) ref -> rdx multi-def "CSE - aggressive"
+; V153 tmp145 [V153,T53] ( 2, 2 ) ref -> rcx single-def "arr expr"
+; V154 tmp146 [V154,T51] ( 3, 3 ) int -> rdx "index expr"
+; V155 tmp147 [V155 ] ( 6, 24 ) struct (16) [rsp+0x58] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V156 tmp148 [V156 ] ( 3, 12 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V157 cse0 [V157,T01] ( 9, 18 ) ref -> rdx multi-def "CSE - aggressive"
+; V158 cse1 [V158,T31] ( 3, 6 ) int -> r13 "CSE - moderate"
;
-; Lcl frame size = 104
+; Lcl frame size = 120
G_M28185_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -183,12 +179,12 @@ G_M28185_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 104
+ sub rsp, 120
xor eax, eax
- mov qword ptr [rsp+0x38], rax
+ mov qword ptr [rsp+0x48], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x50], xmm4
+ mov qword ptr [rsp+0x60], rax
mov rbx, rcx
; byrRegs +[rbx]
mov rdi, rdx
@@ -220,9 +216,10 @@ G_M28185_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx
G_M28185_IG05: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref
; gcrRegs -[rcx]
xor r15d, r15d
- cmp dword ptr [r14+0x08], 0
+ mov r13d, dword ptr [r14+0x08]
+ test r13d, r13d
jle G_M28185_IG23
- ;; size=14 bbWeight=1 PerfScore 4.25
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M28185_IG06: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref, isz
mov ecx, r15d
movzx rdx, word ptr [r14+2*rcx+0x0C]
@@ -235,27 +232,29 @@ G_M28185_IG07: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rb
jmp G_M28185_IG20
;; size=14 bbWeight=2 PerfScore 6.50
G_M28185_IG08: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov r13, gword ptr [rsi+0x08]
- ; gcrRegs +[r13]
+ mov r12, gword ptr [rsi+0x08]
+ ; gcrRegs +[r12]
mov rcx, gword ptr [rsi+0x30]
; gcrRegs +[rcx]
test rcx, rcx
jne SHORT G_M28185_IG09
- xor r12, r12
- ; byrRegs +[r12]
- xor eax, eax
+ xor rax, rax
+ ; byrRegs +[rax]
+ xor r8d, r8d
jmp SHORT G_M28185_IG10
;; size=20 bbWeight=2 PerfScore 15.50
-G_M28185_IG09: ; bbWeight=2, gcrefRegs=6042 {rcx rsi r13 r14}, byrefRegs=0088 {rbx rdi}, byref
- ; byrRegs -[r12]
...
benchmarks.run_pgo.windows.x64.checked.mch
-30 (-28.30%) : 61821.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
@@ -11,63 +11,48 @@
; V03 arg3 [V03 ] ( 1, 1 ) byref -> [rbp+0x28] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[] "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 48
G_M11790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x20], ymm4
+ mov qword ptr [rbp-0x10], rax
mov gword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov gword ptr [rbp+0x20], r8
mov bword ptr [rbp+0x28], r9
- ;; size=43 bbWeight=1 PerfScore 10.33
+ ;; size=34 bbWeight=1 PerfScore 8.00
G_M11790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M11790_IG03: ; bbWeight=1, nogc, extend
+ vmovdqu xmm0, xmmword ptr [r9]
+ vmovdqu xmmword ptr [rbp-0x10], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M11790_IG04: ; bbWeight=1, extend
+ lea r9, [rbp-0x10]
+ ; byrRegs -[r9]
+ mov edx, dword ptr [rbp+0x18]
+ mov r8, gword ptr [rbp+0x20]
+ ; gcrRegs +[r8]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov ecx, dword ptr [rbp+0x18]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x1C], ecx
- mov rcx, gword ptr [rbp+0x20]
- ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, bword ptr [rbp+0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=26 bbWeight=1 PerfScore 7.00
-G_M11790_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x10], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M11790_IG04: ; bbWeight=1, extend
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov edx, dword ptr [rbp-0x1C]
- mov r8, gword ptr [rbp-0x28]
- ; gcrRegs +[r8]
- lea r9, [rbp-0x10]
call [<unknown method>]
; gcrRegs -[rcx r8]
nop
;; size=22 bbWeight=1 PerfScore 6.75
G_M11790_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 28, PerfScore 30.83, instruction count 30, allocated bytes for code 106 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
+; Total bytes of code 76, prolog size 19, PerfScore 22.50, instruction count 22, allocated bytes for code 76 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
; ============================================================
Unwind Info:
@@ -80,5 +65,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-30 (-28.30%) : 66808.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Instrumented Tier0)
@@ -11,63 +11,48 @@
; V03 arg3 [V03 ] ( 1, 1 ) byref -> [rbp+0x28] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[] "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 48
G_M11790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x20], ymm4
+ mov qword ptr [rbp-0x10], rax
mov gword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov gword ptr [rbp+0x20], r8
mov bword ptr [rbp+0x28], r9
- ;; size=43 bbWeight=1 PerfScore 10.33
+ ;; size=34 bbWeight=1 PerfScore 8.00
G_M11790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M11790_IG03: ; bbWeight=1, nogc, extend
+ vmovdqu xmm0, xmmword ptr [r9]
+ vmovdqu xmmword ptr [rbp-0x10], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M11790_IG04: ; bbWeight=1, extend
+ lea r9, [rbp-0x10]
+ ; byrRegs -[r9]
+ mov edx, dword ptr [rbp+0x18]
+ mov r8, gword ptr [rbp+0x20]
+ ; gcrRegs +[r8]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov ecx, dword ptr [rbp+0x18]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x1C], ecx
- mov rcx, gword ptr [rbp+0x20]
- ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, bword ptr [rbp+0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=26 bbWeight=1 PerfScore 7.00
-G_M11790_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x10], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M11790_IG04: ; bbWeight=1, extend
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov edx, dword ptr [rbp-0x1C]
- mov r8, gword ptr [rbp-0x28]
- ; gcrRegs +[r8]
- lea r9, [rbp-0x10]
call [<unknown method>]
; gcrRegs -[rcx r8]
nop
;; size=22 bbWeight=1 PerfScore 6.75
G_M11790_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 28, PerfScore 30.83, instruction count 30, allocated bytes for code 106 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Instrumented Tier0)
+; Total bytes of code 76, prolog size 19, PerfScore 22.50, instruction count 22, allocated bytes for code 76 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Instrumented Tier0)
; ============================================================
Unwind Info:
@@ -80,5 +65,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-26 (-28.26%) : 31351.dasm - System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
@@ -10,53 +10,40 @@
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTimeOffset>
; V04 tmp2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.DateTimeOffset>
-; V05 tmp3 [V05 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M28855_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
- lea rbp, [rsp+0x50]
- xor eax, eax
- mov qword ptr [rbp-0x28], rax
- mov qword ptr [rbp-0x30], rax
+ sub rsp, 64
+ lea rbp, [rsp+0x40]
mov bword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 3.75
G_M28855_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x10]
call [<unknown method>]
- mov rcx, bword ptr [rbp+0x10]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x28], rcx
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov gword ptr [rbp-0x30], rcx
vmovups xmm0, xmmword ptr [rbp-0x10]
vmovups xmmword ptr [rbp-0x20], xmm0
- mov rcx, bword ptr [rbp-0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x30]
- ; gcrRegs +[rdx]
lea r8, [rbp-0x20]
+ mov rdx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rdx]
+ mov rcx, bword ptr [rbp+0x10]
+ ; byrRegs +[rcx]
xor r9, r9
; gcrRegs +[r9]
call [<unknown method>]
; gcrRegs -[rdx r9]
; byrRegs -[rcx]
nop
- ;; size=58 bbWeight=1 PerfScore 17.50
+ ;; size=42 bbWeight=1 PerfScore 13.50
G_M28855_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 92, prolog size 20, PerfScore 25.25, instruction count 25, allocated bytes for code 92 (MethodHash=e7188f48) for method System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 19.00, instruction count 18, allocated bytes for code 66 (MethodHash=e7188f48) for method System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
; ============================================================
Unwind Info:
@@ -69,5 +56,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+22 (+3.24%) : 47355.dasm - System.String:StartsWith(System.String,int):ubyte:this (Tier1)
@@ -12,10 +12,10 @@
; V01 arg1 [V01,T01] ( 10, 7 ) ref -> rsi class-hnd single-def <System.String>
; V02 arg2 [V02,T02] ( 10, 6 ) int -> rdi single-def
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T39] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V04 tmp1 [V04,T37] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V05 tmp2 [V05,T06] ( 4, 4 ) byref -> rcx single-def "impAppendStmt"
; V06 tmp3 [V06,T12] ( 2, 2 ) byref -> rcx single-def "impAppendStmt"
-; V07 tmp4 [V07,T08] ( 4, 3 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Globalization.CompareInfo>
+; V07 tmp4 [V07,T08] ( 4, 3 ) ref -> r15 class-hnd exact single-def "impAppendStmt" <System.Globalization.CompareInfo>
; V08 tmp5 [V08,T09] ( 3, 3 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <System.Globalization.CompareInfo>
;* V09 tmp6 [V09 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -24,14 +24,14 @@
;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp12 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp13 [V16,T19] ( 2, 2 ) int -> rdx "Inlining Arg"
-; V17 tmp14 [V17,T13] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
+; V16 tmp13 [V16,T17] ( 2, 2 ) int -> r8 "Inlining Arg"
+; V17 tmp14 [V17,T13] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp18 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp19 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V23 tmp20 [V23,T20] ( 2, 2 ) int -> rbp "Inlining Arg"
+; V23 tmp20 [V23,T18] ( 2, 2 ) int -> rbp "Inlining Arg"
; V24 tmp21 [V24,T14] ( 2, 2 ) byref -> rsi single-def "Inlining Arg"
;* V25 tmp22 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp23 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -42,75 +42,77 @@
;* V31 tmp28 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V32 tmp29 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp30 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp31 [V34,T21] ( 2, 2 ) int -> rdx "Inlining Arg"
-; V35 tmp32 [V35,T15] ( 2, 2 ) byref -> rcx single-def "Inlining Arg"
+; V34 tmp31 [V34,T19] ( 2, 2 ) int -> r8 "Inlining Arg"
+; V35 tmp32 [V35,T15] ( 2, 2 ) byref -> rdx single-def "Inlining Arg"
;* V36 tmp33 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp35 [V38 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
;* V39 tmp36 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V40 tmp37 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V41 tmp38 [V41,T22] ( 2, 2 ) int -> r9 "Inlining Arg"
-; V42 tmp39 [V42,T16] ( 2, 2 ) byref -> r8 single-def "Inlining Arg"
+; V41 tmp38 [V41,T20] ( 2, 2 ) int -> rcx "Inlining Arg"
+; V42 tmp39 [V42,T16] ( 2, 2 ) byref -> r9 single-def "Inlining Arg"
;* V43 tmp40 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V44 tmp41 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V45 tmp42 [V45,T11] ( 4, 2 ) ubyte -> rax "Inline return value spill temp"
; V46 tmp43 [V46,T03] ( 6, 6 ) int -> r8 "Inlining Arg"
; V47 tmp44 [V47,T07] ( 4, 4 ) byref -> rdx single-def "Inlining Arg"
; V48 tmp45 [V48,T04] ( 5, 5 ) int -> rax "Single return block return value"
-; V49 tmp46 [V49,T23] ( 2, 1 ) byref -> rcx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-; V50 tmp47 [V50,T31] ( 2, 1 ) int -> rdx "field V11._length (fldOffset=0x8)" P-INDEP
+; V49 tmp46 [V49,T21] ( 2, 1 ) byref -> rdx single-def "field V11._reference (fldOffset=0x0)" P-INDEP
+; V50 tmp47 [V50,T29] ( 2, 1 ) int -> r8 "field V11._length (fldOffset=0x8)" P-INDEP
;* V51 tmp48 [V51 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V52 tmp49 [V52 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V53 tmp50 [V53,T24] ( 2, 1 ) byref -> rcx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-; V54 tmp51 [V54,T32] ( 2, 1 ) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP
+; V53 tmp50 [V53,T22] ( 2, 1 ) byref -> rdx single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+; V54 tmp51 [V54,T30] ( 2, 1 ) int -> r8 "field V14._length (fldOffset=0x8)" P-INDEP
;* V55 tmp52 [V55 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V56 tmp53 [V56 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V57 tmp54 [V57,T25] ( 2, 1 ) byref -> rsi "field V20._reference (fldOffset=0x0)" P-INDEP
-; V58 tmp55 [V58,T33] ( 2, 1 ) int -> rbp "field V20._length (fldOffset=0x8)" P-INDEP
-; V59 tmp56 [V59,T26] ( 2, 1 ) byref -> rsi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
-; V60 tmp57 [V60,T34] ( 2, 1 ) int -> rbp "field V21._length (fldOffset=0x8)" P-INDEP
+; V57 tmp54 [V57,T23] ( 2, 1 ) byref -> rsi "field V20._reference (fldOffset=0x0)" P-INDEP
+; V58 tmp55 [V58,T31] ( 2, 1 ) int -> rbp "field V20._length (fldOffset=0x8)" P-INDEP
+; V59 tmp56 [V59,T24] ( 2, 1 ) byref -> rsi single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+; V60 tmp57 [V60,T32] ( 2, 1 ) int -> rbp "field V21._length (fldOffset=0x8)" P-INDEP
;* V61 tmp58 [V61 ] ( 0, 0 ) byref -> zero-ref single-def "field V22._reference (fldOffset=0x0)" P-INDEP
;* V62 tmp59 [V62 ] ( 0, 0 ) int -> zero-ref "field V22._length (fldOffset=0x8)" P-INDEP
-; V63 tmp60 [V63,T27] ( 2, 1 ) byref -> rcx single-def "field V29._reference (fldOffset=0x0)" P-INDEP
-; V64 tmp61 [V64,T35] ( 2, 1 ) int -> rdx "field V29._length (fldOffset=0x8)" P-INDEP
+; V63 tmp60 [V63,T25] ( 2, 1 ) byref -> rdx single-def "field V29._reference (fldOffset=0x0)" P-INDEP
+; V64 tmp61 [V64,T33] ( 2, 1 ) int -> r8 "field V29._length (fldOffset=0x8)" P-INDEP
;* V65 tmp62 [V65 ] ( 0, 0 ) byref -> zero-ref "field V31._reference (fldOffset=0x0)" P-INDEP
;* V66 tmp63 [V66 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP
-; V67 tmp64 [V67,T28] ( 2, 1 ) byref -> rcx single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-; V68 tmp65 [V68,T36] ( 2, 1 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP
+; V67 tmp64 [V67,T26] ( 2, 1 ) byref -> rdx single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+; V68 tmp65 [V68,T34] ( 2, 1 ) int -> r8 "field V32._length (fldOffset=0x8)" P-INDEP
;* V69 tmp66 [V69 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V70 tmp67 [V70 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
-; V71 tmp68 [V71,T29] ( 2, 1 ) byref -> r8 "field V38._reference (fldOffset=0x0)" P-INDEP
-; V72 tmp69 [V72,T37] ( 2, 1 ) int -> r9 "field V38._length (fldOffset=0x8)" P-INDEP
-; V73 tmp70 [V73,T30] ( 2, 1 ) byref -> r8 single-def "field V39._reference (fldOffset=0x0)" P-INDEP
-; V74 tmp71 [V74,T38] ( 2, 1 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
+; V71 tmp68 [V71,T27] ( 2, 1 ) byref -> r9 "field V38._reference (fldOffset=0x0)" P-INDEP
+; V72 tmp69 [V72,T35] ( 2, 1 ) int -> rcx "field V38._length (fldOffset=0x8)" P-INDEP
+; V73 tmp70 [V73,T28] ( 2, 1 ) byref -> r9 single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+; V74 tmp71 [V74,T36] ( 2, 1 ) int -> rcx "field V39._length (fldOffset=0x8)" P-INDEP
;* V75 tmp72 [V75 ] ( 0, 0 ) byref -> zero-ref single-def "field V40._reference (fldOffset=0x0)" P-INDEP
;* V76 tmp73 [V76 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP
-; V77 tmp74 [V77,T40] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V78 tmp75 [V78,T41] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
+; V77 tmp74 [V77,T38] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
+; V78 tmp75 [V78,T39] ( 2, 0 ) ref -> r8 single-def "argument with side effect"
; V79 tmp76 [V79,T10] ( 3, 3 ) ref -> rax single-def "argument with side effect"
-; V80 tmp77 [V80 ] ( 6, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V81 tmp78 [V81 ] ( 6, 6 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V82 tmp79 [V82,T17] ( 2, 2 ) ref -> r14 single-def "argument with side effect"
-; V83 tmp80 [V83,T18] ( 2, 2 ) ref -> r14 single-def "argument with side effect"
-; V84 cse0 [V84,T05] ( 9, 4.50) int -> rbp "CSE - aggressive"
+; V80 tmp77 [V80 ] ( 6, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V81 tmp78 [V81 ] ( 6, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V82 cse0 [V82,T05] ( 9, 4.50) int -> rbp "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 72
G_M53942_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r15
push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 64
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rsp+0x20], ymm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
mov edi, r8d
- ;; size=29 bbWeight=1 PerfScore 8.33
+ ;; size=43 bbWeight=1 PerfScore 11.58
G_M53942_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test rsi, rsi
je G_M53942_IG22
@@ -126,14 +128,15 @@ G_M53942_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov eax, 1
;; size=5 bbWeight=0.50 PerfScore 0.12
G_M53942_IG05: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 64
+ add rsp, 72
pop rbx
pop rbp
pop rsi
pop rdi
pop r14
+ pop r15
ret
- ;; size=11 bbWeight=0.50 PerfScore 1.88
+ ;; size=13 bbWeight=0.50 PerfScore 2.12
G_M53942_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx rsi]
mov ebp, dword ptr [rsi+0x08]
@@ -175,65 +178,65 @@ G_M53942_IG09: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0
cmp byte ptr [r14], r14b
test rbx, rbx
je G_M53942_IG27
- lea rcx, bword ptr [rbx+0x0C]
- ; byrRegs +[rcx]
- mov edx, dword ptr [rbx+0x08]
+ lea rdx, bword ptr [rbx+0x0C]
+ ; byrRegs +[rdx]
+ mov r8d, dword ptr [rbx+0x08]
add rsi, 12
; gcrRegs -[rsi]
; byrRegs +[rsi]
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], edx
- mov bword ptr [rsp+0x20], rsi
- mov dword ptr [rsp+0x28], ebp
- mov rcx, r14
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- lea rdx, [rsp+0x30]
- lea r8, [rsp+0x20]
+ mov bword ptr [rsp+0x38], rdx
+ mov dword ptr [rsp+0x40], r8d
+ mov bword ptr [rsp+0x28], rsi
+ mov dword ptr [rsp+0x30], ebp
+ lea rdx, [rsp+0x38]
+ ; byrRegs -[rdx]
+ lea r8, [rsp+0x28]
mov r9d, edi
and r9d, 1
+ mov rcx, r14
+ ; gcrRegs +[rcx]
call [System.Globalization.CompareInfo:IsPrefix(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):ubyte:this]
; gcrRegs -[rcx rbx r14]
; byrRegs -[rsi]
; gcr arg pop 0
jmp G_M53942_IG20
- ;; size=72 bbWeight=0.50 PerfScore 8.88
+ ;; size=74 bbWeight=0.50 PerfScore 8.88
G_M53942_IG10: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx rsi]
test byte ptr [(reloc)], 1 ; global ptr
je G_M53942_IG25
;; size=13 bbWeight=0.50 PerfScore 2.00
G_M53942_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov r14, gword ptr [rcx]
- ; gcrRegs +[r14]
+ mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov r15, gword ptr [rdx]
+ ; gcrRegs +[r15]
cmp edi, 5
ja G_M53942_IG26
- cmp byte ptr [r14], r14b
+ cmp byte ptr [r15], r15b
test rbx, rbx
je G_M53942_IG27
;; size=34 bbWeight=0.50 PerfScore 3.88
-G_M53942_IG12: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [rbx+0x0C]
- ; byrRegs +[rcx]
- mov edx, dword ptr [rbx+0x08]
- lea r8, bword ptr [rsi+0x0C]
- ; byrRegs +[r8]
- mov r9d, ebp
- mov bword ptr [rsp+0x30], rcx
- mov dword ptr [rsp+0x38], edx
- mov bword ptr [rsp+0x20], r8
- mov dword ptr [rsp+0x28], r9d
- mov rcx, r14
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- lea rdx, [rsp+0x30]
- lea r8, [rsp+0x20]
- ; byrRegs -[r8]
+G_M53942_IG12: ; bbWeight=0.50, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
+ lea rdx, bword ptr [rbx+0x0C]
+ ; byrRegs +[rdx]
+ mov r8d, dword ptr [rbx+0x08]
+ lea r9, bword ptr [rsi+0x0C]
+ ; byrRegs +[r9]
+ mov ecx, ebp
+ mov bword ptr [rsp+0x38], rdx
+ mov dword ptr [rsp+0x40], r8d
+ mov bword ptr [rsp+0x28], r9
+ mov dword ptr [rsp+0x30], ecx
+ lea rdx, [rsp+0x38]
+ ; byrRegs -[rdx]
+ lea r8, [rsp+0x28]
mov r9d, edi
+ ; byrRegs -[r9]
...
+18 (+3.39%) : 67521.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
@@ -12,12 +12,12 @@
; V00 arg0 [V00,T01] ( 6, 6.78) ref -> rbx class-hnd single-def <System.Reflection.Metadata.MetadataReader>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Reflection.Metadata.EntityHandle>
; V02 arg2 [V02,T02] ( 3, 7.55) byref -> rsi single-def
-; V03 arg3 [V03,T04] ( 4, 3.01) byref -> rdi single-def
+; V03 arg3 [V03,T03] ( 4, 3.01) byref -> rdi single-def
; V04 loc0 [V04 ] ( 11, 18.84) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection+Enumerator>
;* V05 loc1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Reflection.Metadata.CustomAttributeHandleCollection>
;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref <System.Reflection.Metadata.CustomAttributeHandle>
; V07 loc3 [V07 ] ( 2, 3.55) ubyte -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V08 loc4 [V08,T13] ( 3, 3.56) int -> rax
+; V08 loc4 [V08,T12] ( 3, 3.56) int -> rax
;* V09 loc5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] <Microsoft.CodeAnalysis.PEModule+AttributeInfo>
;* V10 loc6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op <Microsoft.CodeAnalysis.PEModule+AttributeInfo>
; V11 OutArgs [V11 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -42,8 +42,8 @@
;* V30 tmp19 [V30 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Reflection.Metadata.CustomAttributeHandle>
;* V31 tmp20 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V32 tmp21 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Reflection.Metadata.CustomAttributeHandle>
-;* V33 tmp22 [V33,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V34 tmp23 [V34,T05] ( 3, 2 ) int -> rcx single-def "field V01._vToken (fldOffset=0x0)" P-INDEP
+;* V33 tmp22 [V33,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V34 tmp23 [V34,T04] ( 3, 2 ) int -> rcx single-def "field V01._vToken (fldOffset=0x0)" P-INDEP
; V35 tmp24 [V35 ] ( 3, 2.78) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V04._reader (fldOffset=0x0)" P-DEP
; V36 tmp25 [V36 ] ( 3, 3.77) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V04._lastRowId (fldOffset=0x8)" P-DEP
; V37 tmp26 [V37 ] ( 7, 12.29) int -> [rbp-0x3C] do-not-enreg[X] addr-exposed "field V04._currentRowId (fldOffset=0xc)" P-DEP
@@ -55,30 +55,28 @@
;* V43 tmp32 [V43 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V09.SignatureIndex (fldOffset=0x4)" P-DEP
;* V44 tmp33 [V44 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V10.Handle (fldOffset=0x0)" P-DEP
;* V45 tmp34 [V45 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V10.SignatureIndex (fldOffset=0x4)" P-DEP
-; V46 tmp35 [V46,T22] ( 2, 0.02) int -> [rbp-0x58] do-not-enreg[] "field V12.Handle (fldOffset=0x0)" P-DEP
-; V47 tmp36 [V47,T23] ( 2, 0.02) ubyte -> [rbp-0x54] do-not-enreg[] "field V12.SignatureIndex (fldOffset=0x4)" P-DEP
+; V46 tmp35 [V46,T20] ( 2, 0.02) int -> [rbp-0x58] do-not-enreg[] "field V12.Handle (fldOffset=0x0)" P-DEP
+; V47 tmp36 [V47,T21] ( 2, 0.02) ubyte -> [rbp-0x54] do-not-enreg[] "field V12.SignatureIndex (fldOffset=0x4)" P-DEP
;* V48 tmp37 [V48 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._reader (fldOffset=0x0)" P-INDEP
-; V49 tmp38 [V49,T16] ( 3, 2 ) int -> rcx "field V14._firstRowId (fldOffset=0x8)" P-INDEP
-; V50 tmp39 [V50,T17] ( 3, 2 ) int -> rdx "field V14._lastRowId (fldOffset=0xc)" P-INDEP
-;* V51 tmp40 [V51,T20] ( 0, 0 ) ref -> zero-ref single-def "field V26._reader (fldOffset=0x0)" P-INDEP
-; V52 tmp41 [V52,T18] ( 2, 2 ) int -> rdx single-def "field V26._lastRowId (fldOffset=0x8)" P-INDEP
-; V53 tmp42 [V53,T19] ( 2, 2 ) int -> rcx single-def "field V26._currentRowId (fldOffset=0xc)" P-INDEP
-; V54 tmp43 [V54,T12] ( 4, 3.56) int -> r15 "field V30._rowId (fldOffset=0x0)" P-INDEP
-; V55 tmp44 [V55,T14] ( 2, 3.55) int -> r15 "field V32._rowId (fldOffset=0x0)" P-INDEP
-; V56 tmp45 [V56,T07] ( 2, 4 ) int -> rax "argument with side effect"
-; V57 tmp46 [V57,T08] ( 2, 4 ) int -> r13 "argument with side effect"
-; V58 tmp47 [V58,T09] ( 2, 4 ) int -> r12 "argument with side effect"
-; V59 tmp48 [V59,T10] ( 2, 4 ) int -> [rbp-0x6C] spill-single-def "argument with side effect"
-; V60 tmp49 [V60,T06] ( 2, 4 ) byref -> r15 single-def "argument with side effect"
-; V61 tmp50 [V61,T26] ( 2, 0 ) int -> rax "argument with side effect"
-; V62 tmp51 [V62,T24] ( 2, 0 ) ref -> r13 single-def "argument with side effect"
-; V63 tmp52 [V63,T27] ( 2, 0 ) int -> r12 "argument with side effect"
-; V64 tmp53 [V64,T28] ( 2, 0 ) int -> [rbp-0x70] spill-single-def "argument with side effect"
-; V65 tmp54 [V65,T25] ( 2, 0 ) byref -> r15 single-def "argument with side effect"
+; V49 tmp38 [V49,T14] ( 3, 2 ) int -> r8 "field V14._firstRowId (fldOffset=0x8)" P-INDEP
+; V50 tmp39 [V50,T15] ( 3, 2 ) int -> r9 "field V14._lastRowId (fldOffset=0xc)" P-INDEP
+;* V51 tmp40 [V51,T18] ( 0, 0 ) ref -> zero-ref single-def "field V26._reader (fldOffset=0x0)" P-INDEP
+; V52 tmp41 [V52,T16] ( 2, 2 ) int -> r9 single-def "field V26._lastRowId (fldOffset=0x8)" P-INDEP
+; V53 tmp42 [V53,T17] ( 2, 2 ) int -> r8 single-def "field V26._currentRowId (fldOffset=0xc)" P-INDEP
+; V54 tmp43 [V54,T11] ( 4, 3.56) int -> r15 "field V30._rowId (fldOffset=0x0)" P-INDEP
+; V55 tmp44 [V55,T13] ( 2, 3.55) int -> r15 "field V32._rowId (fldOffset=0x0)" P-INDEP
+; V56 tmp45 [V56,T06] ( 2, 4 ) int -> rax "argument with side effect"
+; V57 tmp46 [V57,T07] ( 2, 4 ) int -> r13 "argument with side effect"
+; V58 tmp47 [V58,T08] ( 2, 4 ) int -> r12 "argument with side effect"
+; V59 tmp48 [V59,T09] ( 2, 4 ) int -> [rbp-0x6C] spill-single-def "argument with side effect"
+; V60 tmp49 [V60,T05] ( 2, 4 ) byref -> r15 single-def "argument with side effect"
+; V61 tmp50 [V61,T24] ( 2, 0 ) int -> rax "argument with side effect"
+; V62 tmp51 [V62,T22] ( 2, 0 ) ref -> r13 single-def "argument with side effect"
+; V63 tmp52 [V63,T25] ( 2, 0 ) int -> r12 "argument with side effect"
+; V64 tmp53 [V64,T26] ( 2, 0 ) int -> [rbp-0x70] spill-single-def "argument with side effect"
+; V65 tmp54 [V65,T23] ( 2, 0 ) byref -> r15 single-def "argument with side effect"
; V66 tmp55 [V66 ] ( 2, 7.10) struct (32) [rbp-0x90] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.AttributeDescription>
-;* V67 tmp56 [V67,T15] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V68 tmp57 [V68,T03] ( 2, 7.10) int -> rdx "argument with side effect"
-; V69 PSPSym [V69,T21] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
+; V67 PSPSym [V67,T19] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
;
; Lcl frame size = 168
@@ -112,12 +110,12 @@ G_M54788_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M54788_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
mov byte ptr [rdi], 0
;; size=3 bbWeight=1 PerfScore 1.00
-G_M54788_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M54788_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
cmp byte ptr [rbx], bl
lea r14, bword ptr [rbx+0x2B0]
; byrRegs +[r14]
cmp gword ptr [r14], 0
- jne SHORT G_M54788_IG07
+ jne G_M54788_IG07
lea r15, bword ptr [r14+0x20]
; byrRegs +[r15]
mov r13d, dword ptr [r14+0x08]
@@ -141,27 +139,27 @@ G_M54788_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd
call [<unknown method>]
; byrRegs -[rcx r14-r15]
; gcr arg pop 0
- ;; size=90 bbWeight=1 PerfScore 29.75
+ ;; size=94 bbWeight=1 PerfScore 29.75
G_M54788_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
cmp dword ptr [rbp-0x60], -1
je SHORT G_M54788_IG06
- mov ecx, dword ptr [rbp-0x60]
- inc ecx
- mov edx, dword ptr [rbp-0x68]
- inc edx
- ;; size=16 bbWeight=1 PerfScore 5.50
+ mov r8d, dword ptr [rbp-0x60]
+ inc r8d
+ mov r9d, dword ptr [rbp-0x68]
+ inc r9d
+ ;; size=20 bbWeight=1 PerfScore 5.50
G_M54788_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- dec ecx
+ dec r8d
mov gword ptr [rbp-0x48], rbx
- mov dword ptr [rbp-0x40], edx
- mov dword ptr [rbp-0x3C], ecx
- jmp G_M54788_IG14
- ;; size=17 bbWeight=1 PerfScore 5.25
+ mov dword ptr [rbp-0x40], r9d
+ mov dword ptr [rbp-0x3C], r8d
+ jmp G_M54788_IG13
+ ;; size=20 bbWeight=1 PerfScore 5.25
G_M54788_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov ecx, 1
- xor edx, edx
+ mov r8d, 1
+ xor r9d, r9d
jmp SHORT G_M54788_IG05
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
G_M54788_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=40C0 {rsi rdi r14}, byref, isz
; byrRegs +[r14]
lea r15, bword ptr [r14+0x20]
@@ -200,75 +198,73 @@ G_M54788_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rd
jmp SHORT G_M54788_IG10
;; size=15 bbWeight=0 PerfScore 0.00
G_M54788_IG09: ; bbWeight=1.78, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov rcx, gword ptr [rbp-0x48]
- ; gcrRegs +[rcx]
- cmp gword ptr [rcx+0x2B0], 0
+ mov r8, gword ptr [rbp-0x48]
+ ; gcrRegs +[r8]
+ cmp gword ptr [r8+0x2B0], 0
jne SHORT G_M54788_IG08
mov r15d, dword ptr [rbp-0x3C]
and r15d, 0xD1FFAB1E
;; size=25 bbWeight=1.78 PerfScore 11.10
-G_M54788_IG10: ; bbWeight=1.78, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref
- ; gcrRegs -[rcx]
- mov edx, r15d
- ;; size=3 bbWeight=1.78 PerfScore 0.44
-G_M54788_IG11: ; bbWeight=1.78, nogc, extend
+G_M54788_IG10: ; bbWeight=1.78, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, nogc
+ ; gcrRegs -[r8]
vmovdqu ymm0, ymmword ptr [rsi]
vmovdqu ymmword ptr [rbp-0x90], ymm0
;; size=12 bbWeight=1.78 PerfScore 10.65
-G_M54788_IG12: ; bbWeight=1.78, isz, extend
- mov rcx, rbx
- ; gcrRegs +[rcx]
+G_M54788_IG11: ; bbWeight=1.78, isz, extend
lea r8, [rbp-0x90]
lea r9, [rbp-0x50]
+ mov edx, r15d
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
cmp byte ptr [rbp-0x50], 0
- jne SHORT G_M54788_IG18
- ;; size=26 bbWeight=1.78 PerfScore 12.87
-G_M54788_IG13: ; bbWeight=1.78, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- cmp eax, -1
jne SHORT G_M54788_IG17
+ ;; size=29 bbWeight=1.78 PerfScore 13.32
+G_M54788_IG12: ; bbWeight=1.78, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ cmp eax, -1
+ jne SHORT G_M54788_IG16
;; size=5 bbWeight=1.78 PerfScore 2.22
-G_M54788_IG14: ; bbWeight=2.77, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov ecx, dword ptr [rbp-0x3C]
- cmp ecx, dword ptr [rbp-0x40]
- jl SHORT G_M54788_IG16
- ;; size=8 bbWeight=2.77 PerfScore 11.07
-G_M54788_IG15: ; bbWeight=1.22, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54788_IG13: ; bbWeight=2.77, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+ mov r8d, dword ptr [rbp-0x3C]
+ cmp r8d, dword ptr [rbp-0x40]
+ jl SHORT G_M54788_IG15
+ ;; size=10 bbWeight=2.77 PerfScore 11.07
+G_M54788_IG14: ; bbWeight=1.22, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
; byrRegs -[rsi rdi]
mov dword ptr [rbp-0x3C], 0xD1FFAB1E
- jmp SHORT G_M54788_IG19
+ jmp SHORT G_M54788_IG18
;; size=9 bbWeight=1.22 PerfScore 3.65
-G_M54788_IG16: ; bbWeight=2.77, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M54788_IG15: ; bbWeight=2.77, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs +[rbx]
; byrRegs +[rsi rdi]
- mov ecx, dword ptr [rbp-0x3C]
- inc ecx
- mov dword ptr [rbp-0x3C], ecx
+ mov r8d, dword ptr [rbp-0x3C]
+ inc r8d
+ mov dword ptr [rbp-0x3C], r8d
jmp SHORT G_M54788_IG09
- ;; size=10 bbWeight=2.77 PerfScore 11.76
-G_M54788_IG17: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=13 bbWeight=2.77 PerfScore 11.76
+G_M54788_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
; byrRegs -[rsi rdi]
mov dword ptr [rbp-0x58], r15d
movzx rax, al
mov byte ptr [rbp-0x54], al
- jmp SHORT G_M54788_IG21
+ jmp SHORT G_M54788_IG20
;; size=12 bbWeight=0.01 PerfScore 0.03
-G_M54788_IG18: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
+G_M54788_IG17: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=00C0 {rsi rdi}, byref, isz
; gcrRegs +[rbx]
; byrRegs +[rsi rdi]
mov byte ptr [rdi], 1
- jmp SHORT G_M54788_IG13
+ jmp SHORT G_M54788_IG12
;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M54788_IG19: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54788_IG18: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
; byrRegs -[rsi rdi]
xor eax, eax
;; size=2 bbWeight=0.99 PerfScore 0.25
-G_M54788_IG20: ; bbWeight=0.99, epilog, nogc, extend
+G_M54788_IG19: ; bbWeight=0.99, epilog, nogc, extend
vzeroupper
add rsp, 168
pop rbx
@@ -281,10 +277,10 @@ G_M54788_IG20: ; bbWeight=0.99, epilog, nogc, extend
pop rbp
ret
;; size=23 bbWeight=0.99 PerfScore 6.20
-G_M54788_IG21: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54788_IG20: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov rax, qword ptr [rbp-0x58]
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M54788_IG22: ; bbWeight=0.01, epilog, nogc, extend
...
+3 (+3.90%) : 68616.dasm - System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
@@ -15,11 +15,9 @@
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp6 [V07,T03] ( 2, 2 ) byref -> rcx single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V08 tmp7 [V08,T05] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
+; V07 tmp6 [V07,T02] ( 2, 2 ) byref -> r8 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V08 tmp7 [V08,T03] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V09 tmp8 [V09 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
-;* V10 tmp9 [V10,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V11 tmp10 [V11,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 56
@@ -39,24 +37,24 @@ G_M58227_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- xor rcx, rcx
- ; byrRegs +[rcx]
+ xor r8, r8
+ ; byrRegs +[r8]
+ mov bword ptr [rsp+0x28], r8
+ xor r8d, r8d
+ ; byrRegs -[r8]
+ mov dword ptr [rsp+0x30], r8d
+ lea r8, [rsp+0x28]
mov rdx, rbx
; gcrRegs +[rdx]
- mov bword ptr [rsp+0x28], rcx
- xor ecx, ecx
- ; byrRegs -[rcx]
- mov dword ptr [rsp+0x30], ecx
mov rcx, rsi
; gcrRegs +[rcx]
- lea r8, [rsp+0x28]
xor r9d, r9d
call [<unknown method>]
; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
mov rax, rsi
; gcrRegs +[rax]
- ;; size=54 bbWeight=1 PerfScore 8.50
+ ;; size=57 bbWeight=1 PerfScore 8.50
G_M58227_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
@@ -64,7 +62,7 @@ G_M58227_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 77, prolog size 13, PerfScore 14.50, instruction count 23, allocated bytes for code 77 (MethodHash=25851c8c) for method System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
+; Total bytes of code 80, prolog size 13, PerfScore 14.50, instruction count 23, allocated bytes for code 80 (MethodHash=25851c8c) for method System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
; ============================================================
Unwind Info:
benchmarks.run_tiered.windows.x64.checked.mch
-30 (-28.30%) : 39920.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
@@ -11,63 +11,48 @@
; V03 arg3 [V03 ] ( 1, 1 ) byref -> [rbp+0x28] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[] "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 48
G_M11790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x20], ymm4
+ mov qword ptr [rbp-0x10], rax
mov gword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov gword ptr [rbp+0x20], r8
mov bword ptr [rbp+0x28], r9
- ;; size=43 bbWeight=1 PerfScore 10.33
+ ;; size=34 bbWeight=1 PerfScore 8.00
G_M11790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M11790_IG03: ; bbWeight=1, nogc, extend
+ vmovdqu xmm0, xmmword ptr [r9]
+ vmovdqu xmmword ptr [rbp-0x10], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M11790_IG04: ; bbWeight=1, extend
+ lea r9, [rbp-0x10]
+ ; byrRegs -[r9]
+ mov edx, dword ptr [rbp+0x18]
+ mov r8, gword ptr [rbp+0x20]
+ ; gcrRegs +[r8]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov ecx, dword ptr [rbp+0x18]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x1C], ecx
- mov rcx, gword ptr [rbp+0x20]
- ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, bword ptr [rbp+0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=26 bbWeight=1 PerfScore 7.00
-G_M11790_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x10], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M11790_IG04: ; bbWeight=1, extend
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov edx, dword ptr [rbp-0x1C]
- mov r8, gword ptr [rbp-0x28]
- ; gcrRegs +[r8]
- lea r9, [rbp-0x10]
call [<unknown method>]
; gcrRegs -[rcx r8]
nop
;; size=22 bbWeight=1 PerfScore 6.75
G_M11790_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 28, PerfScore 30.83, instruction count 30, allocated bytes for code 106 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
+; Total bytes of code 76, prolog size 19, PerfScore 22.50, instruction count 22, allocated bytes for code 76 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
; ============================================================
Unwind Info:
@@ -80,5 +65,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-26 (-28.26%) : 24911.dasm - System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
@@ -10,53 +10,40 @@
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[HS] hidden-struct-arg "spilled call-like call argument" <System.DateTimeOffset>
; V04 tmp2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.DateTimeOffset>
-; V05 tmp3 [V05 ] ( 1, 1 ) byref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V06 tmp4 [V06 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 64
G_M28855_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
- lea rbp, [rsp+0x50]
- xor eax, eax
- mov qword ptr [rbp-0x28], rax
- mov qword ptr [rbp-0x30], rax
+ sub rsp, 64
+ lea rbp, [rsp+0x40]
mov bword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
- ;; size=28 bbWeight=1 PerfScore 6.00
+ ;; size=18 bbWeight=1 PerfScore 3.75
G_M28855_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbp-0x10]
call [<unknown method>]
- mov rcx, bword ptr [rbp+0x10]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x28], rcx
- mov rcx, gword ptr [rbp+0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov gword ptr [rbp-0x30], rcx
vmovups xmm0, xmmword ptr [rbp-0x10]
vmovups xmmword ptr [rbp-0x20], xmm0
- mov rcx, bword ptr [rbp-0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x30]
- ; gcrRegs +[rdx]
lea r8, [rbp-0x20]
+ mov rdx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rdx]
+ mov rcx, bword ptr [rbp+0x10]
+ ; byrRegs +[rcx]
xor r9, r9
; gcrRegs +[r9]
call [<unknown method>]
; gcrRegs -[rdx r9]
; byrRegs -[rcx]
nop
- ;; size=58 bbWeight=1 PerfScore 17.50
+ ;; size=42 bbWeight=1 PerfScore 13.50
G_M28855_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 92, prolog size 20, PerfScore 25.25, instruction count 25, allocated bytes for code 92 (MethodHash=e7188f48) for method System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
+; Total bytes of code 66, prolog size 10, PerfScore 19.00, instruction count 18, allocated bytes for code 66 (MethodHash=e7188f48) for method System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
; ============================================================
Unwind Info:
@@ -69,5 +56,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-46 (-25.41%) : 25468.dasm - Interop+Winsock:WSASendTo(System.Runtime.InteropServices.SafeHandle,byref,int,byref,int,System.ReadOnlySpan`1[ubyte],ulong,long):int (Tier0)
@@ -16,83 +16,65 @@
; V08 loc0 [V08 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] addr-exposed ld-addr-op <System.Net.Sockets.WSABuffer>
; V09 OutArgs [V09 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10 ] ( 1, 1 ) struct (16) [rbp-0x20] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
-; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V12 tmp3 [V12 ] ( 1, 1 ) int -> [rbp-0x2C] do-not-enreg[] "argument with side effect"
-; V13 tmp4 [V13 ] ( 1, 1 ) byref -> [rbp-0x38] do-not-enreg[] must-init "argument with side effect"
-; V14 tmp5 [V14 ] ( 1, 1 ) int -> [rbp-0x3C] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 144
+; Lcl frame size = 112
G_M57847_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 144
+ sub rsp, 112
vzeroupper
- lea rbp, [rsp+0x90]
+ lea rbp, [rsp+0x70]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x30], ymm4
+ mov qword ptr [rbp-0x20], rax
mov gword ptr [rbp+0x10], rcx
mov bword ptr [rbp+0x18], rdx
mov dword ptr [rbp+0x20], r8d
mov bword ptr [rbp+0x28], r9
- ;; size=50 bbWeight=1 PerfScore 10.33
+ ;; size=35 bbWeight=1 PerfScore 8.00
G_M57847_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, bword ptr [rbp+0x18]
- ; byrRegs +[rcx]
- vmovups xmm0, xmmword ptr [rcx]
+ mov rdx, bword ptr [rbp+0x18]
+ ; byrRegs +[rdx]
+ vmovups xmm0, xmmword ptr [rdx]
vmovups xmmword ptr [rbp-0x10], xmm0
- mov rcx, gword ptr [rbp+0x10]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov gword ptr [rbp-0x28], rcx
- mov ecx, dword ptr [rbp+0x20]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x2C], ecx
- mov rcx, bword ptr [rbp+0x28]
- ; byrRegs +[rcx]
- mov bword ptr [rbp-0x38], rcx
- mov ecx, dword ptr [rbp+0x30]
- ; byrRegs -[rcx]
- mov dword ptr [rbp-0x3C], ecx
- mov rcx, bword ptr [rbp+0x38]
- ; byrRegs +[rcx]
- ;; size=45 bbWeight=1 PerfScore 15.00
+ mov edx, dword ptr [rbp+0x30]
+ ; byrRegs -[rdx]
+ mov dword ptr [rsp+0x20], edx
+ mov rdx, bword ptr [rbp+0x38]
+ ; byrRegs +[rdx]
+ ;; size=24 bbWeight=1 PerfScore 9.00
G_M57847_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
+ vmovdqu xmm0, xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp-0x20], xmm0
;; size=9 bbWeight=1 PerfScore 5.00
G_M57847_IG04: ; bbWeight=1, extend
- mov rcx, bword ptr [rbp+0x38]
- mov ecx, dword ptr [rcx+0x08]
- ; byrRegs -[rcx]
- mov dword ptr [rsp+0x30], ecx
- mov rcx, qword ptr [rbp+0x40]
- mov qword ptr [rsp+0x38], rcx
- mov rcx, qword ptr [rbp+0x48]
- mov qword ptr [rsp+0x40], rcx
- mov rcx, gword ptr [rbp-0x28]
- ; gcrRegs +[rcx]
- mov r8d, dword ptr [rbp-0x2C]
- mov r9, bword ptr [rbp-0x38]
- ; byrRegs +[r9]
- mov edx, dword ptr [rbp-0x3C]
- mov dword ptr [rsp+0x20], edx
+ mov rdx, bword ptr [rbp+0x38]
+ mov edx, dword ptr [rdx+0x08]
+ ; byrRegs -[rdx]
+ mov dword ptr [rsp+0x30], edx
+ mov rdx, qword ptr [rbp+0x40]
+ mov qword ptr [rsp+0x38], rdx
+ mov rdx, qword ptr [rbp+0x48]
+ mov qword ptr [rsp+0x40], rdx
lea rdx, [rbp-0x20]
mov qword ptr [rsp+0x28], rdx
lea rdx, [rbp-0x10]
+ mov r8d, dword ptr [rbp+0x20]
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; byrRegs -[r9]
nop
- ;; size=68 bbWeight=1 PerfScore 18.25
+ ;; size=61 bbWeight=1 PerfScore 16.25
G_M57847_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 144
+ add rsp, 112
pop rbp
ret
- ;; size=9 bbWeight=1 PerfScore 1.75
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 181, prolog size 34, PerfScore 50.33, instruction count 46, allocated bytes for code 181 (MethodHash=245d1e08) for method Interop+Winsock:WSASendTo(System.Runtime.InteropServices.SafeHandle,byref,int,byref,int,System.ReadOnlySpan`1[ubyte],ulong,long):int (Tier0)
+; Total bytes of code 135, prolog size 19, PerfScore 40.00, instruction count 36, allocated bytes for code 135 (MethodHash=245d1e08) for method Interop+Winsock:WSASendTo(System.Runtime.InteropServices.SafeHandle,byref,int,byref,int,System.ReadOnlySpan`1[ubyte],ulong,long):int (Tier0)
; ============================================================
Unwind Info:
@@ -100,11 +82,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x08
- CountOfUnwindCodes: 3
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
- Size: 18 * 8 = 144 = 0x00090
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 13 * 8 + 8 = 112 = 0x70
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+2 (+3.45%) : 2919.dasm - System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this (Tier1)
@@ -8,16 +8,14 @@
; Final local variable assignments
;
; V00 this [V00,T00] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.TypeNameParser+NamespaceTypeName>
-; V01 arg1 [V01,T01] ( 3, 3 ) byref -> rdx single-def
-; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r9 class-hnd single-def <System.String>
+; V01 arg1 [V01,T01] ( 3, 3 ) byref -> r9 single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) ref -> rax class-hnd single-def <System.String>
;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.String]>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2, 4 ) ref -> rcx class-hnd exact single-def "impAppendStmt" <System.String>
-; V06 tmp2 [V06,T06] ( 2, 2 ) byref -> r8 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
-;* V07 tmp3 [V07,T07] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
+; V05 tmp1 [V05,T03] ( 2, 4 ) ref -> rdx class-hnd exact single-def "impAppendStmt" <System.String>
+; V06 tmp2 [V06,T04] ( 2, 2 ) byref -> r8 single-def "field V03._reference (fldOffset=0x0)" P-INDEP
+;* V07 tmp3 [V07,T05] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
; V08 tmp4 [V08 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.String]>
-; V09 tmp5 [V09,T04] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
-; V10 tmp6 [V10,T05] ( 2, 4 ) ref -> rax single-def "argument with side effect"
;
; Lcl frame size = 56
@@ -25,40 +23,40 @@ G_M16205_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 56
xor eax, eax
mov qword ptr [rsp+0x28], rax
- mov r9, r8
- ; gcrRegs +[r9]
- ;; size=14 bbWeight=1 PerfScore 1.75
-G_M16205_IG02: ; bbWeight=1, gcrefRegs=0202 {rcx r9}, byrefRegs=0004 {rdx}, byref
+ mov r9, rdx
+ ; byrRegs +[r9]
+ mov rax, r8
+ ; gcrRegs +[rax]
+ ;; size=17 bbWeight=1 PerfScore 2.00
+G_M16205_IG02: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0200 {r9}, byref
; gcrRegs +[rcx]
- ; byrRegs +[rdx]
- mov rcx, gword ptr [rcx+0x08]
+ mov rdx, gword ptr [rcx+0x08]
+ ; gcrRegs +[rdx]
xor r8, r8
; byrRegs +[r8]
- mov rax, rcx
- ; gcrRegs +[rax]
mov bword ptr [rsp+0x28], r8
- xor ecx, ecx
- ; gcrRegs -[rcx]
- mov dword ptr [rsp+0x30], ecx
- mov rcx, rdx
- ; byrRegs +[rcx]
- mov rdx, rax
- ; gcrRegs +[rdx]
- ; byrRegs -[rdx]
- lea r8, [rsp+0x28]
+ xor r8d, r8d
; byrRegs -[r8]
+ mov dword ptr [rsp+0x30], r8d
+ lea r8, [rsp+0x28]
+ mov rcx, r9
+ ; gcrRegs -[rcx]
+ ; byrRegs +[rcx]
+ mov r9, rax
+ ; gcrRegs +[r9]
+ ; byrRegs -[r9]
call [<unknown method>]
; gcrRegs -[rdx r9]
; byrRegs -[rcx]
; gcr arg pop 0
nop
- ;; size=39 bbWeight=1 PerfScore 9.00
+ ;; size=38 bbWeight=1 PerfScore 8.75
G_M16205_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
ret
;; size=5 bbWeight=1 PerfScore 1.25
-; Total bytes of code 58, prolog size 11, PerfScore 12.00, instruction count 17, allocated bytes for code 58 (MethodHash=acc4c0b2) for method System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this (Tier1)
+; Total bytes of code 60, prolog size 11, PerfScore 12.00, instruction count 17, allocated bytes for code 60 (MethodHash=acc4c0b2) for method System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this (Tier1)
; ============================================================
Unwind Info:
+3 (+3.90%) : 47141.dasm - System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
@@ -15,11 +15,9 @@
;* V04 tmp3 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V05 tmp4 [V05 ] ( 0, 0 ) byref -> zero-ref "field V03._reference (fldOffset=0x0)" P-INDEP
;* V06 tmp5 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
-; V07 tmp6 [V07,T03] ( 2, 2 ) byref -> rcx single-def "field V04._reference (fldOffset=0x0)" P-INDEP
-;* V08 tmp7 [V08,T05] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
+; V07 tmp6 [V07,T02] ( 2, 2 ) byref -> r8 single-def "field V04._reference (fldOffset=0x0)" P-INDEP
+;* V08 tmp7 [V08,T03] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
; V09 tmp8 [V09 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
-;* V10 tmp9 [V10,T04] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V11 tmp10 [V11,T02] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 56
@@ -39,24 +37,24 @@ G_M58227_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- xor rcx, rcx
- ; byrRegs +[rcx]
+ xor r8, r8
+ ; byrRegs +[r8]
+ mov bword ptr [rsp+0x28], r8
+ xor r8d, r8d
+ ; byrRegs -[r8]
+ mov dword ptr [rsp+0x30], r8d
+ lea r8, [rsp+0x28]
mov rdx, rbx
; gcrRegs +[rdx]
- mov bword ptr [rsp+0x28], rcx
- xor ecx, ecx
- ; byrRegs -[rcx]
- mov dword ptr [rsp+0x30], ecx
mov rcx, rsi
; gcrRegs +[rcx]
- lea r8, [rsp+0x28]
xor r9d, r9d
call [<unknown method>]
; gcrRegs -[rax rcx rdx rbx]
; gcr arg pop 0
mov rax, rsi
; gcrRegs +[rax]
- ;; size=54 bbWeight=1 PerfScore 8.50
+ ;; size=57 bbWeight=1 PerfScore 8.50
G_M58227_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
@@ -64,7 +62,7 @@ G_M58227_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 77, prolog size 13, PerfScore 14.50, instruction count 23, allocated bytes for code 77 (MethodHash=25851c8c) for method System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
+; Total bytes of code 80, prolog size 13, PerfScore 14.50, instruction count 23, allocated bytes for code 80 (MethodHash=25851c8c) for method System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
; ============================================================
Unwind Info:
+31 (+5.79%) : 9661.dasm - System.Number:FormatNumberushort (Tier1)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 13, 24 ) byref -> rbx single-def
-; V01 arg1 [V01,T09] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T10] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T17] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T23] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T07] ( 7, 10.50) ref -> rsi class-hnd single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc1 [V05,T08] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T18] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T02] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T06] ( 5, 14 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp3 [V11,T56] ( 3, 2 ) ref -> r14
-; V12 tmp4 [V12,T13] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V11 tmp3 [V11,T52] ( 3, 2 ) ref -> r14
+; V12 tmp4 [V12,T10] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -34,8 +34,8 @@
; V23 tmp15 [V23,T03] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V26 tmp18 [V26,T18] ( 2, 8 ) int -> rax "Inlining Arg"
-; V27 tmp19 [V27,T14] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V26 tmp18 [V26,T14] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V27 tmp19 [V27,T11] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp21 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -43,7 +43,7 @@
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V34 tmp26 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V35 tmp27 [V35,T25] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V35 tmp27 [V35,T24] ( 3, 6 ) int -> [rsp+0x74] spill-single-def "Inline stloc first use temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -58,8 +58,8 @@
; V47 tmp39 [V47,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V48 tmp40 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V50 tmp42 [V50,T19] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V51 tmp43 [V51,T15] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V50 tmp42 [V50,T15] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V51 tmp43 [V51,T12] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V52 tmp44 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp45 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp46 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -67,7 +67,7 @@
;* V56 tmp48 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp49 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V58 tmp50 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V59 tmp51 [V59,T26] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V59 tmp51 [V59,T25] ( 3, 6 ) int -> [rsp+0x70] spill-single-def "Inline stloc first use temp"
;* V60 tmp52 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V61 tmp53 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V62 tmp54 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -82,8 +82,8 @@
; V71 tmp63 [V71,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V72 tmp64 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V73 tmp65 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V74 tmp66 [V74,T20] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V75 tmp67 [V75,T16] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V74 tmp66 [V74,T16] ( 2, 8 ) int -> rax "Inlining Arg"
+; V75 tmp67 [V75,T13] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -91,88 +91,84 @@
;* V80 tmp72 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V82 tmp74 [V82 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V83 tmp75 [V83,T27] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V83 tmp75 [V83,T26] ( 3, 6 ) int -> [rsp+0x6C] spill-single-def "Inline stloc first use temp"
;* V84 tmp76 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V85 tmp77 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V86 tmp78 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V87 tmp79 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V88 tmp80 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V89 tmp81 [V89,T11] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V89 tmp81 [V89,T08] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V90 tmp82 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V91 tmp83 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V92 tmp84 [V92,T12] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V92 tmp84 [V92,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V93 tmp85 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V94 tmp86 [V94 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V95 tmp87 [V95,T32] ( 2, 4 ) byref -> r12 "field V13._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp88 [V96,T43] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
+; V95 tmp87 [V95,T32] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp88 [V96,T43] ( 2, 4 ) int -> [rsp+0x68] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V99 tmp91 [V99 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp92 [V100 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V101 tmp93 [V101 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp94 [V102 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
-; V103 tmp95 [V103,T21] ( 3, 6 ) byref -> r12 "field V22._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp96 [V104,T28] ( 3, 6 ) int -> rax "field V22._length (fldOffset=0x8)" P-INDEP
-; V105 tmp97 [V105,T33] ( 2, 4 ) byref -> r12 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V106 tmp98 [V106,T44] ( 2, 4 ) int -> rax "field V24._length (fldOffset=0x8)" P-INDEP
+; V103 tmp95 [V103,T19] ( 3, 6 ) byref -> rax "field V22._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp96 [V104,T27] ( 3, 6 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
+; V105 tmp97 [V105,T33] ( 2, 4 ) byref -> rax "field V24._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp98 [V106,T44] ( 2, 4 ) int -> r8 "field V24._length (fldOffset=0x8)" P-INDEP
;* V107 tmp99 [V107 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V109 tmp101 [V109,T34] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
+; V109 tmp101 [V109,T34] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V110 tmp102 [V110 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
-; V111 tmp103 [V111,T35] ( 2, 4 ) byref -> r12 "field V36._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp104 [V112,T45] ( 2, 4 ) int -> rax "field V36._length (fldOffset=0x8)" P-INDEP
+; V111 tmp103 [V111,T35] ( 2, 4 ) byref -> rax "field V36._reference (fldOffset=0x0)" P-INDEP
+; V112 tmp104 [V112,T45] ( 2, 4 ) int -> r8 "field V36._length (fldOffset=0x8)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp106 [V114 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V115 tmp107 [V115 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V119 tmp111 [V119,T22] ( 3, 6 ) byref -> r8 "field V46._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp112 [V120,T29] ( 3, 6 ) int -> r10 "field V46._length (fldOffset=0x8)" P-INDEP
-; V121 tmp113 [V121,T36] ( 2, 4 ) byref -> r8 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp114 [V122,T46] ( 2, 4 ) int -> r10 "field V48._length (fldOffset=0x8)" P-INDEP
+; V119 tmp111 [V119,T20] ( 3, 6 ) byref -> r10 "field V46._reference (fldOffset=0x0)" P-INDEP
+; V120 tmp112 [V120,T28] ( 3, 6 ) int -> r9 "field V46._length (fldOffset=0x8)" P-INDEP
+; V121 tmp113 [V121,T36] ( 2, 4 ) byref -> r10 "field V48._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp114 [V122,T46] ( 2, 4 ) int -> r9 "field V48._length (fldOffset=0x8)" P-INDEP
;* V123 tmp115 [V123 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp116 [V124 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V125 tmp117 [V125,T37] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V56._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
-; V127 tmp119 [V127,T38] ( 2, 4 ) byref -> r8 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128,T47] ( 2, 4 ) int -> r10 "field V60._length (fldOffset=0x8)" P-INDEP
+; V127 tmp119 [V127,T38] ( 2, 4 ) byref -> r10 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp120 [V128,T47] ( 2, 4 ) int -> r9 "field V60._length (fldOffset=0x8)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp126 [V134 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
-; V135 tmp127 [V135,T23] ( 3, 6 ) byref -> r13 "field V70._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp128 [V136,T30] ( 3, 6 ) int -> r12 "field V70._length (fldOffset=0x8)" P-INDEP
-; V137 tmp129 [V137,T39] ( 2, 4 ) byref -> r13 "field V72._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp130 [V138,T48] ( 2, 4 ) int -> r12 "field V72._length (fldOffset=0x8)" P-INDEP
+; V135 tmp127 [V135,T21] ( 3, 6 ) byref -> r12 "field V70._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp128 [V136,T29] ( 3, 6 ) int -> rax "field V70._length (fldOffset=0x8)" P-INDEP
+; V137 tmp129 [V137,T39] ( 2, 4 ) byref -> r12 "field V72._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp130 [V138,T48] ( 2, 4 ) int -> rax "field V72._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
-; V141 tmp133 [V141,T24] ( 3, 6 ) byref -> r13 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp133 [V141,T22] ( 3, 6 ) byref -> r12 "field V80._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp134 [V142 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP
-; V143 tmp135 [V143,T40] ( 2, 4 ) byref -> rcx "field V84._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp136 [V144,T31] ( 3, 6 ) int -> r12 "field V84._length (fldOffset=0x8)" P-INDEP
+; V143 tmp135 [V143,T40] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp136 [V144,T30] ( 3, 6 ) int -> rax "field V84._length (fldOffset=0x8)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
-; V147 tmp139 [V147,T41] ( 2, 4 ) byref -> rax "field V90._reference (fldOffset=0x0)" P-INDEP
-; V148 tmp140 [V148,T49] ( 2, 4 ) int -> r8 "field V90._length (fldOffset=0x8)" P-INDEP
+; V147 tmp139 [V147,T41] ( 2, 4 ) byref -> r8 "field V90._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp140 [V148,T49] ( 2, 4 ) int -> r10 "field V90._length (fldOffset=0x8)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
; V151 tmp143 [V151,T42] ( 2, 4 ) byref -> rax "field V93._reference (fldOffset=0x0)" P-INDEP
; V152 tmp144 [V152,T50] ( 2, 4 ) int -> r8 "field V93._length (fldOffset=0x8)" P-INDEP
-; V153 tmp145 [V153,T57] ( 2, 2 ) ref -> rcx single-def "arr expr"
-; V154 tmp146 [V154,T55] ( 3, 3 ) int -> rdx "index expr"
-; V155 tmp147 [V155 ] ( 6, 24 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V156 tmp148 [V156 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V157 tmp149 [V157,T51] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V158 tmp150 [V158,T52] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V159 tmp151 [V159,T54] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V160 tmp152 [V160,T17] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V161 tmp153 [V161,T53] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V162 cse0 [V162,T01] ( 9, 18 ) ref -> rdx multi-def "CSE - aggressive"
+; V153 tmp145 [V153,T53] ( 2, 2 ) ref -> rcx single-def "arr expr"
+; V154 tmp146 [V154,T51] ( 3, 3 ) int -> rdx "index expr"
+; V155 tmp147 [V155 ] ( 6, 24 ) struct (16) [rsp+0x58] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V156 tmp148 [V156 ] ( 3, 12 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V157 cse0 [V157,T01] ( 9, 18 ) ref -> rdx multi-def "CSE - aggressive"
+; V158 cse1 [V158,T31] ( 3, 6 ) int -> r13 "CSE - moderate"
;
-; Lcl frame size = 104
+; Lcl frame size = 120
G_M28185_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -183,12 +179,12 @@ G_M28185_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 104
+ sub rsp, 120
xor eax, eax
- mov qword ptr [rsp+0x38], rax
+ mov qword ptr [rsp+0x48], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x50], xmm4
+ mov qword ptr [rsp+0x60], rax
mov rbx, rcx
; byrRegs +[rbx]
mov rdi, rdx
@@ -220,9 +216,10 @@ G_M28185_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx
G_M28185_IG05: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref
; gcrRegs -[rcx]
xor r15d, r15d
- cmp dword ptr [r14+0x08], 0
+ mov r13d, dword ptr [r14+0x08]
+ test r13d, r13d
jle G_M28185_IG23
- ;; size=14 bbWeight=1 PerfScore 4.25
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M28185_IG06: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref, isz
mov ecx, r15d
movzx rdx, word ptr [r14+2*rcx+0x0C]
@@ -235,27 +232,29 @@ G_M28185_IG07: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rb
jmp G_M28185_IG20
;; size=14 bbWeight=2 PerfScore 6.50
G_M28185_IG08: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov r13, gword ptr [rsi+0x08]
- ; gcrRegs +[r13]
+ mov r12, gword ptr [rsi+0x08]
+ ; gcrRegs +[r12]
mov rcx, gword ptr [rsi+0x30]
; gcrRegs +[rcx]
test rcx, rcx
jne SHORT G_M28185_IG09
- xor r12, r12
- ; byrRegs +[r12]
- xor eax, eax
+ xor rax, rax
+ ; byrRegs +[rax]
+ xor r8d, r8d
jmp SHORT G_M28185_IG10
;; size=20 bbWeight=2 PerfScore 15.50
-G_M28185_IG09: ; bbWeight=2, gcrefRegs=6042 {rcx rsi r13 r14}, byrefRegs=0088 {rbx rdi}, byref
- ; byrRegs -[r12]
...
coreclr_tests.run.windows.x64.checked.mch
-29 (-28.71%) : 201453.dasm - Gen`3[int,double,System.Guid]:.ctor(int,double,System.Guid):this (Tier0)
@@ -11,54 +11,41 @@
; V03 arg3 [V03 ] ( 1, 1 ) byref -> [rbp+0x28] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Guid>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[] "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) double -> [rbp-0x28] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 48
G_M30816_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x50]
- xor eax, eax
- mov qword ptr [rbp-0x18], rax
+ lea rbp, [rsp+0x30]
vmovsd qword ptr [rbp+0x20], xmm2
mov gword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov bword ptr [rbp+0x28], r9
- ;; size=35 bbWeight=1 PerfScore 8.00
+ ;; size=29 bbWeight=1 PerfScore 6.75
G_M30816_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ vmovups xmm2, xmmword ptr [r9]
+ vmovups xmmword ptr [rbp-0x10], xmm2
+ lea r9, [rbp-0x10]
+ ; byrRegs -[r9]
+ mov edx, dword ptr [rbp+0x18]
+ vmovsd xmm2, qword ptr [rbp+0x20]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov ecx, dword ptr [rbp+0x18]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x1C], ecx
- vmovsd xmm2, qword ptr [rbp+0x20]
- vmovsd qword ptr [rbp-0x28], xmm2
- mov rcx, bword ptr [rbp+0x28]
- ; byrRegs +[rcx]
- vmovups xmm2, xmmword ptr [rcx]
- vmovups xmmword ptr [rbp-0x10], xmm2
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov edx, dword ptr [rbp-0x1C]
- vmovsd xmm2, qword ptr [rbp-0x28]
- lea r9, [rbp-0x10]
call [<unknown method>]
; gcrRegs -[rcx]
nop
- ;; size=60 bbWeight=1 PerfScore 22.75
+ ;; size=37 bbWeight=1 PerfScore 14.75
G_M30816_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 101, prolog size 19, PerfScore 32.50, instruction count 28, allocated bytes for code 101 (MethodHash=27e4879f) for method Gen`3[int,double,System.Guid]:.ctor(int,double,System.Guid):this (Tier0)
+; Total bytes of code 72, prolog size 13, PerfScore 23.25, instruction count 20, allocated bytes for code 72 (MethodHash=27e4879f) for method Gen`3[int,double,System.Guid]:.ctor(int,double,System.Guid):this (Tier0)
; ============================================================
Unwind Info:
@@ -71,5 +58,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-29 (-28.71%) : 246691.dasm - Gen`3[int,double,System.Guid]:.ctor(int,double,System.Guid):this (Tier0)
@@ -11,54 +11,41 @@
; V03 arg3 [V03 ] ( 1, 1 ) byref -> [rbp+0x28] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Guid>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[] "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) double -> [rbp-0x28] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 48
G_M30816_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x50]
- xor eax, eax
- mov qword ptr [rbp-0x18], rax
+ lea rbp, [rsp+0x30]
vmovsd qword ptr [rbp+0x20], xmm2
mov gword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov bword ptr [rbp+0x28], r9
- ;; size=35 bbWeight=1 PerfScore 8.00
+ ;; size=29 bbWeight=1 PerfScore 6.75
G_M30816_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ vmovups xmm2, xmmword ptr [r9]
+ vmovups xmmword ptr [rbp-0x10], xmm2
+ lea r9, [rbp-0x10]
+ ; byrRegs -[r9]
+ mov edx, dword ptr [rbp+0x18]
+ vmovsd xmm2, qword ptr [rbp+0x20]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov ecx, dword ptr [rbp+0x18]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x1C], ecx
- vmovsd xmm2, qword ptr [rbp+0x20]
- vmovsd qword ptr [rbp-0x28], xmm2
- mov rcx, bword ptr [rbp+0x28]
- ; byrRegs +[rcx]
- vmovups xmm2, xmmword ptr [rcx]
- vmovups xmmword ptr [rbp-0x10], xmm2
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov edx, dword ptr [rbp-0x1C]
- vmovsd xmm2, qword ptr [rbp-0x28]
- lea r9, [rbp-0x10]
call [<unknown method>]
; gcrRegs -[rcx]
nop
- ;; size=60 bbWeight=1 PerfScore 22.75
+ ;; size=37 bbWeight=1 PerfScore 14.75
G_M30816_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 101, prolog size 19, PerfScore 32.50, instruction count 28, allocated bytes for code 101 (MethodHash=27e4879f) for method Gen`3[int,double,System.Guid]:.ctor(int,double,System.Guid):this (Tier0)
+; Total bytes of code 72, prolog size 13, PerfScore 23.25, instruction count 20, allocated bytes for code 72 (MethodHash=27e4879f) for method Gen`3[int,double,System.Guid]:.ctor(int,double,System.Guid):this (Tier0)
; ============================================================
Unwind Info:
@@ -71,5 +58,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-30 (-28.30%) : 225221.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
@@ -11,63 +11,48 @@
; V03 arg3 [V03 ] ( 1, 1 ) byref -> [rbp+0x28] do-not-enreg[]
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) int -> [rbp-0x1C] do-not-enreg[] "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 80
+; Lcl frame size = 48
G_M11790_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 80
+ sub rsp, 48
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x30]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x20], ymm4
+ mov qword ptr [rbp-0x10], rax
mov gword ptr [rbp+0x10], rcx
mov dword ptr [rbp+0x18], edx
mov gword ptr [rbp+0x20], r8
mov bword ptr [rbp+0x28], r9
- ;; size=43 bbWeight=1 PerfScore 10.33
+ ;; size=34 bbWeight=1 PerfScore 8.00
G_M11790_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r9, bword ptr [rbp+0x28]
+ ; byrRegs +[r9]
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M11790_IG03: ; bbWeight=1, nogc, extend
+ vmovdqu xmm0, xmmword ptr [r9]
+ vmovdqu xmmword ptr [rbp-0x10], xmm0
+ ;; size=10 bbWeight=1 PerfScore 5.00
+G_M11790_IG04: ; bbWeight=1, extend
+ lea r9, [rbp-0x10]
+ ; byrRegs -[r9]
+ mov edx, dword ptr [rbp+0x18]
+ mov r8, gword ptr [rbp+0x20]
+ ; gcrRegs +[r8]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov ecx, dword ptr [rbp+0x18]
- ; gcrRegs -[rcx]
- mov dword ptr [rbp-0x1C], ecx
- mov rcx, gword ptr [rbp+0x20]
- ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, bword ptr [rbp+0x28]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- ;; size=26 bbWeight=1 PerfScore 7.00
-G_M11790_IG03: ; bbWeight=1, nogc, extend
- vmovdqu xmm0, xmmword ptr [rcx]
- vmovdqu xmmword ptr [rbp-0x10], xmm0
- ;; size=9 bbWeight=1 PerfScore 5.00
-G_M11790_IG04: ; bbWeight=1, extend
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov edx, dword ptr [rbp-0x1C]
- mov r8, gword ptr [rbp-0x28]
- ; gcrRegs +[r8]
- lea r9, [rbp-0x10]
call [<unknown method>]
; gcrRegs -[rcx r8]
nop
;; size=22 bbWeight=1 PerfScore 6.75
G_M11790_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 48
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 106, prolog size 28, PerfScore 30.83, instruction count 30, allocated bytes for code 106 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
+; Total bytes of code 76, prolog size 19, PerfScore 22.50, instruction count 22, allocated bytes for code 76 (MethodHash=056ad1f1) for method Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
; ============================================================
Unwind Info:
@@ -80,5 +65,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+21 (+13.12%) : 491023.dasm - (dynamicClass):ABIStress_TailCaller552(float,int,int,ABIStress.S1P,long,double,ABIStress.S8U,ABIStress.S2U,short,ubyte,short,short,ABIStress.S2U,short,ubyte,ABIStress.S2U,ABIStress.S2U):int (FullOpts)
@@ -10,12 +10,12 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) float -> zero-ref single-def
; V01 arg1 [V01,T01] ( 3, 3 ) int -> rdx single-def
-; V02 arg2 [V02,T02] ( 3, 3 ) int -> r8 single-def
+; V02 arg2 [V02,T02] ( 3, 3 ) int -> rcx single-def
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S1P>
-; V04 arg4 [V04,T10] ( 1, 1 ) long -> [rbp+0x30] single-def
-; V05 arg5 [V05,T28] ( 1, 1 ) double -> [rbp+0x38] single-def
-; V06 arg6 [V06,T11] ( 1, 1 ) struct ( 8) [rbp+0x40] do-not-enreg[S] single-def <ABIStress.S8U>
-; V07 arg7 [V07,T12] ( 1, 1 ) struct ( 8) [rbp+0x48] do-not-enreg[S] single-def <ABIStress.S2U>
+; V04 arg4 [V04,T07] ( 1, 1 ) long -> [rbp+0x30] single-def
+; V05 arg5 [V05,T24] ( 2, 2 ) double -> mm1 single-def
+; V06 arg6 [V06,T08] ( 1, 1 ) struct ( 8) [rbp+0x40] do-not-enreg[S] single-def <ABIStress.S8U>
+; V07 arg7 [V07,T09] ( 1, 1 ) struct ( 8) [rbp+0x48] do-not-enreg[S] single-def <ABIStress.S2U>
;* V08 arg8 [V08 ] ( 0, 0 ) short -> zero-ref single-def
;* V09 arg9 [V09 ] ( 0, 0 ) ubyte -> zero-ref single-def
;* V10 arg10 [V10 ] ( 0, 0 ) short -> zero-ref single-def
@@ -23,8 +23,8 @@
;* V12 arg12 [V12 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S2U>
;* V13 arg13 [V13 ] ( 0, 0 ) short -> zero-ref single-def
;* V14 arg14 [V14 ] ( 0, 0 ) ubyte -> zero-ref single-def
-; V15 arg15 [V15,T13] ( 1, 1 ) struct ( 8) [rbp+0x88] do-not-enreg[S] single-def <ABIStress.S2U>
-; V16 arg16 [V16,T14] ( 1, 1 ) struct ( 8) [rbp+0x90] do-not-enreg[SF] single-def <ABIStress.S2U>
+; V15 arg15 [V15,T10] ( 1, 1 ) struct ( 8) [rbp+0x88] do-not-enreg[S] single-def <ABIStress.S2U>
+; V16 arg16 [V16,T11] ( 1, 1 ) struct ( 8) [rbp+0x90] do-not-enreg[SF] single-def <ABIStress.S2U>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S8P>
;* V19 tmp2 [V19 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S8P>
@@ -33,80 +33,79 @@
;* V22 tmp5 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S8P>
;* V23 tmp6 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S8P>
;* V24 tmp7 [V24 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "impAppendStmt" <ABIStress.S4U>
-;* V25 tmp8 [V25,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V26 tmp9 [V26,T16] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V27 tmp10 [V27,T17] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V28 tmp11 [V28,T18] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V29 tmp12 [V29,T07] ( 1, 1 ) ubyte -> r9 single-def "field V03.F0 (fldOffset=0x0)" P-INDEP
-;* V30 tmp13 [V30,T19] ( 0, 0 ) long -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
-;* V31 tmp14 [V31,T20] ( 0, 0 ) long -> zero-ref single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
+;* V25 tmp8 [V25,T12] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V26 tmp9 [V26,T13] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V27 tmp10 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V28 tmp11 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+; V29 tmp12 [V29,T06] ( 1, 1 ) ubyte -> r9 single-def "field V03.F0 (fldOffset=0x0)" P-INDEP
+;* V30 tmp13 [V30,T16] ( 0, 0 ) long -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
+;* V31 tmp14 [V31,T17] ( 0, 0 ) long -> zero-ref single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
;* V32 tmp15 [V32 ] ( 0, 0 ) long -> zero-ref single-def "field V20.F0 (fldOffset=0x0)" P-INDEP
-;* V33 tmp16 [V33,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
-;* V34 tmp17 [V34,T22] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
-;* V35 tmp18 [V35,T23] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
-;* V36 tmp19 [V36,T24] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
+;* V33 tmp16 [V33,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
+;* V34 tmp17 [V34,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
+;* V35 tmp18 [V35,T20] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
+;* V36 tmp19 [V36,T21] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
;* V37 tmp20 [V37 ] ( 0, 0 ) long -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
-;* V38 tmp21 [V38,T25] ( 0, 0 ) long -> zero-ref single-def "field V23.F0 (fldOffset=0x0)" P-INDEP
+;* V38 tmp21 [V38,T22] ( 0, 0 ) long -> zero-ref single-def "field V23.F0 (fldOffset=0x0)" P-INDEP
; V39 tmp22 [V39,T00] ( 5, 10 ) struct ( 8) [rbp-0x08] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
-;* V40 tmp23 [V40,T08] ( 0, 0 ) long -> zero-ref "argument with side effect"
-; V41 tmp24 [V41,T26] ( 3, 6 ) double -> mm1 "argument with side effect"
-; V42 tmp25 [V42,T03] ( 2, 4 ) long -> r9 "argument with side effect"
-; V43 tmp26 [V43,T04] ( 2, 4 ) int -> rax "argument with side effect"
-; V44 tmp27 [V44,T27] ( 3, 6 ) double -> mm0 "argument with side effect"
-; V45 tmp28 [V45,T05] ( 2, 4 ) int -> rdx "argument with side effect"
-;* V46 tmp29 [V46,T09] ( 0, 0 ) long -> zero-ref "argument with side effect"
-; V47 tmp30 [V47,T06] ( 2, 4 ) int -> r10 "argument with side effect"
+; V40 rat0 [V40,T03] ( 2, 4 ) long -> r8 "Fast tail call lowering is creating a new local variable"
+; V41 rat1 [V41,T23] ( 3, 6 ) double -> mm0 "Fast tail call lowering is creating a new local variable"
+; V42 rat2 [V42,T04] ( 2, 4 ) struct ( 8) [rbp-0x10] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S8U>
+; V43 rat3 [V43,T05] ( 2, 4 ) struct ( 8) [rbp-0x18] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S2U>
;
-; Lcl frame size = 16
+; Lcl frame size = 32
G_M58403_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 16
+ sub rsp, 32
vzeroupper
- lea rbp, [rsp+0x10]
- ;; size=13 bbWeight=1 PerfScore 2.75
-G_M58403_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rbp, [rsp+0x20]
+ mov ecx, r8d
vmovsd xmm1, qword ptr [rbp+0x38]
- mov r9, qword ptr [rbp+0x40]
- mov eax, r8d
+ ;; size=21 bbWeight=1 PerfScore 6.00
+G_M58403_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=1 PerfScore 0.25
+G_M58403_IG03: ; bbWeight=1, nogc, extend
+ mov r8, qword ptr [rbp+0x30]
vmovaps xmm0, xmm1
- movzx r10, word ptr [rbp+0x88]
+ mov r9, qword ptr [rbp+0x40]
+ mov qword ptr [rbp-0x10], r9
+ movzx r9, word ptr [rbp+0x48]
+ mov word ptr [rbp-0x18], r9w
+ vmovsd qword ptr [rbp+0x30], xmm1
+ mov dword ptr [rbp+0x38], edx
+ mov r9, 0xD1FFAB1E
+ mov qword ptr [rbp+0x40], r9
+ movzx r9, word ptr [rbp+0x88]
+ mov dword ptr [rbp+0x48], r9d
mov byte ptr [rbp-0x08], 119
mov byte ptr [rbp-0x07], 178
mov byte ptr [rbp-0x06], 230
mov byte ptr [rbp-0x05], 105
- nop
- ;; size=41 bbWeight=1 PerfScore 9.75
-G_M58403_IG03: ; bbWeight=1, nogc, extend
- vmovsd qword ptr [rbp+0x58], xmm1
- movzx rcx, word ptr [rbp+0x48]
- mov dword ptr [rbp+0x60], ecx
- mov rcx, qword ptr [rbp+0x30]
- mov qword ptr [rbp+0x68], rcx
- mov rcx, 0xD1FFAB1E
- mov qword ptr [rbp+0x70], rcx
- movzx rcx, byte ptr [rbp+0x91]
- mov dword ptr [rbp+0x78], ecx
- mov rcx, 0xD1FFAB1E
+ vmovsd qword ptr [rbp+0x58], xmm0
+ movzx r9, word ptr [rbp-0x18]
+ mov dword ptr [rbp+0x60], r9d
+ mov qword ptr [rbp+0x68], r8
+ mov r8, 0xD1FFAB1E
+ mov qword ptr [rbp+0x70], r8
+ movzx r8, byte ptr [rbp+0x91]
+ mov dword ptr [rbp+0x78], r8d
+ mov r8d, dword ptr [rbp-0x08]
+ mov dword ptr [rbp+0x50], r8d
vmovaps xmm1, xmm0
- mov r8, r9
- mov r9d, eax
- vmovsd qword ptr [rbp+0x30], xmm0
- mov dword ptr [rbp+0x38], edx
- mov rax, 0xD1FFAB1E
- mov qword ptr [rbp+0x40], rax
- mov dword ptr [rbp+0x48], r10d
- mov eax, dword ptr [rbp-0x08]
- mov dword ptr [rbp+0x50], eax
- ;; size=96 bbWeight=1 PerfScore 15.50
+ mov r8, qword ptr [rbp-0x10]
+ mov r9d, ecx
+ mov rcx, 0xD1FFAB1E
+ ;; size=149 bbWeight=1 PerfScore 25.50
G_M58403_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 16
+ add rsp, 32
pop rbp
jmp <unknown method>
; gcr arg pop 0
;; size=10 bbWeight=1 PerfScore 2.75
-; Total bytes of code 160, prolog size 13, PerfScore 30.75, instruction count 37, allocated bytes for code 160 (MethodHash=48f01bdc) for method (dynamicClass):ABIStress_TailCaller552(float,int,int,ABIStress.S1P,long,double,ABIStress.S8U,ABIStress.S2U,short,ubyte,short,short,ABIStress.S2U,short,ubyte,ABIStress.S2U,ABIStress.S2U):int (FullOpts)
+; Total bytes of code 181, prolog size 21, PerfScore 34.50, instruction count 40, allocated bytes for code 181 (MethodHash=48f01bdc) for method (dynamicClass):ABIStress_TailCaller552(float,int,int,ABIStress.S1P,long,double,ABIStress.S8U,ABIStress.S2U,short,ubyte,short,short,ABIStress.S2U,short,ubyte,ABIStress.S2U,ABIStress.S2U):int (FullOpts)
; ============================================================
Unwind Info:
@@ -119,5 +118,5 @@ Unwind Info:
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+12 (+13.48%) : 490883.dasm - (dynamicClass):ABIStress_TailCaller474(long,ubyte,int,ABIStress.S2U,ABIStress.S4P,ABIStress.S2U,int,double,short,ABIStress.S2P,ABIStress.S4P,long,ubyte,long,ubyte,ABIStress.S8P,long,double,ABIStress.S4P,ABIStress.S2P):int (FullOpts)
@@ -13,7 +13,7 @@
;* V02 arg2 [V02 ] ( 0, 0 ) int -> zero-ref single-def
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S2U>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4P>
-; V05 arg5 [V05,T06] ( 1, 1 ) struct ( 8) [rsp+0x38] do-not-enreg[SF] single-def <ABIStress.S2U>
+; V05 arg5 [V05,T03] ( 1, 1 ) struct ( 8) [rsp+0x48] do-not-enreg[SF] single-def <ABIStress.S2U>
;* V06 arg6 [V06 ] ( 0, 0 ) int -> zero-ref single-def
;* V07 arg7 [V07 ] ( 0, 0 ) double -> zero-ref single-def
;* V08 arg8 [V08 ] ( 0, 0 ) short -> zero-ref single-def
@@ -32,60 +32,56 @@
;* V21 tmp1 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S4U>
;* V22 tmp2 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S1P>
;* V23 tmp3 [V23 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[SF] "impAppendStmt" <ABIStress.S4U>
-;* V24 tmp4 [V24,T07] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V25 tmp5 [V25,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V26 tmp6 [V26,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V27 tmp7 [V27,T10] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V24 tmp4 [V24,T04] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V25 tmp5 [V25,T05] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V26 tmp6 [V26,T06] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V27 tmp7 [V27,T07] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
;* V28 tmp8 [V28 ] ( 0, 0 ) int -> zero-ref single-def "field V04.F0 (fldOffset=0x0)" P-INDEP
-; V29 tmp9 [V29,T11] ( 1, 1 ) short -> [rsp+0x58] single-def "field V09.F0 (fldOffset=0x0)" P-INDEP
+; V29 tmp9 [V29,T08] ( 1, 1 ) short -> [rsp+0x68] single-def "field V09.F0 (fldOffset=0x0)" P-INDEP
;* V30 tmp10 [V30 ] ( 0, 0 ) int -> zero-ref single-def "field V10.F0 (fldOffset=0x0)" P-INDEP
-; V31 tmp11 [V31,T12] ( 1, 1 ) long -> [rsp+0x88] single-def "field V15.F0 (fldOffset=0x0)" P-INDEP
+; V31 tmp11 [V31,T09] ( 1, 1 ) long -> [rsp+0x98] single-def "field V15.F0 (fldOffset=0x0)" P-INDEP
;* V32 tmp12 [V32 ] ( 0, 0 ) int -> zero-ref single-def "field V18.F0 (fldOffset=0x0)" P-INDEP
-; V33 tmp13 [V33,T13] ( 1, 1 ) short -> [rsp+0xA8] single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
-;* V34 tmp14 [V34,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
-;* V35 tmp15 [V35,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
-;* V36 tmp16 [V36,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
-;* V37 tmp17 [V37,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
-;* V38 tmp18 [V38,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
-; V39 tmp19 [V39,T00] ( 5, 10 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
-; V40 tmp20 [V40,T02] ( 2, 4 ) int -> rcx "argument with side effect"
-; V41 tmp21 [V41,T03] ( 2, 4 ) long -> r8 "argument with side effect"
-; V42 tmp22 [V42,T04] ( 2, 4 ) int -> r9 "argument with side effect"
-; V43 tmp23 [V43,T05] ( 2, 4 ) int -> rax "argument with side effect"
+; V33 tmp13 [V33,T10] ( 1, 1 ) short -> [rsp+0xB8] single-def "field V19.F0 (fldOffset=0x0)" P-INDEP
+;* V34 tmp14 [V34,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F0 (fldOffset=0x0)" P-INDEP
+;* V35 tmp15 [V35,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F1 (fldOffset=0x1)" P-INDEP
+;* V36 tmp16 [V36,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F2 (fldOffset=0x2)" P-INDEP
+;* V37 tmp17 [V37,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V21.F3 (fldOffset=0x3)" P-INDEP
+;* V38 tmp18 [V38,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V22.F0 (fldOffset=0x0)" P-INDEP
+; V39 tmp19 [V39,T00] ( 5, 10 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <ABIStress.S4U>
+; V40 rat0 [V40,T02] ( 2, 4 ) struct ( 8) [rsp+0x08] do-not-enreg[SF] "Fast tail call lowering is creating a new local variable" <ABIStress.S2U>
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M14408_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rax
- ;; size=1 bbWeight=1 PerfScore 1.00
+ sub rsp, 24
+ ;; size=4 bbWeight=1 PerfScore 0.25
G_M14408_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx rcx, byte ptr [rsp+0x39]
- mov r8, qword ptr [rsp+0x88]
- movsx r9, word ptr [rsp+0xA8]
- movsx rax, word ptr [rsp+0x58]
- mov byte ptr [rsp], 176
- mov byte ptr [rsp+0x01], 245
- mov byte ptr [rsp+0x02], 168
- mov byte ptr [rsp+0x03], 170
+ mov byte ptr [rsp+0x10], 176
+ mov byte ptr [rsp+0x11], 245
+ mov byte ptr [rsp+0x12], 168
+ mov byte ptr [rsp+0x13], 170
nop
- ;; size=48 bbWeight=1 PerfScore 12.25
+ ;; size=21 bbWeight=1 PerfScore 4.25
G_M14408_IG03: ; bbWeight=1, nogc, extend
- mov dword ptr [rsp+0x38], 166
- movzx rdx, dl
- mov dword ptr [rsp+0x40], edx
- mov rdx, r8
- mov r8d, r9d
- mov r9d, eax
- mov eax, dword ptr [rsp]
- mov dword ptr [rsp+0x30], eax
- ;; size=31 bbWeight=1 PerfScore 5.00
+ movzx r9, word ptr [rsp+0x48]
+ mov word ptr [rsp+0x08], r9w
+ mov dword ptr [rsp+0x48], 166
+ movzx r9, dl
+ mov dword ptr [rsp+0x50], r9d
+ mov r9d, dword ptr [rsp+0x10]
+ mov dword ptr [rsp+0x40], r9d
+ movsx r9, word ptr [rsp+0x68]
+ mov rdx, qword ptr [rsp+0x98]
+ movsx r8, word ptr [rsp+0xB8]
+ movzx rcx, byte ptr [rsp+0x09]
+ ;; size=67 bbWeight=1 PerfScore 14.25
G_M14408_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ add rsp, 24
jmp <unknown method>
; gcr arg pop 0
;; size=9 bbWeight=1 PerfScore 2.25
-; Total bytes of code 89, prolog size 1, PerfScore 20.50, instruction count 20, allocated bytes for code 89 (MethodHash=7ad4c7b7) for method (dynamicClass):ABIStress_TailCaller474(long,ubyte,int,ABIStress.S2U,ABIStress.S4P,ABIStress.S2U,int,double,short,ABIStress.S2P,ABIStress.S4P,long,ubyte,long,ubyte,ABIStress.S8P,long,double,ABIStress.S4P,ABIStress.S2P):int (FullOpts)
+; Total bytes of code 101, prolog size 4, PerfScore 21.00, instruction count 19, allocated bytes for code 101 (MethodHash=7ad4c7b7) for method (dynamicClass):ABIStress_TailCaller474(long,ubyte,int,ABIStress.S2U,ABIStress.S4P,ABIStress.S2U,int,double,short,ABIStress.S2P,ABIStress.S4P,long,ubyte,long,ubyte,ABIStress.S8P,long,double,ABIStress.S4P,ABIStress.S2P):int (FullOpts)
; ============================================================
Unwind Info:
@@ -93,9 +89,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
+ SizeOfProlog : 0x04
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
+15 (+21.74%) : 490039.dasm - (dynamicClass):ABIStress_TailCaller13(double,double,ABIStress.S4U,float,ABIStress.S4U,ABIStress.S8U,ABIStress.S8U,double,ABIStress.S8U):int (FullOpts)
@@ -10,62 +10,61 @@
;
;* V00 arg0 [V00 ] ( 0, 0 ) double -> zero-ref single-def
;* V01 arg1 [V01 ] ( 0, 0 ) double -> zero-ref single-def
-; V02 arg2 [V02,T01] ( 3, 3 ) struct ( 8) [rsp+0x20] do-not-enreg[S] single-def <ABIStress.S4U>
+; V02 arg2 [V02,T01] ( 3, 3 ) struct ( 8) [rsp+0x30] do-not-enreg[S] single-def <ABIStress.S4U>
;* V03 arg3 [V03 ] ( 0, 0 ) float -> zero-ref single-def
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S4U>
-; V05 arg5 [V05,T06] ( 1, 1 ) struct ( 8) [rsp+0x38] do-not-enreg[S] single-def <ABIStress.S8U>
+; V05 arg5 [V05,T03] ( 1, 1 ) struct ( 8) [rsp+0x48] do-not-enreg[S] single-def <ABIStress.S8U>
;* V06 arg6 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <ABIStress.S8U>
;* V07 arg7 [V07 ] ( 0, 0 ) double -> zero-ref single-def
-; V08 arg8 [V08,T07] ( 1, 1 ) struct ( 8) [rsp+0x50] do-not-enreg[S] single-def <ABIStress.S8U>
+; V08 arg8 [V08,T04] ( 1, 1 ) struct ( 8) [rsp+0x60] do-not-enreg[S] single-def <ABIStress.S8U>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S4P>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S2U>
;* V12 tmp3 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S4P>
;* V13 tmp4 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <ABIStress.S8P>
;* V14 tmp5 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <ABIStress.S2U>
-;* V15 tmp6 [V15,T08] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V16 tmp7 [V16,T09] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-;* V17 tmp8 [V17,T10] ( 0, 0 ) int -> zero-ref single-def "field V10.F0 (fldOffset=0x0)" P-INDEP
-;* V18 tmp9 [V18,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.F0 (fldOffset=0x0)" P-INDEP
-;* V19 tmp10 [V19,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.F1 (fldOffset=0x1)" P-INDEP
+;* V15 tmp6 [V15,T05] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V16 tmp7 [V16,T06] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
+;* V17 tmp8 [V17,T07] ( 0, 0 ) int -> zero-ref single-def "field V10.F0 (fldOffset=0x0)" P-INDEP
+;* V18 tmp9 [V18,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.F0 (fldOffset=0x0)" P-INDEP
+;* V19 tmp10 [V19,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V11.F1 (fldOffset=0x1)" P-INDEP
;* V20 tmp11 [V20 ] ( 0, 0 ) int -> zero-ref single-def "field V12.F0 (fldOffset=0x0)" P-INDEP
-;* V21 tmp12 [V21,T13] ( 0, 0 ) long -> zero-ref single-def "field V13.F0 (fldOffset=0x0)" P-INDEP
+;* V21 tmp12 [V21,T10] ( 0, 0 ) long -> zero-ref single-def "field V13.F0 (fldOffset=0x0)" P-INDEP
;* V22 tmp13 [V22 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F0 (fldOffset=0x0)" P-INDEP
;* V23 tmp14 [V23 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V14.F1 (fldOffset=0x1)" P-INDEP
-; V24 tmp15 [V24,T00] ( 3, 6 ) struct ( 8) [rsp+0x00] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
-; V25 tmp16 [V25,T02] ( 2, 4 ) long -> rcx "argument with side effect"
-; V26 tmp17 [V26,T03] ( 2, 4 ) long -> rdx "argument with side effect"
-;* V27 tmp18 [V27,T05] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V28 tmp19 [V28,T04] ( 2, 4 ) int -> r9 "argument with side effect"
+; V24 tmp15 [V24,T00] ( 3, 6 ) struct ( 8) [rsp+0x10] do-not-enreg[SF] "by-value struct argument" <ABIStress.S2U>
+; V25 rat0 [V25,T02] ( 2, 4 ) struct ( 8) [rsp+0x08] do-not-enreg[S] "Fast tail call lowering is creating a new local variable" <ABIStress.S8U>
;
-; Lcl frame size = 8
+; Lcl frame size = 24
G_M59583_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rax
- mov qword ptr [rsp+0x20], r8
- ;; size=6 bbWeight=1 PerfScore 2.00
+ sub rsp, 24
+ mov qword ptr [rsp+0x30], r8
+ ;; size=9 bbWeight=1 PerfScore 1.25
G_M59583_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rcx, qword ptr [rsp+0x50]
- mov rdx, qword ptr [rsp+0x38]
- mov r9d, dword ptr [rsp+0x20]
- mov byte ptr [rsp], 217
- mov byte ptr [rsp+0x01], 150
+ mov byte ptr [rsp+0x10], 217
+ mov byte ptr [rsp+0x11], 150
nop
- ;; size=25 bbWeight=1 PerfScore 5.25
+ ;; size=11 bbWeight=1 PerfScore 2.25
G_M59583_IG03: ; bbWeight=1, nogc, extend
- mov r8, 0xD1FFAB1E
- mov qword ptr [rsp+0x38], r8
+ mov rdx, qword ptr [rsp+0x48]
+ mov qword ptr [rsp+0x08], rdx
+ mov rdx, 0xD1FFAB1E
+ mov qword ptr [rsp+0x48], rdx
+ movzx rdx, word ptr [rsp+0x10]
+ mov dword ptr [rsp+0x40], edx
+ mov rdx, qword ptr [rsp+0x08]
mov r8d, 0xD1FFAB1E
- movzx rax, word ptr [rsp]
- mov dword ptr [rsp+0x30], eax
- ;; size=29 bbWeight=1 PerfScore 3.50
+ mov r9d, dword ptr [rsp+0x30]
+ mov rcx, qword ptr [rsp+0x60]
+ ;; size=55 bbWeight=1 PerfScore 8.50
G_M59583_IG04: ; bbWeight=1, epilog, nogc, extend
- add rsp, 8
+ add rsp, 24
jmp <unknown method>
; gcr arg pop 0
;; size=9 bbWeight=1 PerfScore 2.25
-; Total bytes of code 69, prolog size 6, PerfScore 13.00, instruction count 15, allocated bytes for code 69 (MethodHash=1a9d1740) for method (dynamicClass):ABIStress_TailCaller13(double,double,ABIStress.S4U,float,ABIStress.S4U,ABIStress.S8U,ABIStress.S8U,double,ABIStress.S8U):int (FullOpts)
+; Total bytes of code 84, prolog size 9, PerfScore 14.25, instruction count 17, allocated bytes for code 84 (MethodHash=1a9d1740) for method (dynamicClass):ABIStress_TailCaller13(double,double,ABIStress.S4U,float,ABIStress.S4U,ABIStress.S8U,ABIStress.S8U,double,ABIStress.S8U):int (FullOpts)
; ============================================================
Unwind Info:
@@ -73,9 +72,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
+ SizeOfProlog : 0x04
CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
libraries.crossgen2.windows.x64.checked.mch
-17 (-19.32%) : 170915.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
@@ -13,28 +13,22 @@
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T00] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol>
; V03 tmp2 [V03,T01] ( 3, 6 ) ref -> rcx single-def "arr expr"
-; TEMP_01 byref -> [rsp+0x28]
;
-; Lcl frame size = 48
+; Lcl frame size = 32
G_M38638_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 48
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
- ;; size=12 bbWeight=1 PerfScore 2.50
+ sub rsp, 32
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M38638_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
- lea rcx, bword ptr [rbx+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x28], rcx
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
; gcrRegs -[rax]
- ; byrRegs -[rcx] +[rax]
+ ; byrRegs +[rax]
; gcr arg pop 0
mov rcx, gword ptr [rax+0xC0]
; gcrRegs +[rcx]
@@ -42,7 +36,7 @@ G_M38638_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
jbe SHORT G_M38638_IG04
mov rdx, gword ptr [rcx+0x348]
; gcrRegs +[rdx]
- mov rcx, bword ptr [rsp+0x28]
+ lea rcx, bword ptr [rbx+0x08]
; gcrRegs -[rcx]
; byrRegs +[rcx]
call [CORINFO_HELP_ASSIGN_REF]
@@ -52,9 +46,9 @@ G_M38638_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov dword ptr [rbx+0x28], eax
mov rax, rbx
; gcrRegs +[rax]
- ;; size=63 bbWeight=1 PerfScore 21.25
+ ;; size=53 bbWeight=1 PerfScore 19.25
G_M38638_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 48
+ add rsp, 32
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
@@ -65,7 +59,7 @@ G_M38638_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 88, prolog size 12, PerfScore 25.50, instruction count 23, allocated bytes for code 88 (MethodHash=64d56911) for method Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
+; Total bytes of code 71, prolog size 5, PerfScore 22.25, instruction count 19, allocated bytes for code 71 (MethodHash=64d56911) for method Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
; ============================================================
Unwind Info:
@@ -78,5 +72,5 @@ Unwind Info:
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: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-15 (-18.52%) : 240221.dasm - System.Net.Quic.QuicConnection:HandleEventPeerAddressChanged(byref):int:this (FullOpts)
@@ -8,60 +8,53 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Net.Quic.QuicConnection>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Net.Quic.QuicConnection>
; V01 arg1 [V01,T02] ( 3, 3 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rdx "impAppendStmt"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "field V02.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp3 [V06,T06] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x4)" P-INDEP
+; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rcx "impAppendStmt"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V02.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp3 [V06,T05] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x4)" P-INDEP
; V07 tmp4 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V08 tmp5 [V08,T04] ( 2, 4 ) long -> rdx "argument with side effect"
-; TEMP_01 byref -> [rsp+0x30]
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M57932_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x30], rax
- ;; size=11 bbWeight=1 PerfScore 1.50
-G_M57932_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
- ; gcrRegs +[rcx]
+ push rbx
+ sub rsp, 48
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M57932_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
; byrRegs +[rdx]
- mov rdx, qword ptr [rdx]
- ; byrRegs -[rdx]
- mov rax, qword ptr [(reloc)] ; const ptr
- lea rcx, bword ptr [rcx+rax]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
+ mov rcx, qword ptr [rdx]
mov byte ptr [rsp+0x28], 0
- xor eax, eax
- mov dword ptr [rsp+0x2C], eax
- mov rcx, rdx
- ; byrRegs -[rcx]
+ xor edx, edx
+ ; byrRegs -[rdx]
+ mov dword ptr [rsp+0x2C], edx
mov rdx, qword ptr [rsp+0x28]
call [System.Net.Quic.MsQuicHelpers:QuicAddrToIPEndPoint(ulong,System.Nullable`1[int]):System.Net.IPEndPoint]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x30]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ lea rcx, bword ptr [rbx+rcx]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
call [Microsoft.Quic.MsQuic:get_QUIC_STATUS_SUCCESS():int]
; gcr arg pop 0
nop
- ;; size=65 bbWeight=1 PerfScore 19.50
+ ;; size=52 bbWeight=1 PerfScore 17.25
G_M57932_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
+ pop rbx
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 81, prolog size 11, PerfScore 22.25, instruction count 20, allocated bytes for code 81 (MethodHash=e5451db3) for method System.Net.Quic.QuicConnection:HandleEventPeerAddressChanged(byref):int:this (FullOpts)
+; Total bytes of code 66, prolog size 5, PerfScore 20.50, instruction count 18, allocated bytes for code 66 (MethodHash=e5451db3) for method System.Net.Quic.QuicConnection:HandleEventPeerAddressChanged(byref):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -69,9 +62,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-15 (-18.52%) : 240220.dasm - System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
@@ -8,60 +8,53 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Net.Quic.QuicConnection>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Net.Quic.QuicConnection>
; V01 arg1 [V01,T02] ( 3, 3 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rdx "impAppendStmt"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "field V02.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp3 [V06,T06] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x4)" P-INDEP
+; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rcx "impAppendStmt"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V02.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp3 [V06,T05] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x4)" P-INDEP
; V07 tmp4 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V08 tmp5 [V08,T04] ( 2, 4 ) long -> rdx "argument with side effect"
-; TEMP_01 byref -> [rsp+0x30]
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M54883_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x30], rax
- ;; size=11 bbWeight=1 PerfScore 1.50
-G_M54883_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
- ; gcrRegs +[rcx]
+ push rbx
+ sub rsp, 48
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54883_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
; byrRegs +[rdx]
- mov rdx, qword ptr [rdx]
- ; byrRegs -[rdx]
- mov rax, qword ptr [(reloc)] ; const ptr
- lea rcx, bword ptr [rcx+rax]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
+ mov rcx, qword ptr [rdx]
mov byte ptr [rsp+0x28], 0
- xor eax, eax
- mov dword ptr [rsp+0x2C], eax
- mov rcx, rdx
- ; byrRegs -[rcx]
+ xor edx, edx
+ ; byrRegs -[rdx]
+ mov dword ptr [rsp+0x2C], edx
mov rdx, qword ptr [rsp+0x28]
call [System.Net.Quic.MsQuicHelpers:QuicAddrToIPEndPoint(ulong,System.Nullable`1[int]):System.Net.IPEndPoint]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x30]
+ mov rcx, qword ptr [(reloc)] ; const ptr
+ lea rcx, bword ptr [rbx+rcx]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
call [Microsoft.Quic.MsQuic:get_QUIC_STATUS_SUCCESS():int]
; gcr arg pop 0
nop
- ;; size=65 bbWeight=1 PerfScore 19.50
+ ;; size=52 bbWeight=1 PerfScore 17.25
G_M54883_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
+ pop rbx
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 81, prolog size 11, PerfScore 22.25, instruction count 20, allocated bytes for code 81 (MethodHash=81ce299c) for method System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
+; Total bytes of code 66, prolog size 5, PerfScore 20.50, instruction count 18, allocated bytes for code 66 (MethodHash=81ce299c) for method System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -69,9 +62,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+9 (+8.91%) : 201735.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Text.Json.JsonElement]:OnTryWriteAsObject(System.Text.Json.Utf8JsonWriter,System.Object,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
@@ -12,75 +12,76 @@
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Text.Json.Utf8JsonWriter>
; V02 arg2 [V02,T02] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Object>
; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rdi class-hnd single-def <System.Text.Json.JsonSerializerOptions>
-; V04 arg4 [V04,T06] ( 1, 1 ) byref -> [rsp+0x90] single-def
-; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [rsp+0x40] do-not-enreg[XS] must-init addr-exposed <System.Text.Json.JsonElement>
+; V04 arg4 [V04,T04] ( 1, 1 ) byref -> [rsp+0x90] single-def
+; V05 loc0 [V05 ] ( 2, 2 ) struct (16) [rsp+0x38] do-not-enreg[XS] must-init addr-exposed <System.Text.Json.JsonElement>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07 ] ( 2, 2 ) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V05._parent (fldOffset=0x0)" P-DEP
-; V08 tmp2 [V08 ] ( 2, 2 ) int -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V05._idx (fldOffset=0x8)" P-DEP
-; V09 tmp3 [V09 ] ( 2, 4 ) struct (16) [rsp+0x30] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.Json.JsonElement>
-;* V10 tmp4 [V10,T05] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V11 tmp5 [V11,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
+; V07 tmp1 [V07 ] ( 2, 2 ) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V05._parent (fldOffset=0x0)" P-DEP
+; V08 tmp2 [V08 ] ( 2, 2 ) int -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V05._idx (fldOffset=0x8)" P-DEP
+; V09 tmp3 [V09 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Text.Json.JsonElement>
;
-; Lcl frame size = 80
+; Lcl frame size = 72
G_M32425_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
+ push rbp
push rbx
- sub rsp, 80
+ sub rsp, 72
+ xor eax, eax
+ mov qword ptr [rsp+0x28], rax
xorps xmm4, xmm4
movaps xmmword ptr [rsp+0x30], xmm4
- movaps xmmword ptr [rsp+0x40], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
mov rdi, r9
; gcrRegs +[rdi]
- ;; size=29 bbWeight=1 PerfScore 8.33
+ ;; size=37 bbWeight=1 PerfScore 9.58
G_M32425_IG02: ; bbWeight=1, gcrefRegs=01C8 {rbx rsi rdi r8}, byrefRegs=0000 {}, byref
; gcrRegs +[r8]
- lea rcx, [rsp+0x40]
+ lea rcx, [rsp+0x38]
mov rdx, r8
; gcrRegs +[rdx]
call [System.Text.Json.JsonSerializer:UnboxOnWrite[System.Text.Json.JsonElement](System.Object):System.Text.Json.JsonElement]
; gcrRegs -[rdx r8]
; gcr arg pop 0
- mov rdx, rsi
- ; gcrRegs +[rdx]
- ;; size=17 bbWeight=1 PerfScore 4.00
+ ;; size=14 bbWeight=1 PerfScore 3.75
G_M32425_IG03: ; bbWeight=1, nogc, extend
- movups xmm0, xmmword ptr [rsp+0x40]
- movups xmmword ptr [rsp+0x30], xmm0
+ movups xmm0, xmmword ptr [rsp+0x38]
+ movups xmmword ptr [rsp+0x28], xmm0
;; size=10 bbWeight=1 PerfScore 4.00
G_M32425_IG04: ; bbWeight=1, extend
- mov rsi, bword ptr [rsp+0x90]
- ; gcrRegs -[rsi]
- ; byrRegs +[rsi]
- mov bword ptr [rsp+0x20], rsi
+ mov rbp, bword ptr [rsp+0x90]
+ ; byrRegs +[rbp]
+ mov bword ptr [rsp+0x20], rbp
; byr arg write
+ lea r8, [rsp+0x28]
+ mov rdx, rsi
+ ; gcrRegs +[rdx]
mov rcx, rbx
; gcrRegs +[rcx]
- lea r8, [rsp+0x30]
mov r9, rdi
; gcrRegs +[r9]
lea r11, [(reloc)] ; function address
cmp dword ptr [rcx], ecx
call [r11]<unknown method>
- ; gcrRegs -[rcx rdx rbx rdi r9]
- ; byrRegs -[rsi]
+ ; gcrRegs -[rcx rdx rbx rsi rdi r9]
+ ; byrRegs -[rbp]
; gcr arg pop 0
nop
- ;; size=37 bbWeight=1 PerfScore 9.75
+ ;; size=40 bbWeight=1 PerfScore 10.00
G_M32425_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 72
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 101, prolog size 20, PerfScore 28.83, instruction count 30, allocated bytes for code 101 (MethodHash=cd3e8156) for method System.Text.Json.Serialization.JsonConverter`1[System.Text.Json.JsonElement]:OnTryWriteAsObject(System.Text.Json.Utf8JsonWriter,System.Object,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
+; Total bytes of code 110, prolog size 28, PerfScore 30.58, instruction count 34, allocated bytes for code 110 (MethodHash=cd3e8156) for method System.Text.Json.Serialization.JsonConverter`1[System.Text.Json.JsonElement]:OnTryWriteAsObject(System.Text.Json.Utf8JsonWriter,System.Object,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -88,12 +89,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: 9 * 8 + 8 = 80 = 0x50
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ 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 (+9.38%) : 199676.dasm - System.Text.Json.Utf8JsonReader:ValueTextEquals(System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
@@ -10,10 +10,10 @@
; Final local variable assignments
;
; V00 this [V00,T01] ( 9, 6 ) byref -> rcx this single-def
-; V01 arg1 [V01,T00] ( 5, 7 ) byref -> rdx single-def
+; V01 arg1 [V01,T00] ( 5, 7 ) byref -> rax single-def
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V03 tmp1 [V03,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V04 tmp2 [V04,T02] ( 3, 5 ) ubyte -> rax "Inlining Arg"
+;* V03 tmp1 [V03,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V04 tmp2 [V04,T02] ( 3, 5 ) ubyte -> rdx "Inlining Arg"
; V05 tmp3 [V05,T03] ( 4, 2.50) ubyte -> rax "Inline return value spill temp"
;* V06 tmp4 [V06 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
;* V07 tmp5 [V07 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
@@ -22,7 +22,6 @@
;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
;* V11 tmp9 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
; V12 tmp10 [V12 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
-; V13 tmp11 [V13,T04] ( 2, 2 ) byref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 56
@@ -30,26 +29,30 @@ G_M11540_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
sub rsp, 56
xor eax, eax
mov qword ptr [rsp+0x28], rax
- ;; size=11 bbWeight=1 PerfScore 1.50
-G_M11540_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
- ; byrRegs +[rcx rdx]
- movzx rax, byte ptr [rcx+0x28]
- cmp eax, 5
+ mov rax, rdx
+ ; byrRegs +[rax]
+ ;; size=14 bbWeight=1 PerfScore 1.75
+G_M11540_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
+ ; byrRegs +[rcx]
+ movzx rdx, byte ptr [rcx+0x28]
+ cmp edx, 5
je SHORT G_M11540_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M11540_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
- cmp eax, 7
+G_M11540_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
+ cmp edx, 7
jne SHORT G_M11540_IG11
;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M11540_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, isz
+G_M11540_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
cmp byte ptr [rcx+0x2D], 0
je SHORT G_M11540_IG08
;; size=6 bbWeight=1 PerfScore 4.00
-G_M11540_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref
+G_M11540_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref
+ mov rdx, rax
+ ; byrRegs +[rdx]
call [<unknown method>]
- ; byrRegs -[rcx rdx]
+ ; byrRegs -[rax rcx rdx]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M11540_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
@@ -57,26 +60,27 @@ G_M11540_IG07: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M11540_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, gcvars, byref, isz
- ; byrRegs +[rcx rdx]
+G_M11540_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, gcvars, byref, isz
+ ; byrRegs +[rax rcx]
cmp byte ptr [rcx+0x2E], 0
je SHORT G_M11540_IG09
+ mov rdx, rax
+ ; byrRegs +[rdx]
call [System.Text.Json.Utf8JsonReader:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte]):ubyte:this]
- ; byrRegs -[rcx rdx]
+ ; byrRegs -[rax rcx rdx]
; gcr arg pop 0
jmp SHORT G_M11540_IG06
- ;; size=14 bbWeight=0.50 PerfScore 4.50
-G_M11540_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0006 {rcx rdx}, byref, nogc
- ; byrRegs +[rcx rdx]
+ ;; size=17 bbWeight=0.50 PerfScore 4.62
+G_M11540_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, nogc
+ ; byrRegs +[rax rcx]
movups xmm0, xmmword ptr [rcx+0x98]
movups xmmword ptr [rsp+0x28], xmm0
;; size=12 bbWeight=0.50 PerfScore 2.50
G_M11540_IG10: ; bbWeight=0.50, isz, extend
- mov rcx, rdx
lea rdx, [rsp+0x28]
- ; byrRegs -[rdx]
+ mov rcx, rax
call [<unknown method>]
- ; byrRegs -[rcx]
+ ; byrRegs -[rax rcx]
; gcr arg pop 0
jmp SHORT G_M11540_IG06
;; size=16 bbWeight=0.50 PerfScore 2.88
@@ -89,7 +93,7 @@ G_M11540_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
int3
;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 96, prolog size 11, PerfScore 22.25, instruction count 27, allocated bytes for code 96 (MethodHash=d075d2eb) for method System.Text.Json.Utf8JsonReader:ValueTextEquals(System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
+; Total bytes of code 105, prolog size 11, PerfScore 22.75, instruction count 30, allocated bytes for code 105 (MethodHash=d075d2eb) for method System.Text.Json.Utf8JsonReader:ValueTextEquals(System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+30 (+12.40%) : 227492.dasm - System.IO.Compression.BrotliStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
@@ -9,21 +9,20 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 15, 29.50) ref -> rbx this class-hnd single-def <System.IO.Compression.BrotliStream>
-; V01 arg1 [V01,T01] ( 4, 21 ) byref -> rsi ld-addr-op single-def
-; V02 loc0 [V02 ] ( 2, 9 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op
-; V03 loc1 [V03,T05] ( 3, 6 ) int -> rax
+; V00 this [V00,T00] ( 16, 42.50) ref -> rbx this class-hnd single-def <System.IO.Compression.BrotliStream>
+; V01 arg1 [V01,T02] ( 5, 15 ) byref -> rsi ld-addr-op single-def
+; V02 loc0 [V02 ] ( 3, 6 ) int -> [rsp+0x38] do-not-enreg[X] addr-exposed ld-addr-op
+; V03 loc1 [V03,T04] ( 3, 12 ) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T07] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V06 tmp2 [V06,T08] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
+; V05 tmp1 [V05,T06] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V06 tmp2 [V06,T07] ( 2, 0 ) ref -> rbx class-hnd single-def "finalizable newobj spill" <<unknown class>>
;* V07 tmp3 [V07 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V08 tmp4 [V08 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
;* V09 tmp5 [V09 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
-; V10 tmp6 [V10 ] ( 2, 32 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
-;* V11 tmp7 [V11,T03] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V12 cse0 [V12,T04] ( 3, 6 ) ref -> rdx "CSE - aggressive"
-; V13 cse1 [V13,T06] ( 3, 6 ) int -> r8 "CSE - aggressive"
-; V14 cse2 [V14,T02] ( 12, 19.50) long -> rdi "CSE - aggressive"
+; V10 tmp6 [V10 ] ( 4, 20 ) struct (16) [rsp+0x28] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
+; V11 cse0 [V11,T03] ( 3, 12 ) ref -> rdx "CSE - aggressive"
+; V12 cse1 [V12,T05] ( 3, 12 ) int -> r8 "CSE - aggressive"
+; V13 cse2 [V13,T01] ( 12, 35.50) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 64
@@ -39,10 +38,10 @@ G_M8344_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rsi, rdx
; byrRegs +[rsi]
;; size=20 bbWeight=1 PerfScore 5.00
-G_M8344_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+G_M8344_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
mov rdi, qword ptr [(reloc)] ; const ptr
cmp dword ptr [rbx+rdi+0x18], 0
- jne G_M8344_IG10
+ jne G_M8344_IG12
xor ecx, ecx
cmp gword ptr [rbx+rdi], 0
sete cl
@@ -51,9 +50,23 @@ G_M8344_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, b
call [<unknown method>]
; gcrRegs -[rdx]
; gcr arg pop 0
- jmp SHORT G_M8344_IG04
- ;; size=39 bbWeight=1 PerfScore 15.50
-G_M8344_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ ;; size=37 bbWeight=1 PerfScore 13.50
+G_M8344_IG03: ; bbWeight=1, nogc, extend
+ movups xmm0, xmmword ptr [rsi]
+ movups xmmword ptr [rsp+0x28], xmm0
+ ;; size=8 bbWeight=1 PerfScore 5.00
+G_M8344_IG04: ; bbWeight=1, isz, extend
+ lea rdx, [rsp+0x28]
+ lea r8, [rsp+0x38]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne SHORT G_M8344_IG10
+ ;; size=23 bbWeight=1 PerfScore 5.50
+G_M8344_IG05: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
mov rdx, gword ptr [rbx+rdi+0x08]
; gcrRegs +[rdx]
mov r9d, dword ptr [rdx+0x08]
@@ -67,62 +80,62 @@ G_M8344_IG03: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, b
; gcrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jle SHORT G_M8344_IG07
+ jle SHORT G_M8344_IG09
mov byte ptr [rbx+rdi+0x20], 1
add dword ptr [rbx+rdi+0x14], eax
- mov eax, dword ptr [rbx+rdi+0x14]
- mov rcx, gword ptr [rbx+rdi+0x08]
- ; gcrRegs +[rcx]
- cmp eax, dword ptr [rcx+0x08]
- jg SHORT G_M8344_IG12
- ;; size=60 bbWeight=2 PerfScore 56.00
-G_M8344_IG04: ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, nogc
- ; gcrRegs -[rcx]
+ mov edx, dword ptr [rbx+rdi+0x14]
+ mov r8, gword ptr [rbx+rdi+0x08]
+ ; gcrRegs +[r8]
+ cmp edx, dword ptr [r8+0x08]
+ jg SHORT G_M8344_IG14
+ ;; size=61 bbWeight=4 PerfScore 112.00
+G_M8344_IG06: ; bbWeight=4, nogc, extend
movups xmm0, xmmword ptr [rsi]
movups xmmword ptr [rsp+0x28], xmm0
- ;; size=8 bbWeight=8 PerfScore 40.00
-G_M8344_IG05: ; bbWeight=8, isz, extend
- mov rcx, rbx
- ; gcrRegs +[rcx]
+ ;; size=8 bbWeight=4 PerfScore 20.00
+G_M8344_IG07: ; bbWeight=4, isz, extend
lea rdx, [rsp+0x28]
lea r8, [rsp+0x38]
+ ; gcrRegs -[r8]
+ mov rcx, rbx
+ ; gcrRegs +[rcx]
call [<unknown method>]
; gcrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- je SHORT G_M8344_IG03
- ;; size=23 bbWeight=8 PerfScore 44.00
-G_M8344_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M8344_IG05
+ ;; size=23 bbWeight=4 PerfScore 22.00
+G_M8344_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
; byrRegs -[rsi]
- jmp SHORT G_M8344_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M8344_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
+ jmp SHORT G_M8344_IG10
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M8344_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
; gcrRegs +[rbx]
; byrRegs +[rsi]
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE]
; byrRegs +[rax]
; gcr arg pop 0
cmp byte ptr [rax+0x43], 0
- je SHORT G_M8344_IG08
+ je SHORT G_M8344_IG10
cmp byte ptr [rbx+rdi+0x20], 0
- je SHORT G_M8344_IG08
+ je SHORT G_M8344_IG10
cmp dword ptr [rsi+0x08], 0
- jne SHORT G_M8344_IG11
+ jne SHORT G_M8344_IG13
;; size=25 bbWeight=0.50 PerfScore 7.50
-G_M8344_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8344_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
; byrRegs -[rax rsi]
mov eax, dword ptr [rsp+0x38]
;; size=4 bbWeight=1 PerfScore 1.00
-G_M8344_IG09: ; bbWeight=1, epilog, nogc, extend
+G_M8344_IG11: ; bbWeight=1, epilog, nogc, extend
add rsp, 64
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1 PerfScore 2.75
-G_M8344_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M8344_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -145,18 +158,18 @@ G_M8344_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
; gcrRegs -[rcx rsi]
; gcr arg pop 0
;; size=39 bbWeight=0 PerfScore 0.00
-G_M8344_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8344_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.IO.Compression.BrotliStream:ThrowTruncatedInvalidData()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M8344_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M8344_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.IO.Compression.BrotliStream:ThrowInvalidStream()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 242, prolog size 14, PerfScore 173.75, instruction count 68, allocated bytes for code 242 (MethodHash=be50df67) for method System.IO.Compression.BrotliStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
+; Total bytes of code 272, prolog size 14, PerfScore 195.25, instruction count 75, allocated bytes for code 272 (MethodHash=be50df67) for method System.IO.Compression.BrotliStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-17 (-22.37%) : 180665.dasm - Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary
2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)@@ -12,43 +12,36 @@
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V03 tmp1 [V03,T02] ( 0, 0 ) ubyte -> zero-ref single-def "field V01.hasValue (fldOffset=0x0)" P-INDEP
;* V04 tmp2 [V04,T03] ( 0, 0 ) int -> zero-ref single-def "field V01.value (fldOffset=0x4)" P-INDEP
-; V05 tmp3 [V05,T01] ( 3, 3 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; TEMP_01 byref -> [rsp+0x28]
+; V05 tmp3 [V05,T01] ( 3, 3 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
;
; Lcl frame size = 48
G_M37632_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
sub rsp, 48
- xor eax, eax
- mov qword ptr [rsp+0x28], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=15 bbWeight=1 PerfScore 2.75
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M37632_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x20], 0
jne SHORT G_M37632_IG04
;; size=7 bbWeight=1 PerfScore 4.00
G_M37632_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rcx, bword ptr [rbx+0x20]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x28], rcx
- mov byte ptr [rsp+0x20], 0
- xor eax, eax
- mov dword ptr [rsp+0x24], eax
- mov rcx, qword ptr [rsp+0x20]
- ; byrRegs -[rcx]
+ mov byte ptr [rsp+0x28], 0
+ xor ecx, ecx
+ mov dword ptr [rsp+0x2C], ecx
+ mov rcx, qword ptr [rsp+0x28]
call [Microsoft.Build.Execution.TaskRegistry:CreateRegisteredTaskDictionary(System.Nullable`1[int]):System.Collections.Generic.Dictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x28]
+ lea rcx, bword ptr [rbx+0x20]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- ;; size=44 bbWeight=0.50 PerfScore 5.00
+ ;; size=34 bbWeight=0.50 PerfScore 4.00
G_M37632_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rbx+0x20]
; gcrRegs +[rax]
@@ -59,7 +52,7 @@ G_M37632_IG05: ; bbWeight=1, epilog, nogc, extend
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 76, prolog size 12, PerfScore 15.50, instruction count 21, allocated bytes for code 76 (MethodHash=bcd16cff) for method Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)
+; Total bytes of code 59, prolog size 5, PerfScore 13.25, instruction count 17, allocated bytes for code 59 (MethodHash=bcd16cff) for method Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)
; ============================================================
Unwind Info:
-20 (-20.83%) : 222255.dasm - System.DirectoryServices.ActiveDirectory.ReplicationCursor:get_SourceServer():System.String:this (FullOpts)
@@ -12,21 +12,18 @@
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
;* V03 tmp2 [V03 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Guid>
-; V04 tmp3 [V04 ] ( 2, 2 ) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Guid>
-; V05 tmp4 [V05,T01] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
-; TEMP_01 byref -> [rsp+0x38]
+; V04 tmp3 [V04 ] ( 2, 2 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Guid>
+; V05 tmp4 [V05,T01] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M8631_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 64
+ sub rsp, 48
vzeroupper
- xor eax, eax
- mov qword ptr [rsp+0x38], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=18 bbWeight=1 PerfScore 3.75
+ ;; size=11 bbWeight=1 PerfScore 2.50
G_M8631_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x30], 0
je SHORT G_M8631_IG04
@@ -36,42 +33,35 @@ G_M8631_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
je SHORT G_M8631_IG05
;; size=7 bbWeight=0.50 PerfScore 2.00
G_M8631_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- lea rcx, bword ptr [rbx+0x10]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x38], rcx
- mov rdx, gword ptr [rbx+0x08]
- ; gcrRegs +[rdx]
- vmovups xmm0, xmmword ptr [rbx+0x40]
- vmovups xmmword ptr [rsp+0x28], xmm0
- mov rcx, rdx
+ mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- lea rdx, [rsp+0x28]
- ; gcrRegs -[rdx]
+ vmovups xmm0, xmmword ptr [rbx+0x40]
+ vmovups xmmword ptr [rsp+0x20], xmm0
+ lea rdx, [rsp+0x20]
mov r8, gword ptr [rbx+0x18]
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[rcx r8] +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x38]
+ lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- ;; size=55 bbWeight=0.50 PerfScore 8.25
+ ;; size=42 bbWeight=0.50 PerfScore 7.12
G_M8631_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
;; size=4 bbWeight=1 PerfScore 2.00
G_M8631_IG06: ; bbWeight=1, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbx
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 96, prolog size 15, PerfScore 21.75, instruction count 26, allocated bytes for code 96 (MethodHash=9422de48) for method System.DirectoryServices.ActiveDirectory.ReplicationCursor:get_SourceServer():System.String:this (FullOpts)
+; Total bytes of code 76, prolog size 8, PerfScore 19.38, instruction count 21, allocated bytes for code 76 (MethodHash=9422de48) for method System.DirectoryServices.ActiveDirectory.ReplicationCursor:get_SourceServer():System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -84,5 +74,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-15 (-20.55%) : 293786.dasm - System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
@@ -7,59 +7,52 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Net.Quic.QuicConnection>
+; V00 this [V00,T01] ( 3, 3 ) ref -> rbx this class-hnd single-def <System.Net.Quic.QuicConnection>
; V01 arg1 [V01,T02] ( 3, 3 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rdx "impAppendStmt"
-;* V05 tmp2 [V05,T05] ( 0, 0 ) ubyte -> zero-ref "field V02.hasValue (fldOffset=0x0)" P-INDEP
-;* V06 tmp3 [V06,T06] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x4)" P-INDEP
+; V04 tmp1 [V04,T03] ( 2, 4 ) long -> rcx "impAppendStmt"
+;* V05 tmp2 [V05,T04] ( 0, 0 ) ubyte -> zero-ref "field V02.hasValue (fldOffset=0x0)" P-INDEP
+;* V06 tmp3 [V06,T05] ( 0, 0 ) int -> zero-ref "field V02.value (fldOffset=0x4)" P-INDEP
; V07 tmp4 [V07,T00] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V08 tmp5 [V08,T04] ( 2, 4 ) long -> rdx "argument with side effect"
-; TEMP_01 byref -> [rsp+0x30]
;
-; Lcl frame size = 56
+; Lcl frame size = 48
G_M54883_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x30], rax
- ;; size=11 bbWeight=1 PerfScore 1.50
-G_M54883_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0004 {rdx}, byref
- ; gcrRegs +[rcx]
+ push rbx
+ sub rsp, 48
+ mov rbx, rcx
+ ; gcrRegs +[rbx]
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M54883_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx}, byref
; byrRegs +[rdx]
- mov rdx, qword ptr [rdx]
- ; byrRegs -[rdx]
- lea rcx, bword ptr [rcx+0x40]
- ; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
+ mov rcx, qword ptr [rdx]
mov byte ptr [rsp+0x28], 0
- xor eax, eax
- mov dword ptr [rsp+0x2C], eax
- mov rcx, rdx
- ; byrRegs -[rcx]
+ xor edx, edx
+ ; byrRegs -[rdx]
+ mov dword ptr [rsp+0x2C], edx
mov rdx, qword ptr [rsp+0x28]
call [System.Net.Quic.MsQuicHelpers:QuicAddrToIPEndPoint(ulong,System.Nullable`1[int]):System.Net.IPEndPoint]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x30]
+ lea rcx, bword ptr [rbx+0x40]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
call [Microsoft.Quic.MsQuic:get_QUIC_STATUS_SUCCESS():int]
; gcr arg pop 0
nop
- ;; size=57 bbWeight=1 PerfScore 15.50
+ ;; size=44 bbWeight=1 PerfScore 13.25
G_M54883_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ add rsp, 48
+ pop rbx
ret
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 73, prolog size 11, PerfScore 18.25, instruction count 19, allocated bytes for code 73 (MethodHash=81ce299c) for method System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
+; Total bytes of code 58, prolog size 5, PerfScore 16.50, instruction count 17, allocated bytes for code 58 (MethodHash=81ce299c) for method System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
; ============================================================
Unwind Info:
@@ -67,9 +60,10 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x05
+ CountOfUnwindCodes: 2
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 5 * 8 + 8 = 48 = 0x30
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+16 (+8.00%) : 244900.dasm - System.Security.Cryptography.Pbkdf2Implementation:FillDeriveKeyPBKDF2(System.ReadOnlySpan
1[ubyte],System.ReadOnlySpan1[ubyte],int,System.String,System.Span`1[ubyte]) (FullOpts)@@ -13,7 +13,7 @@
; V02 arg2 [V02,T06] ( 3, 3 ) int -> rdi single-def
; V03 arg3 [V03,T05] ( 3, 3 ) ref -> r9 class-hnd single-def <System.String>
; V04 arg4 [V04,T07] ( 2, 4 ) byref -> r14 ld-addr-op single-def
-; V05 loc0 [V05,T22] ( 2, 2 ) ref -> rcx class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeBCryptAlgorithmHandle>
+; V05 loc0 [V05,T18] ( 2, 2 ) ref -> rcx class-hnd exact single-def <Microsoft.Win32.SafeHandles.SafeBCryptAlgorithmHandle>
; V06 loc1 [V06 ] ( 1, 1 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op
;* V07 loc2 [V07 ] ( 0, 0 ) long -> zero-ref
; V08 loc3 [V08 ] ( 2, 2 ) byref -> [rbp-0x30] must-init pinned
@@ -21,14 +21,14 @@
; V10 loc5 [V10 ] ( 2, 2 ) byref -> [rbp-0x38] must-init pinned
;* V11 loc6 [V11 ] ( 0, 0 ) long -> zero-ref
; V12 loc7 [V12 ] ( 2, 2 ) byref -> [rbp-0x40] must-init pinned
-; V13 loc8 [V13,T21] ( 3, 2 ) int -> rax
+; V13 loc8 [V13,T17] ( 3, 2 ) int -> rax
; V14 OutArgs [V14 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V15 tmp1 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V16 tmp2 [V16,T02] ( 5, 5 ) byref -> rdx "Inline stloc first use temp"
+; V16 tmp2 [V16,T02] ( 5, 5 ) byref -> r8 "Inline stloc first use temp"
;* V17 tmp3 [V17 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V18 tmp4 [V18,T03] ( 5, 5 ) byref -> r9 "Inline stloc first use temp"
+; V18 tmp4 [V18,T03] ( 5, 5 ) byref -> r8 "Inline stloc first use temp"
;* V19 tmp5 [V19 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V20 tmp6 [V20,T04] ( 5, 5 ) byref -> r10 "Inline stloc first use temp"
+; V20 tmp6 [V20,T04] ( 5, 5 ) byref -> r8 "Inline stloc first use temp"
;* V21 tmp7 [V21 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V22 tmp8 [V22 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
;* V23 tmp9 [V23 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
@@ -38,19 +38,15 @@
;* V27 tmp13 [V27 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp14 [V28 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp15 [V29 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ubyte]>
-; V30 tmp16 [V30,T09] ( 2, 4 ) long -> rdx "Cast away GC"
-; V31 tmp17 [V31,T10] ( 2, 4 ) long -> r9 "Cast away GC"
-; V32 tmp18 [V32,T11] ( 2, 4 ) long -> r10 "Cast away GC"
-; V33 tmp19 [V33,T08] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V34 tmp20 [V34,T12] ( 2, 4 ) long -> rdx "argument with side effect"
-; V35 tmp21 [V35,T13] ( 2, 4 ) int -> r8 "argument with side effect"
-; V36 tmp22 [V36,T14] ( 2, 4 ) long -> r9 "argument with side effect"
-; V37 tmp23 [V37,T15] ( 2, 4 ) int -> rax "argument with side effect"
-; V38 tmp24 [V38,T16] ( 2, 4 ) long -> rbx "argument with side effect"
-; V39 tmp25 [V39,T17] ( 2, 4 ) long -> r10 "argument with side effect"
-; V40 cse0 [V40,T18] ( 3, 3 ) int -> r8 "CSE - moderate"
-; V41 cse1 [V41,T19] ( 3, 3 ) int -> rax "CSE - moderate"
-; V42 cse2 [V42,T20] ( 3, 3 ) int -> r11 "CSE - moderate"
+; V30 tmp16 [V30,T08] ( 2, 4 ) long -> rdx "Cast away GC"
+; V31 tmp17 [V31,T09] ( 2, 4 ) long -> r10 "Cast away GC"
+; V32 tmp18 [V32,T10] ( 2, 4 ) long -> rbx "Cast away GC"
+; V33 tmp19 [V33,T11] ( 2, 4 ) int -> r9 "argument with side effect"
+; V34 tmp20 [V34,T12] ( 2, 4 ) int -> rax "argument with side effect"
+; V35 tmp21 [V35,T13] ( 2, 4 ) long -> rbx "argument with side effect"
+; V36 cse0 [V36,T14] ( 3, 3 ) int -> r9 "CSE - moderate"
+; V37 cse1 [V37,T15] ( 3, 3 ) int -> rax "CSE - moderate"
+; V38 cse2 [V38,T16] ( 3, 3 ) int -> r11 "CSE - moderate"
;
; Lcl frame size = 112
@@ -84,41 +80,45 @@ G_M15787_IG02: ; bbWeight=1, gcrefRegs=0200 {r9}, byrefRegs=4048 {rbx rsi
; gcrRegs -[rcx r9] +[rax]
mov rcx, rax
; gcrRegs +[rcx]
- xor rdx, rdx
- ; byrRegs +[rdx]
- mov r8d, dword ptr [rbx+0x08]
- test r8d, r8d
- cmovne rdx, bword ptr [rbx]
- mov bword ptr [rbp-0x30], rdx
- xor r9, r9
- ; byrRegs +[r9]
+ xor r8, r8
+ ; byrRegs +[r8]
+ mov r9d, dword ptr [rbx+0x08]
+ test r9d, r9d
+ cmovne r8, bword ptr [rbx]
+ mov bword ptr [rbp-0x30], r8
+ mov rdx, r8
+ xor r8, r8
mov eax, dword ptr [rsi+0x08]
; gcrRegs -[rax]
test eax, eax
- cmovne r9, bword ptr [rsi]
- mov bword ptr [rbp-0x38], r9
- xor r10, r10
- ; byrRegs +[r10]
+ cmovne r8, bword ptr [rsi]
+ mov bword ptr [rbp-0x38], r8
+ mov r10, r8
+ xor r8, r8
mov r11d, dword ptr [r14+0x08]
test r11d, r11d
- cmovne r10, bword ptr [r14]
- mov bword ptr [rbp-0x40], r10
+ cmovne r8, bword ptr [r14]
+ mov bword ptr [rbp-0x40], r8
movsxd rbx, edi
; byrRegs -[rbx]
- mov dword ptr [rsp+0x38], r11d
- xor r11d, r11d
- mov dword ptr [rsp+0x40], r11d
- mov dword ptr [rsp+0x20], eax
mov qword ptr [rsp+0x28], rbx
- mov qword ptr [rsp+0x30], r10
+ mov rbx, r8
+ mov dword ptr [rsp+0x38], r11d
+ xor r8d, r8d
+ ; byrRegs -[r8]
+ mov dword ptr [rsp+0x40], r8d
+ mov r8d, r9d
+ mov dword ptr [rsp+0x20], eax
+ mov qword ptr [rsp+0x30], rbx
+ mov r9, r10
call [<unknown method>]
; gcrRegs -[rcx]
- ; byrRegs -[rdx rsi r9-r10 r14]
+ ; byrRegs -[rsi r14]
test eax, eax
jne SHORT G_M15787_IG06
xor eax, eax
mov bword ptr [rbp-0x40], rax
- ;; size=118 bbWeight=1 PerfScore 34.75
+ ;; size=134 bbWeight=1 PerfScore 36.00
G_M15787_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov bword ptr [rbp-0x38], rax
;; size=4 bbWeight=1 PerfScore 1.00
@@ -145,7 +145,7 @@ G_M15787_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=17 bbWeight=0 PerfScore 0.00
-; Total bytes of code 200, prolog size 33, PerfScore 51.58, instruction count 61, allocated bytes for code 200 (MethodHash=072dc254) for method System.Security.Cryptography.Pbkdf2Implementation:FillDeriveKeyPBKDF2(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,System.String,System.Span`1[ubyte]) (FullOpts)
+; Total bytes of code 216, prolog size 33, PerfScore 52.83, instruction count 66, allocated bytes for code 216 (MethodHash=072dc254) for method System.Security.Cryptography.Pbkdf2Implementation:FillDeriveKeyPBKDF2(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,System.String,System.Span`1[ubyte]) (FullOpts)
; ============================================================
Unwind Info:
+11 (+8.33%) : 24612.dasm - System.MemoryExtensions:TryWritelong:ubyte (FullOpts)
@@ -12,33 +12,29 @@
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T01] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Text.CompositeFormat>
; V03 arg3 [V03,T03] ( 3, 3 ) byref -> r14 single-def
-; V04 arg4 [V04,T10] ( 1, 1 ) long -> [rbp+0x30] single-def
+; V04 arg4 [V04,T05] ( 1, 1 ) long -> [rbp+0x30] single-def
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.Object]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V10 tmp4 [V10,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T04] ( 2, 2 ) byref -> rdx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V10 tmp4 [V10,T06] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ushort]>
-; V12 tmp6 [V12 ] ( 3, 6 ) struct (16) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.Object]>
-; V13 tmp7 [V13,T04] ( 2, 4 ) byref -> rbx single-def "argument with side effect"
-; V14 tmp8 [V14,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V15 tmp9 [V15,T06] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V16 tmp10 [V16,T07] ( 2, 4 ) byref -> r9 single-def "argument with side effect"
-; V17 tmp11 [V17,T08] ( 2, 4 ) long -> rsi "argument with side effect"
+; V12 tmp6 [V12 ] ( 3, 6 ) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.Object]>
;
-; Lcl frame size = 80
+; Lcl frame size = 88
G_M5587_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 80
- lea rbp, [rsp+0x70]
+ sub rsp, 88
+ lea rbp, [rsp+0x80]
xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x38], rax
mov rbx, rcx
; byrRegs +[rbx]
mov rdi, rdx
@@ -47,7 +43,7 @@ G_M5587_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov r14, r9
; byrRegs +[r14]
- ;; size=33 bbWeight=1 PerfScore 8.00
+ ;; size=38 bbWeight=1 PerfScore 9.00
G_M5587_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4008 {rbx r14}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
@@ -57,53 +53,51 @@ G_M5587_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4008 {rbx
; gcrRegs -[rcx rdx]
cmp dword ptr [rsi+0x20], 1
jg SHORT G_M5587_IG06
- xor rcx, rcx
- ; byrRegs +[rcx]
+ xor rdx, rdx
+ ; byrRegs +[rdx]
+ mov r15, qword ptr [rbp+0x30]
+ mov qword ptr [rsp+0x20], r15
+ xor r8d, r8d
+ mov dword ptr [rsp+0x28], r8d
+ ;; size=44 bbWeight=1 PerfScore 11.00
+G_M5587_IG03: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=400C {rdx rbx r14}, byref
+ mov dword ptr [rsp+0x30], r8d
+ mov bword ptr [rbp-0x38], rdx
+ ;; size=9 bbWeight=1 PerfScore 2.00
+G_M5587_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4008 {rbx r14}, byref
+ ; byrRegs -[rdx]
+ mov dword ptr [rbp-0x30], r8d
+ lea rdx, [rbp-0x38]
+ mov qword ptr [rsp+0x38], rdx
mov rdx, rdi
; gcrRegs +[rdx]
mov r8, rsi
; gcrRegs +[r8]
mov r9, r14
; byrRegs +[r9]
- mov rsi, qword ptr [rbp+0x30]
- ; gcrRegs -[rsi]
- xor eax, eax
- mov dword ptr [rsp+0x28], eax
- ;; size=46 bbWeight=1 PerfScore 10.75
-G_M5587_IG03: ; bbWeight=1, gcrefRegs=0104 {rdx r8}, byrefRegs=020A {rcx rbx r9}, byref
- ; gcrRegs -[rdi]
- ; byrRegs -[r14]
- mov dword ptr [rsp+0x30], eax
- mov bword ptr [rbp-0x30], rcx
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M5587_IG04: ; bbWeight=1, gcrefRegs=0104 {rdx r8}, byrefRegs=0208 {rbx r9}, byref
- ; byrRegs -[rcx]
- mov dword ptr [rbp-0x28], eax
mov rcx, rbx
; byrRegs +[rcx]
- mov qword ptr [rsp+0x20], rsi
- lea rax, [rbp-0x30]
- mov qword ptr [rsp+0x38], rax
call [<unknown method>]
- ; gcrRegs -[rdx r8]
- ; byrRegs -[rcx rbx r9]
+ ; gcrRegs -[rdx rsi rdi r8]
+ ; byrRegs -[rcx rbx r9 r14]
nop
- ;; size=27 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.75
G_M5587_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 88
pop rbx
pop rsi
pop rdi
pop r14
+ pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 4.25
G_M5587_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowFormatIndexOutOfRange()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 132, prolog size 21, PerfScore 31.50, instruction count 43, allocated bytes for code 132 (MethodHash=4e0bea2c) for method System.MemoryExtensions:TryWrite[long](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,long):ubyte (FullOpts)
+; Total bytes of code 143, prolog size 26, PerfScore 33.00, instruction count 45, allocated bytes for code 143 (MethodHash=4e0bea2c) for method System.MemoryExtensions:TryWrite[long](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,long):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -111,14 +105,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ 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 (+10.00%) : 24609.dasm - System.MemoryExtensions:TryWriteint:ubyte (FullOpts)
@@ -12,33 +12,29 @@
; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdi class-hnd single-def <System.IFormatProvider>
; V02 arg2 [V02,T01] ( 5, 5 ) ref -> rsi class-hnd single-def <System.Text.CompositeFormat>
; V03 arg3 [V03,T03] ( 3, 3 ) byref -> r14 single-def
-; V04 arg4 [V04,T10] ( 1, 1 ) int -> [rbp+0x30] single-def
+; V04 arg4 [V04,T05] ( 1, 1 ) int -> [rbp+0x30] single-def
;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[System.Object]>
; V06 OutArgs [V06 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) byref -> zero-ref "field V00._reference (fldOffset=0x0)" P-INDEP
;* V08 tmp2 [V08 ] ( 0, 0 ) int -> zero-ref "field V00._length (fldOffset=0x8)" P-INDEP
-; V09 tmp3 [V09,T09] ( 2, 2 ) byref -> rcx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V10 tmp4 [V10,T11] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
+; V09 tmp3 [V09,T04] ( 2, 2 ) byref -> rdx single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V10 tmp4 [V10,T06] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP
;* V11 tmp5 [V11 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[ushort]>
-; V12 tmp6 [V12 ] ( 3, 6 ) struct (16) [rbp-0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.Object]>
-; V13 tmp7 [V13,T04] ( 2, 4 ) byref -> rbx single-def "argument with side effect"
-; V14 tmp8 [V14,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; V15 tmp9 [V15,T06] ( 2, 4 ) ref -> r8 single-def "argument with side effect"
-; V16 tmp10 [V16,T07] ( 2, 4 ) byref -> r9 single-def "argument with side effect"
-; V17 tmp11 [V17,T08] ( 2, 4 ) int -> rsi "argument with side effect"
+; V12 tmp6 [V12 ] ( 3, 6 ) struct (16) [rbp-0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[System.Object]>
;
-; Lcl frame size = 80
+; Lcl frame size = 88
G_M7379_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
+ push r15
push r14
push rdi
push rsi
push rbx
- sub rsp, 80
- lea rbp, [rsp+0x70]
+ sub rsp, 88
+ lea rbp, [rsp+0x80]
xor eax, eax
- mov qword ptr [rbp-0x30], rax
+ mov qword ptr [rbp-0x38], rax
mov rbx, rcx
; byrRegs +[rbx]
mov rdi, rdx
@@ -47,7 +43,7 @@ G_M7379_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rsi]
mov r14, r9
; byrRegs +[r14]
- ;; size=33 bbWeight=1 PerfScore 8.00
+ ;; size=38 bbWeight=1 PerfScore 9.00
G_M7379_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4008 {rbx r14}, byref, isz
mov rcx, rsi
; gcrRegs +[rcx]
@@ -57,53 +53,51 @@ G_M7379_IG02: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4008 {rbx
; gcrRegs -[rcx rdx]
cmp dword ptr [rsi+0x20], 1
jg SHORT G_M7379_IG06
- xor rcx, rcx
- ; byrRegs +[rcx]
+ xor rdx, rdx
+ ; byrRegs +[rdx]
+ mov r15d, dword ptr [rbp+0x30]
+ mov dword ptr [rsp+0x20], r15d
+ xor r8d, r8d
+ mov dword ptr [rsp+0x28], r8d
+ ;; size=44 bbWeight=1 PerfScore 11.00
+G_M7379_IG03: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=400C {rdx rbx r14}, byref
+ mov dword ptr [rsp+0x30], r8d
+ mov bword ptr [rbp-0x38], rdx
+ ;; size=9 bbWeight=1 PerfScore 2.00
+G_M7379_IG04: ; bbWeight=1, gcrefRegs=00C0 {rsi rdi}, byrefRegs=4008 {rbx r14}, byref
+ ; byrRegs -[rdx]
+ mov dword ptr [rbp-0x30], r8d
+ lea rdx, [rbp-0x38]
+ mov qword ptr [rsp+0x38], rdx
mov rdx, rdi
; gcrRegs +[rdx]
mov r8, rsi
; gcrRegs +[r8]
mov r9, r14
; byrRegs +[r9]
- mov esi, dword ptr [rbp+0x30]
- ; gcrRegs -[rsi]
- xor eax, eax
- mov dword ptr [rsp+0x28], eax
- ;; size=45 bbWeight=1 PerfScore 10.75
-G_M7379_IG03: ; bbWeight=1, gcrefRegs=0104 {rdx r8}, byrefRegs=020A {rcx rbx r9}, byref
- ; gcrRegs -[rdi]
- ; byrRegs -[r14]
- mov dword ptr [rsp+0x30], eax
- mov bword ptr [rbp-0x30], rcx
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M7379_IG04: ; bbWeight=1, gcrefRegs=0104 {rdx r8}, byrefRegs=0208 {rbx r9}, byref
- ; byrRegs -[rcx]
- mov dword ptr [rbp-0x28], eax
mov rcx, rbx
; byrRegs +[rcx]
- mov dword ptr [rsp+0x20], esi
- lea rax, [rbp-0x30]
- mov qword ptr [rsp+0x38], rax
call [<unknown method>]
- ; gcrRegs -[rdx r8]
- ; byrRegs -[rcx rbx r9]
+ ; gcrRegs -[rdx rsi rdi r8]
+ ; byrRegs -[rcx rbx r9 r14]
nop
- ;; size=26 bbWeight=1 PerfScore 7.00
+ ;; size=32 bbWeight=1 PerfScore 6.75
G_M7379_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 80
+ add rsp, 88
pop rbx
pop rsi
pop rdi
pop r14
+ pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.75
+ ;; size=13 bbWeight=1 PerfScore 4.25
G_M7379_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call [System.ThrowHelper:ThrowFormatIndexOutOfRange()]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 130, prolog size 21, PerfScore 31.50, instruction count 43, allocated bytes for code 130 (MethodHash=e4e8e32c) for method System.MemoryExtensions:TryWrite[int](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,int):ubyte (FullOpts)
+; Total bytes of code 143, prolog size 26, PerfScore 33.00, instruction count 45, allocated bytes for code 143 (MethodHash=e4e8e32c) for method System.MemoryExtensions:TryWrite[int](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,int):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -111,14 +105,15 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
- CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
- CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ 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)
libraries_tests.run.windows.x64.Release.mch
-41 (-30.60%) : 534640.dasm - System.ServiceModel.Syndication.SyndicationItem:.ctor(System.String,System.String,System.Uri):this (Tier0)
@@ -11,62 +11,48 @@
; V03 arg3 [V03 ] ( 1, 1 ) ref -> [rbp+0x28] do-not-enreg[] class-hnd <System.Uri>
; V04 OutArgs [V04 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.DateTimeOffset>
-; V06 tmp2 [V06 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V07 tmp3 [V07 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp4 [V08 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp5 [V09 ] ( 1, 1 ) ref -> [rbp-0x30] do-not-enreg[] must-init "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 64
G_M9968_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 96
+ sub rsp, 64
vzeroupper
- lea rbp, [rsp+0x60]
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x30], ymm4
+ lea rbp, [rsp+0x40]
mov gword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
mov gword ptr [rbp+0x28], r9
- ;; size=38 bbWeight=1 PerfScore 9.08
+ ;; size=29 bbWeight=1 PerfScore 6.75
G_M9968_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ xor rdx, rdx
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x20], rdx
+ mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ ; gcrRegs -[rdx]
+ vmovups xmm0, xmmword ptr [rdx]
+ vmovups xmmword ptr [rbp-0x10], xmm0
+ lea rdx, [rbp-0x10]
+ mov qword ptr [rsp+0x28], rdx
+ mov rdx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rdx]
+ mov r8, gword ptr [rbp+0x20]
+ ; gcrRegs +[r8]
+ mov r9, gword ptr [rbp+0x28]
+ ; gcrRegs +[r9]
mov rcx, gword ptr [rbp+0x10]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x18], rcx
- mov rcx, gword ptr [rbp+0x18]
- mov gword ptr [rbp-0x20], rcx
- mov rcx, gword ptr [rbp+0x20]
- mov gword ptr [rbp-0x28], rcx
- mov rcx, gword ptr [rbp+0x28]
- mov gword ptr [rbp-0x30], rcx
- xor rcx, rcx
- mov gword ptr [rsp+0x20], rcx
- mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- ; gcrRegs -[rcx]
- vmovups xmm0, xmmword ptr [rcx]
- vmovups xmmword ptr [rbp-0x10], xmm0
- mov rcx, gword ptr [rbp-0x18]
- ; gcrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x20]
- ; gcrRegs +[rdx]
- mov r8, gword ptr [rbp-0x28]
- ; gcrRegs +[r8]
- mov r9, gword ptr [rbp-0x30]
- ; gcrRegs +[r9]
- lea rax, [rbp-0x10]
- mov qword ptr [rsp+0x28], rax
call [<unknown method>]
; gcrRegs -[rcx rdx r8-r9]
nop
- ;; size=90 bbWeight=1 PerfScore 23.25
+ ;; size=58 bbWeight=1 PerfScore 15.25
G_M9968_IG03: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 134, prolog size 22, PerfScore 34.08, instruction count 34, allocated bytes for code 134 (MethodHash=6336d90f) for method System.ServiceModel.Syndication.SyndicationItem:.ctor(System.String,System.String,System.Uri):this (Tier0)
+; Total bytes of code 93, prolog size 13, PerfScore 23.75, instruction count 24, allocated bytes for code 93 (MethodHash=6336d90f) for method System.ServiceModel.Syndication.SyndicationItem:.ctor(System.String,System.String,System.Uri):this (Tier0)
; ============================================================
Unwind Info:
@@ -79,5 +65,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-39 (-30.00%) : 371800.dasm - System.Net.Test.Common.HPackEncoder:EncodeHeader(System.String,System.String,System.Text.Encoding,int,System.Span`1[ubyte]):int (Tier0)
@@ -12,41 +12,27 @@
; V04 arg4 [V04 ] ( 1, 1 ) byref -> [rbp+0x30] do-not-enreg[]
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) int -> [rbp-0x2C] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 64
G_M9330_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 96
+ sub rsp, 64
vzeroupper
- lea rbp, [rsp+0x60]
+ lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x20], ymm4
+ mov qword ptr [rbp-0x10], rax
mov gword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
mov dword ptr [rbp+0x28], r9d
- ;; size=44 bbWeight=1 PerfScore 10.33
+ ;; size=35 bbWeight=1 PerfScore 8.00
G_M9330_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdx, gword ptr [rbp+0x10]
- ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x18], rdx
- mov rdx, gword ptr [rbp+0x18]
- mov gword ptr [rbp-0x20], rdx
- mov rdx, gword ptr [rbp+0x20]
- mov gword ptr [rbp-0x28], rdx
mov edx, dword ptr [rbp+0x28]
- ; gcrRegs -[rdx]
- mov dword ptr [rbp-0x2C], edx
+ mov dword ptr [rsp+0x20], edx
mov rdx, bword ptr [rbp+0x30]
; byrRegs +[rdx]
- ;; size=34 bbWeight=1 PerfScore 9.00
+ ;; size=11 bbWeight=1 PerfScore 3.00
G_M9330_IG03: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp-0x10], xmm0
@@ -55,26 +41,24 @@ G_M9330_IG04: ; bbWeight=1, extend
lea rdx, [rbp-0x10]
; byrRegs -[rdx]
mov qword ptr [rsp+0x28], rdx
- mov rdx, gword ptr [rbp-0x18]
+ mov rdx, gword ptr [rbp+0x10]
; gcrRegs +[rdx]
- mov r8, gword ptr [rbp-0x20]
+ mov r8, gword ptr [rbp+0x18]
; gcrRegs +[r8]
- mov r9, gword ptr [rbp-0x28]
+ mov r9, gword ptr [rbp+0x20]
; gcrRegs +[r9]
- mov ecx, dword ptr [rbp-0x2C]
- mov dword ptr [rsp+0x20], ecx
xor ecx, ecx
call [<unknown method>]
; gcrRegs -[rdx r8-r9]
nop
- ;; size=37 bbWeight=1 PerfScore 10.00
+ ;; size=30 bbWeight=1 PerfScore 8.00
G_M9330_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 130, prolog size 28, PerfScore 36.08, instruction count 36, allocated bytes for code 130 (MethodHash=ce38db8d) for method System.Net.Test.Common.HPackEncoder:EncodeHeader(System.String,System.String,System.Text.Encoding,int,System.Span`1[ubyte]):int (Tier0)
+; Total bytes of code 91, prolog size 19, PerfScore 25.75, instruction count 26, allocated bytes for code 91 (MethodHash=ce38db8d) for method System.Net.Test.Common.HPackEncoder:EncodeHeader(System.String,System.String,System.Text.Encoding,int,System.Span`1[ubyte]):int (Tier0)
; ============================================================
Unwind Info:
@@ -87,5 +71,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-39 (-30.00%) : 395156.dasm - System.Net.Test.Common.HPackEncoder:EncodeHeader(System.String,System.String,System.Text.Encoding,int,System.Span`1[ubyte]):int (Tier0)
@@ -12,41 +12,27 @@
; V04 arg4 [V04 ] ( 1, 1 ) byref -> [rbp+0x30] do-not-enreg[]
; V05 OutArgs [V05 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V06 tmp1 [V06 ] ( 1, 1 ) struct (16) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Span`1[ubyte]>
-; V07 tmp2 [V07 ] ( 1, 1 ) ref -> [rbp-0x18] do-not-enreg[] must-init "argument with side effect"
-; V08 tmp3 [V08 ] ( 1, 1 ) ref -> [rbp-0x20] do-not-enreg[] must-init "argument with side effect"
-; V09 tmp4 [V09 ] ( 1, 1 ) ref -> [rbp-0x28] do-not-enreg[] must-init "argument with side effect"
-; V10 tmp5 [V10 ] ( 1, 1 ) int -> [rbp-0x2C] do-not-enreg[] "argument with side effect"
;
-; Lcl frame size = 96
+; Lcl frame size = 64
G_M9330_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- sub rsp, 96
+ sub rsp, 64
vzeroupper
- lea rbp, [rsp+0x60]
+ lea rbp, [rsp+0x40]
xor eax, eax
- mov qword ptr [rbp-0x28], rax
- vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x20], ymm4
+ mov qword ptr [rbp-0x10], rax
mov gword ptr [rbp+0x10], rcx
mov gword ptr [rbp+0x18], rdx
mov gword ptr [rbp+0x20], r8
mov dword ptr [rbp+0x28], r9d
- ;; size=44 bbWeight=1 PerfScore 10.33
+ ;; size=35 bbWeight=1 PerfScore 8.00
G_M9330_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdx, gword ptr [rbp+0x10]
- ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x18], rdx
- mov rdx, gword ptr [rbp+0x18]
- mov gword ptr [rbp-0x20], rdx
- mov rdx, gword ptr [rbp+0x20]
- mov gword ptr [rbp-0x28], rdx
mov edx, dword ptr [rbp+0x28]
- ; gcrRegs -[rdx]
- mov dword ptr [rbp-0x2C], edx
+ mov dword ptr [rsp+0x20], edx
mov rdx, bword ptr [rbp+0x30]
; byrRegs +[rdx]
- ;; size=34 bbWeight=1 PerfScore 9.00
+ ;; size=11 bbWeight=1 PerfScore 3.00
G_M9330_IG03: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rdx]
vmovdqu xmmword ptr [rbp-0x10], xmm0
@@ -55,26 +41,24 @@ G_M9330_IG04: ; bbWeight=1, extend
lea rdx, [rbp-0x10]
; byrRegs -[rdx]
mov qword ptr [rsp+0x28], rdx
- mov rdx, gword ptr [rbp-0x18]
+ mov rdx, gword ptr [rbp+0x10]
; gcrRegs +[rdx]
- mov r8, gword ptr [rbp-0x20]
+ mov r8, gword ptr [rbp+0x18]
; gcrRegs +[r8]
- mov r9, gword ptr [rbp-0x28]
+ mov r9, gword ptr [rbp+0x20]
; gcrRegs +[r9]
- mov ecx, dword ptr [rbp-0x2C]
- mov dword ptr [rsp+0x20], ecx
xor ecx, ecx
call [<unknown method>]
; gcrRegs -[rdx r8-r9]
nop
- ;; size=37 bbWeight=1 PerfScore 10.00
+ ;; size=30 bbWeight=1 PerfScore 8.00
G_M9330_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 96
+ add rsp, 64
pop rbp
ret
;; size=6 bbWeight=1 PerfScore 1.75
-; Total bytes of code 130, prolog size 28, PerfScore 36.08, instruction count 36, allocated bytes for code 130 (MethodHash=ce38db8d) for method System.Net.Test.Common.HPackEncoder:EncodeHeader(System.String,System.String,System.Text.Encoding,int,System.Span`1[ubyte]):int (Tier0)
+; Total bytes of code 91, prolog size 19, PerfScore 25.75, instruction count 26, allocated bytes for code 91 (MethodHash=ce38db8d) for method System.Net.Test.Common.HPackEncoder:EncodeHeader(System.String,System.String,System.Text.Encoding,int,System.Span`1[ubyte]):int (Tier0)
; ============================================================
Unwind Info:
@@ -87,5 +71,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
+34 (+14.23%) : 577525.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscape(System.ReadOnlySpan`1[ushort]):this (Tier1)
@@ -13,86 +13,91 @@
; V01 arg1 [V01,T00] ( 7, 10.00) byref -> rbx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-; V05 tmp2 [V05,T10] ( 4, 2.68) int -> r8 "Inline return value spill temp"
+; V04 tmp1 [V04,T06] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V05 tmp2 [V05,T09] ( 4, 2.68) int -> r8 "Inline return value spill temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V07 tmp4 [V07 ] ( 2, 2.01) byref -> [rsp+0x30] must-init pinned "Inline stloc first use temp"
+; V07 tmp4 [V07 ] ( 2, 2.01) byref -> [rsp+0x40] must-init pinned "Inline stloc first use temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V09 tmp6 [V09,T04] ( 2, 4.02) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
-; V10 tmp7 [V10,T02] ( 8, 6.04) ref -> rcx
-; V11 tmp8 [V11,T11] ( 3, 2.00) int -> r8 "guarded devirt return temp"
+; V09 tmp6 [V09,T04] ( 2, 4.02) ref -> rdx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
+; V10 tmp7 [V10,T02] ( 8, 6.04) ref -> [rsp+0x20]
+; V11 tmp8 [V11,T10] ( 3, 2.00) int -> r8 "guarded devirt return temp"
;* V12 tmp9 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.Encodings.Web.DefaultJavaScriptEncoder>
;* V13 tmp10 [V13 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V14 tmp11 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V16 tmp13 [V16,T03] ( 3, 5.99) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
+; V16 tmp13 [V16,T03] ( 3, 5.99) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V18 tmp15 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V19 tmp16 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V20 tmp17 [V20 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V22 tmp19 [V22,T08] ( 3, 3.02) byref -> rdx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-; V23 tmp20 [V23,T09] ( 4, 3.00) int -> r8 "field V06._length (fldOffset=0x8)" P-INDEP
-; V24 tmp21 [V24,T12] ( 2, 2.00) byref -> rdx single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp22 [V25,T13] ( 2, 2.00) int -> r8 "field V17._length (fldOffset=0x8)" P-INDEP
+; V22 tmp19 [V22,T07] ( 3, 3.02) byref -> rcx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V23 tmp20 [V23,T08] ( 4, 3.00) int -> r8 "field V06._length (fldOffset=0x8)" P-INDEP
+; V24 tmp21 [V24,T11] ( 2, 2.00) byref -> rcx single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp22 [V25,T12] ( 2, 2.00) int -> r8 "field V17._length (fldOffset=0x8)" P-INDEP
;* V26 tmp23 [V26 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V27 tmp24 [V27,T05] ( 3, 4.01) long -> rdx "Cast away GC"
-; V28 tmp25 [V28 ] ( 3, 5.99) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V29 tmp26 [V29,T07] ( 2, 4.00) ref -> rcx single-def "argument with side effect"
+; V27 tmp24 [V27,T05] ( 3, 4.01) long -> [rsp+0x38] spill-single-def "Cast away GC"
+; V28 tmp25 [V28 ] ( 3, 5.99) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
;
-; Lcl frame size = 56
+; Lcl frame size = 72
G_M40707_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
- sub rsp, 56
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x20], xmm4
+ sub rsp, 72
xor eax, eax
- mov qword ptr [rsp+0x30], rax
+ mov qword ptr [rsp+0x28], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
+ mov qword ptr [rsp+0x40], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; byrRegs +[rbx]
- ;; size=29 bbWeight=1 PerfScore 6.33
+ ;; size=34 bbWeight=1 PerfScore 7.33
G_M40707_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
cmp byte ptr [rsi], sil
- lea rcx, bword ptr [rsi+0x60]
- ; byrRegs +[rcx]
- mov rdx, bword ptr [rbx]
+ lea rdx, bword ptr [rsi+0x60]
; byrRegs +[rdx]
+ mov rcx, bword ptr [rbx]
+ ; byrRegs +[rcx]
mov r8d, dword ptr [rbx+0x08]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
test r8d, r8d
je G_M40707_IG13
;; size=26 bbWeight=1 PerfScore 10.75
-G_M40707_IG03: ; bbWeight=1.01, gcrefRegs=0042 {rcx rsi}, byrefRegs=000C {rdx rbx}, byref
- mov bword ptr [rsp+0x30], rdx
+G_M40707_IG03: ; bbWeight=1.01, gcrefRegs=0044 {rdx rsi}, byrefRegs=000A {rcx rbx}, byref
+ mov bword ptr [rsp+0x40], rcx
+ mov qword ptr [rsp+0x38], rcx
mov rax, 0xD1FFAB1E ; const ptr
- test rcx, rcx
- cmove rcx, gword ptr [rax]
+ test rdx, rdx
+ cmove rdx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; System.Text.Encodings.Web.DefaultJavaScriptEncoder
- cmp qword ptr [rcx], rax
+ cmp qword ptr [rdx], rax
jne G_M40707_IG16
- ;; size=41 bbWeight=1.01 PerfScore 8.82
-G_M40707_IG04: ; bbWeight=1.00, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rdx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
- mov bword ptr [rsp+0x20], rdx
- mov dword ptr [rsp+0x28], r8d
- lea rdx, [rsp+0x20]
+ ;; size=46 bbWeight=1.01 PerfScore 9.83
+G_M40707_IG04: ; bbWeight=1.00, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ; byrRegs -[rcx]
+ mov rax, gword ptr [rdx+0x08]
+ ; gcrRegs +[rax]
+ cmp byte ptr [rax], al
+ mov bword ptr [rsp+0x28], rcx
+ mov dword ptr [rsp+0x30], r8d
+ lea rdx, [rsp+0x28]
+ ; gcrRegs -[rdx]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov r8d, eax
- ;; size=30 bbWeight=1.00 PerfScore 10.74
+ ;; size=33 bbWeight=1.00 PerfScore 10.99
G_M40707_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
xor rcx, rcx
; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
+ mov bword ptr [rsp+0x40], rcx
cmp r8d, -1
je SHORT G_M40707_IG08
;; size=13 bbWeight=1 PerfScore 2.50
@@ -109,7 +114,7 @@ G_M40707_IG06: ; bbWeight=0.68, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
nop
;; size=13 bbWeight=0.68 PerfScore 2.57
G_M40707_IG07: ; bbWeight=0.68, epilog, nogc, extend
- add rsp, 56
+ add rsp, 72
pop rbx
pop rsi
ret
@@ -138,7 +143,7 @@ G_M40707_IG11: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
nop
;; size=1 bbWeight=0.32 PerfScore 0.08
G_M40707_IG12: ; bbWeight=0.32, epilog, nogc, extend
- add rsp, 56
+ add rsp, 72
pop rbx
pop rsi
ret
@@ -170,18 +175,28 @@ G_M40707_IG15: ; bbWeight=0.00, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; gcr arg pop 0
jmp SHORT G_M40707_IG09
;; size=11 bbWeight=0.00 PerfScore 0.00
-G_M40707_IG16: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M40707_IG16: ; bbWeight=0, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x20], rdx
+ ; GC ptr vars +{V10}
+ mov rcx, rdx
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rdx, qword ptr [rsp+0x38]
+ ; gcrRegs -[rdx]
+ mov rax, gword ptr [rsp+0x20]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
+ ; GC ptr vars -{V10}
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov r8d, eax
- jmp SHORT G_M40707_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M40707_IG05
+ ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 239, prolog size 23, PerfScore 47.67, instruction count 68, allocated bytes for code 239 (MethodHash=59c660fc) for method System.Text.Json.Utf8JsonWriter:WriteStringEscape(System.ReadOnlySpan`1[ushort]):this (Tier1)
+; Total bytes of code 273, prolog size 28, PerfScore 49.92, instruction count 75, allocated bytes for code 273 (MethodHash=59c660fc) for method System.Text.Json.Utf8JsonWriter:WriteStringEscape(System.ReadOnlySpan`1[ushort]):this (Tier1)
; ============================================================
Unwind Info:
@@ -194,6 +209,6 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+46 (+15.38%) : 590961.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],float):this (Tier1)
@@ -11,93 +11,98 @@
;
; V00 this [V00,T01] ( 12, 5.90) ref -> rsi this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
; V01 arg1 [V01,T00] ( 7, 10 ) byref -> rbx single-def
-; V02 arg2 [V02,T15] ( 5, 3 ) float -> [rsp+0x70] single-def
+; V02 arg2 [V02,T14] ( 5, 3 ) float -> [rsp+0x80] single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-; V06 tmp2 [V06,T10] ( 4, 2.67) int -> r9 "Inline return value spill temp"
+; V05 tmp1 [V05,T06] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V06 tmp2 [V06,T09] ( 4, 2.67) int -> r9 "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V08 tmp4 [V08 ] ( 2, 2.01) byref -> [rsp+0x40] must-init pinned "Inline stloc first use temp"
+; V08 tmp4 [V08 ] ( 2, 2.01) byref -> [rsp+0x50] must-init pinned "Inline stloc first use temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V10 tmp6 [V10,T05] ( 2, 4.01) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
-; V11 tmp7 [V11,T02] ( 8, 6.04) ref -> rcx
-; V12 tmp8 [V12,T11] ( 3, 2 ) int -> r9 "guarded devirt return temp"
+; V10 tmp6 [V10,T05] ( 2, 4.01) ref -> rdx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
+; V11 tmp7 [V11,T02] ( 8, 6.04) ref -> [rsp+0x30]
+; V12 tmp8 [V12,T10] ( 3, 2 ) int -> r9 "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.Encodings.Web.DefaultJavaScriptEncoder>
;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T03] ( 3, 6 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
+; V17 tmp13 [V17,T03] ( 3, 6 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V24 tmp20 [V24,T08] ( 3, 3.01) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp21 [V25,T09] ( 4, 3 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
-; V26 tmp22 [V26,T12] ( 2, 2 ) byref -> rdx single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp23 [V27,T13] ( 2, 2 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V24 tmp20 [V24,T07] ( 3, 3.01) byref -> rcx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp21 [V25,T08] ( 4, 3 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
+; V26 tmp22 [V26,T11] ( 2, 2 ) byref -> rcx single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T12] ( 2, 2 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V29 tmp25 [V29,T04] ( 3, 4.01) long -> rdx "Cast away GC"
-; V30 tmp26 [V30 ] ( 3, 6 ) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp27 [V31,T07] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V32 cse0 [V32,T14] ( 3, 0.99) int -> rcx "CSE - conservative"
+; V29 tmp25 [V29,T04] ( 3, 4.01) long -> [rsp+0x48] spill-single-def "Cast away GC"
+; V30 tmp26 [V30 ] ( 3, 6 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V31 cse0 [V31,T13] ( 3, 0.99) int -> rcx "CSE - conservative"
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M46473_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
- sub rsp, 72
+ sub rsp, 88
vzeroupper
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
xor eax, eax
- mov qword ptr [rsp+0x40], rax
- vmovss dword ptr [rsp+0x70], xmm2
+ mov qword ptr [rsp+0x38], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
+ mov qword ptr [rsp+0x50], rax
+ vmovss dword ptr [rsp+0x80], xmm2
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; byrRegs +[rbx]
- ;; size=38 bbWeight=1 PerfScore 8.33
+ ;; size=46 bbWeight=1 PerfScore 9.33
G_M46473_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
cmp byte ptr [rsi], sil
- lea rcx, bword ptr [rsi+0x60]
- ; byrRegs +[rcx]
- mov rdx, bword ptr [rbx]
+ lea rdx, bword ptr [rsi+0x60]
; byrRegs +[rdx]
+ mov rcx, bword ptr [rbx]
+ ; byrRegs +[rcx]
mov r8d, dword ptr [rbx+0x08]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
test r8d, r8d
je G_M46473_IG13
;; size=26 bbWeight=1 PerfScore 10.75
-G_M46473_IG03: ; bbWeight=1.01, gcrefRegs=0042 {rcx rsi}, byrefRegs=000C {rdx rbx}, byref
- mov bword ptr [rsp+0x40], rdx
+G_M46473_IG03: ; bbWeight=1.01, gcrefRegs=0044 {rdx rsi}, byrefRegs=000A {rcx rbx}, byref
+ mov bword ptr [rsp+0x50], rcx
+ mov qword ptr [rsp+0x48], rcx
mov rax, 0xD1FFAB1E ; const ptr
- test rcx, rcx
- cmove rcx, gword ptr [rax]
+ test rdx, rdx
+ cmove rdx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; System.Text.Encodings.Web.DefaultJavaScriptEncoder
- cmp qword ptr [rcx], rax
+ cmp qword ptr [rdx], rax
jne G_M46473_IG14
- ;; size=41 bbWeight=1.01 PerfScore 8.81
-G_M46473_IG04: ; bbWeight=1, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rdx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
- mov bword ptr [rsp+0x30], rdx
- mov dword ptr [rsp+0x38], r8d
- lea rdx, [rsp+0x30]
+ ;; size=46 bbWeight=1.01 PerfScore 9.82
+G_M46473_IG04: ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ; byrRegs -[rcx]
+ mov rax, gword ptr [rdx+0x08]
+ ; gcrRegs +[rax]
+ cmp byte ptr [rax], al
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], r8d
+ lea rdx, [rsp+0x38]
+ ; gcrRegs -[rdx]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov r9d, eax
- ;; size=30 bbWeight=1 PerfScore 10.75
+ ;; size=33 bbWeight=1 PerfScore 11.00
G_M46473_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
xor rcx, rcx
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
+ mov bword ptr [rsp+0x50], rcx
cmp r9d, -1
je SHORT G_M46473_IG08
;; size=13 bbWeight=1 PerfScore 2.50
@@ -107,15 +112,15 @@ G_M46473_IG06: ; bbWeight=0.67, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; gcrRegs +[rcx]
mov rdx, rbx
; byrRegs +[rdx]
- vmovss xmm2, dword ptr [rsp+0x70]
+ vmovss xmm2, dword ptr [rsp+0x80]
call [<unknown method>]
; gcrRegs -[rcx rsi]
; byrRegs -[rdx rbx]
; gcr arg pop 0
nop
- ;; size=19 bbWeight=0.67 PerfScore 4.51
+ ;; size=22 bbWeight=0.67 PerfScore 4.51
G_M46473_IG07: ; bbWeight=0.67, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rsi
ret
@@ -140,17 +145,17 @@ G_M46473_IG10: ; bbWeight=0.33, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
; gcrRegs +[rcx]
mov rdx, rbx
; byrRegs +[rdx]
- vmovss xmm2, dword ptr [rsp+0x70]
+ vmovss xmm2, dword ptr [rsp+0x80]
call [<unknown method>]
; gcrRegs -[rcx rsi]
; byrRegs -[rdx rbx]
; gcr arg pop 0
- ;; size=23 bbWeight=0.33 PerfScore 2.57
+ ;; size=26 bbWeight=0.33 PerfScore 2.57
G_M46473_IG11: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.33 PerfScore 0.08
G_M46473_IG12: ; bbWeight=0.33, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rsi
ret
@@ -161,16 +166,26 @@ G_M46473_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {
mov r9d, -1
jmp SHORT G_M46473_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M46473_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M46473_IG14: ; bbWeight=0, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x30], rdx
+ ; GC ptr vars +{V11}
+ mov rcx, rdx
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rdx, qword ptr [rsp+0x48]
+ ; gcrRegs -[rdx]
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
+ ; GC ptr vars -{V11}
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov r9d, eax
- jmp SHORT G_M46473_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M46473_IG05
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M46473_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
movzx r8, byte ptr [rsi+0x36]
@@ -191,15 +206,15 @@ G_M46473_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; gcrRegs +[rcx]
mov rdx, rbx
; byrRegs +[rdx]
- vmovss xmm2, dword ptr [rsp+0x70]
+ vmovss xmm2, dword ptr [rsp+0x80]
call [<unknown method>]
; gcrRegs -[rcx rsi]
; byrRegs -[rdx rbx]
; gcr arg pop 0
jmp SHORT G_M46473_IG11
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 299, prolog size 26, PerfScore 53.90, instruction count 83, allocated bytes for code 299 (MethodHash=786a4a76) for method System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],float):this (Tier1)
+; Total bytes of code 345, prolog size 31, PerfScore 56.15, instruction count 90, allocated bytes for code 345 (MethodHash=786a4a76) for method System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],float):this (Tier1)
; ============================================================
Unwind Info:
@@ -212,6 +227,6 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+46 (+15.38%) : 590972.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],double):this (Tier1)
@@ -11,93 +11,98 @@
;
; V00 this [V00,T01] ( 12, 5.94) ref -> rsi this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
; V01 arg1 [V01,T00] ( 7, 10 ) byref -> rbx single-def
-; V02 arg2 [V02,T15] ( 5, 3 ) double -> [rsp+0x70] single-def
+; V02 arg2 [V02,T14] ( 5, 3 ) double -> [rsp+0x80] single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
; V04 OutArgs [V04 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T06] ( 2, 4 ) byref -> rcx single-def "Inlining Arg"
-; V06 tmp2 [V06,T10] ( 4, 2.65) int -> r9 "Inline return value spill temp"
+; V05 tmp1 [V05,T06] ( 2, 4 ) byref -> rdx single-def "Inlining Arg"
+; V06 tmp2 [V06,T09] ( 4, 2.65) int -> r9 "Inline return value spill temp"
;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V08 tmp4 [V08 ] ( 2, 2.01) byref -> [rsp+0x40] must-init pinned "Inline stloc first use temp"
+; V08 tmp4 [V08 ] ( 2, 2.01) byref -> [rsp+0x50] must-init pinned "Inline stloc first use temp"
;* V09 tmp5 [V09 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V10 tmp6 [V10,T05] ( 2, 4.01) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
-; V11 tmp7 [V11,T02] ( 8, 6.04) ref -> rcx
-; V12 tmp8 [V12,T11] ( 3, 2.00) int -> r9 "guarded devirt return temp"
+; V10 tmp6 [V10,T05] ( 2, 4.01) ref -> rdx class-hnd single-def "Inlining Arg" <System.Text.Encodings.Web.JavaScriptEncoder>
+; V11 tmp7 [V11,T02] ( 8, 6.04) ref -> [rsp+0x30]
+; V12 tmp8 [V12,T10] ( 3, 2.00) int -> r9 "guarded devirt return temp"
;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Text.Encodings.Web.DefaultJavaScriptEncoder>
;* V14 tmp10 [V14 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T03] ( 3, 6.00) ref -> rcx class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
+; V17 tmp13 [V17,T03] ( 3, 6.00) ref -> rax class-hnd exact single-def "Inlining Arg" <System.Text.Encodings.Web.OptimizedInboxTextEncoder>
;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V20 tmp16 [V20 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V22 tmp18 [V22 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V24 tmp20 [V24,T08] ( 3, 3.01) byref -> rdx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
-; V25 tmp21 [V25,T09] ( 4, 3 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
-; V26 tmp22 [V26,T12] ( 2, 2.00) byref -> rdx single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V27 tmp23 [V27,T13] ( 2, 2.00) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V24 tmp20 [V24,T07] ( 3, 3.01) byref -> rcx single-def "field V07._reference (fldOffset=0x0)" P-INDEP
+; V25 tmp21 [V25,T08] ( 4, 3 ) int -> r8 "field V07._length (fldOffset=0x8)" P-INDEP
+; V26 tmp22 [V26,T11] ( 2, 2.00) byref -> rcx single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T12] ( 2, 2.00) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V29 tmp25 [V29,T04] ( 3, 4.01) long -> rdx "Cast away GC"
-; V30 tmp26 [V30 ] ( 3, 6.00) struct (16) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V31 tmp27 [V31,T07] ( 2, 4.00) ref -> rcx single-def "argument with side effect"
-; V32 cse0 [V32,T14] ( 3, 1.04) int -> rcx "CSE - moderate"
+; V29 tmp25 [V29,T04] ( 3, 4.01) long -> [rsp+0x48] spill-single-def "Cast away GC"
+; V30 tmp26 [V30 ] ( 3, 6.00) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V31 cse0 [V31,T13] ( 3, 1.04) int -> rcx "CSE - moderate"
;
-; Lcl frame size = 72
+; Lcl frame size = 88
G_M2956_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rsi
push rbx
- sub rsp, 72
+ sub rsp, 88
vzeroupper
- vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x30], xmm4
xor eax, eax
- mov qword ptr [rsp+0x40], rax
- vmovsd qword ptr [rsp+0x70], xmm2
+ mov qword ptr [rsp+0x38], rax
+ vxorps xmm4, xmm4, xmm4
+ vmovdqa xmmword ptr [rsp+0x40], xmm4
+ mov qword ptr [rsp+0x50], rax
+ vmovsd qword ptr [rsp+0x80], xmm2
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; byrRegs +[rbx]
- ;; size=38 bbWeight=1 PerfScore 8.33
+ ;; size=46 bbWeight=1 PerfScore 9.33
G_M2956_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
cmp byte ptr [rsi], sil
- lea rcx, bword ptr [rsi+0x60]
- ; byrRegs +[rcx]
- mov rdx, bword ptr [rbx]
+ lea rdx, bword ptr [rsi+0x60]
; byrRegs +[rdx]
+ mov rcx, bword ptr [rbx]
+ ; byrRegs +[rcx]
mov r8d, dword ptr [rbx+0x08]
- mov rcx, gword ptr [rcx]
- ; gcrRegs +[rcx]
- ; byrRegs -[rcx]
+ mov rdx, gword ptr [rdx]
+ ; gcrRegs +[rdx]
+ ; byrRegs -[rdx]
test r8d, r8d
je G_M2956_IG13
;; size=26 bbWeight=1 PerfScore 10.75
-G_M2956_IG03: ; bbWeight=1.01, gcrefRegs=0042 {rcx rsi}, byrefRegs=000C {rdx rbx}, byref
- mov bword ptr [rsp+0x40], rdx
+G_M2956_IG03: ; bbWeight=1.01, gcrefRegs=0044 {rdx rsi}, byrefRegs=000A {rcx rbx}, byref
+ mov bword ptr [rsp+0x50], rcx
+ mov qword ptr [rsp+0x48], rcx
mov rax, 0xD1FFAB1E ; const ptr
- test rcx, rcx
- cmove rcx, gword ptr [rax]
+ test rdx, rdx
+ cmove rdx, gword ptr [rax]
mov rax, 0xD1FFAB1E ; System.Text.Encodings.Web.DefaultJavaScriptEncoder
- cmp qword ptr [rcx], rax
+ cmp qword ptr [rdx], rax
jne G_M2956_IG14
- ;; size=41 bbWeight=1.01 PerfScore 8.81
-G_M2956_IG04: ; bbWeight=1.00, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref
- ; byrRegs -[rdx]
- mov rcx, gword ptr [rcx+0x08]
- cmp byte ptr [rcx], cl
- mov bword ptr [rsp+0x30], rdx
- mov dword ptr [rsp+0x38], r8d
- lea rdx, [rsp+0x30]
+ ;; size=46 bbWeight=1.01 PerfScore 9.82
+G_M2956_IG04: ; bbWeight=1.00, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ; byrRegs -[rcx]
+ mov rax, gword ptr [rdx+0x08]
+ ; gcrRegs +[rax]
+ cmp byte ptr [rax], al
+ mov bword ptr [rsp+0x38], rcx
+ mov dword ptr [rsp+0x40], r8d
+ lea rdx, [rsp+0x38]
+ ; gcrRegs -[rdx]
+ mov rcx, rax
+ ; gcrRegs +[rcx]
call [<unknown method>]
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov r9d, eax
- ;; size=30 bbWeight=1.00 PerfScore 10.75
+ ;; size=33 bbWeight=1.00 PerfScore 11.00
G_M2956_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
xor rcx, rcx
; byrRegs +[rcx]
- mov bword ptr [rsp+0x40], rcx
+ mov bword ptr [rsp+0x50], rcx
cmp r9d, -1
je SHORT G_M2956_IG08
;; size=13 bbWeight=1 PerfScore 2.50
@@ -107,15 +112,15 @@ G_M2956_IG06: ; bbWeight=0.65, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}
; gcrRegs +[rcx]
mov rdx, rbx
; byrRegs +[rdx]
- vmovsd xmm2, qword ptr [rsp+0x70]
+ vmovsd xmm2, qword ptr [rsp+0x80]
call [<unknown method>]
; gcrRegs -[rcx rsi]
; byrRegs -[rdx rbx]
; gcr arg pop 0
nop
- ;; size=19 bbWeight=0.65 PerfScore 4.40
+ ;; size=22 bbWeight=0.65 PerfScore 4.40
G_M2956_IG07: ; bbWeight=0.65, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rsi
ret
@@ -140,17 +145,17 @@ G_M2956_IG10: ; bbWeight=0.35, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}
; gcrRegs +[rcx]
mov rdx, rbx
; byrRegs +[rdx]
- vmovsd xmm2, qword ptr [rsp+0x70]
+ vmovsd xmm2, qword ptr [rsp+0x80]
call [<unknown method>]
; gcrRegs -[rcx rsi]
; byrRegs -[rdx rbx]
; gcr arg pop 0
- ;; size=23 bbWeight=0.35 PerfScore 2.69
+ ;; size=26 bbWeight=0.35 PerfScore 2.69
G_M2956_IG11: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0.35 PerfScore 0.09
G_M2956_IG12: ; bbWeight=0.35, epilog, nogc, extend
- add rsp, 72
+ add rsp, 88
pop rbx
pop rsi
ret
@@ -161,16 +166,26 @@ G_M2956_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {r
mov r9d, -1
jmp SHORT G_M2956_IG05
;; size=8 bbWeight=0 PerfScore 0.00
-G_M2956_IG14: ; bbWeight=0, gcrefRegs=0042 {rcx rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M2956_IG14: ; bbWeight=0, gcrefRegs=0044 {rdx rsi}, byrefRegs=0008 {rbx}, byref
+ ; gcrRegs +[rdx]
+ mov gword ptr [rsp+0x30], rdx
+ ; GC ptr vars +{V11}
+ mov rcx, rdx
; gcrRegs +[rcx]
- mov rax, qword ptr [rcx]
+ mov rdx, qword ptr [rsp+0x48]
+ ; gcrRegs -[rdx]
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ mov rax, qword ptr [rax]
+ ; gcrRegs -[rax]
mov rax, qword ptr [rax+0x48]
+ ; GC ptr vars -{V11}
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
mov r9d, eax
- jmp SHORT G_M2956_IG05
- ;; size=15 bbWeight=0 PerfScore 0.00
+ jmp G_M2956_IG05
+ ;; size=36 bbWeight=0 PerfScore 0.00
G_M2956_IG15: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
movzx r8, byte ptr [rsi+0x36]
@@ -191,15 +206,15 @@ G_M2956_IG16: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, b
; gcrRegs +[rcx]
mov rdx, rbx
; byrRegs +[rdx]
- vmovsd xmm2, qword ptr [rsp+0x70]
+ vmovsd xmm2, qword ptr [rsp+0x80]
call [<unknown method>]
; gcrRegs -[rcx rsi]
; byrRegs -[rdx rbx]
; gcr arg pop 0
jmp SHORT G_M2956_IG11
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 299, prolog size 26, PerfScore 54.08, instruction count 83, allocated bytes for code 299 (MethodHash=8e69f473) for method System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],double):this (Tier1)
+; Total bytes of code 345, prolog size 31, PerfScore 56.34, instruction count 90, allocated bytes for code 345 (MethodHash=8e69f473) for method System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],double):this (Tier1)
; ============================================================
Unwind Info:
@@ -212,6 +227,6 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 8 * 8 + 8 = 72 = 0x48
+ CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-21 (-22.83%) : 72159.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>cDisplayClass128_1:
@@ -10,9 +10,8 @@
; V00 this [V00,T00] ( 4, 4 ) ref -> rbx this class-hnd single-def <System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V02 tmp1 [V02,T01] ( 3, 6 ) ref -> rsi class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
-; V03 tmp2 [V03,T03] ( 3, 3 ) ref -> r8 single-def "Field obj"
-; V04 tmp3 [V04,T02] ( 2, 4 ) byref -> r8 single-def "argument with side effect"
-; TEMP_01 byref -> [rsp+0x20]
+; V03 tmp2 [V03,T03] ( 3, 3 ) ref -> rcx single-def "Field obj"
+; V04 tmp3 [V04,T02] ( 2, 4 ) byref -> rcx single-def "argument with side effect"
;
; Lcl frame size = 40
@@ -20,11 +19,9 @@ G_M54012_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 40
- xor eax, eax
- mov qword ptr [rsp+0x20], rax
mov rbx, rcx
; gcrRegs +[rbx]
- ;; size=16 bbWeight=1 PerfScore 3.75
+ ;; size=9 bbWeight=1 PerfScore 2.50
G_M54012_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; System.Collections.Immutable.ImmutableArray`1[int]
call CORINFO_HELP_NEWSFAST
@@ -32,26 +29,21 @@ G_M54012_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcr arg pop 0
mov rsi, rax
; gcrRegs +[rsi]
- lea rcx, bword ptr [rsi+0x08]
+ mov rcx, gword ptr [rbx+0x18]
+ ; gcrRegs +[rcx]
+ cmp byte ptr [rcx], cl
+ add rcx, 80
+ ; gcrRegs -[rcx]
; byrRegs +[rcx]
- mov bword ptr [rsp+0x20], rcx
- mov r8, gword ptr [rbx+0x18]
- ; gcrRegs +[r8]
- cmp byte ptr [r8], r8b
- add r8, 80
- ; gcrRegs -[r8]
- ; byrRegs +[r8]
- mov rcx, r8
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
- ; byrRegs -[r8]
xor rdx, rdx
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rdx rbx r8]
; byrRegs -[rcx]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x20]
+ lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -60,7 +52,7 @@ G_M54012_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; byrRegs -[rcx]
mov rax, rsi
; gcrRegs +[rax]
- ;; size=69 bbWeight=1 PerfScore 16.25
+ ;; size=55 bbWeight=1 PerfScore 14.00
G_M54012_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -68,7 +60,7 @@ G_M54012_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 92, prolog size 13, PerfScore 22.25, instruction count 26, allocated bytes for code 92 (MethodHash=75bf2d03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
+; Total bytes of code 71, prolog size 6, PerfScore 18.75, instruction count 21, allocated bytes for code 71 (MethodHash=75bf2d03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
; ============================================================
Unwind Info:
-30 (-16.95%) : 24577.dasm - System.Security.Cryptography.SP800108HmacCounterKdf:.ctor(ubyte[],System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
@@ -18,30 +18,27 @@
; V07 tmp4 [V07,T02] ( 3, 3.00) ref -> rdi single-def "field V02._name (fldOffset=0x0)" P-INDEP
;* V08 tmp5 [V08 ] ( 0, 0 ) byref -> zero-ref "field V04._reference (fldOffset=0x0)" P-INDEP
;* V09 tmp6 [V09 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V10 tmp7 [V10,T03] ( 2, 2.00) byref -> [rsp+0x20] spill-single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+; V10 tmp7 [V10,T03] ( 2, 2.00) byref -> rcx single-def "field V06._reference (fldOffset=0x0)" P-INDEP
; V11 tmp8 [V11,T04] ( 2, 2.00) int -> rdx "field V06._length (fldOffset=0x8)" P-INDEP
-; V12 tmp9 [V12 ] ( 3, 6.00) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
+; V12 tmp9 [V12 ] ( 3, 6.00) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
; V13 tmp10 [V13,T06] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
-; TEMP_01 byref -> [rsp+0x38]
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M45870_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
- vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [rsp+0x28], xmm4
+ sub rsp, 48
xor eax, eax
- mov qword ptr [rsp+0x38], rax
+ mov qword ptr [rsp+0x20], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
mov rdi, r8
; gcrRegs +[rdi]
- ;; size=33 bbWeight=1 PerfScore 7.58
+ ;; size=23 bbWeight=1 PerfScore 5.25
G_M45870_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
je SHORT G_M45870_IG05
@@ -54,35 +51,27 @@ G_M45870_IG03: ; bbWeight=1.00, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcr arg pop 0
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
- mov bword ptr [rsp+0x20], rcx
- ; GC ptr vars +{V10}
mov edx, dword ptr [rbx+0x08]
- lea rcx, bword ptr [rsi+0x08]
- mov bword ptr [rsp+0x38], rcx
- mov rax, bword ptr [rsp+0x20]
- ; byrRegs +[rax]
- mov bword ptr [rsp+0x28], rax
- mov dword ptr [rsp+0x30], edx
- lea rcx, [rsp+0x28]
+ mov bword ptr [rsp+0x20], rcx
+ mov dword ptr [rsp+0x28], edx
+ lea rcx, [rsp+0x20]
; byrRegs -[rcx]
mov rdx, rdi
; gcrRegs +[rdx]
- ; GC ptr vars -{V10}
call [System.Security.Cryptography.SP800108HmacCounterKdf:CreateImplementation(System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.SP800108HmacCounterKdfImplementationBase]
- ; gcrRegs -[rdx rbx rsi rdi] +[rax]
- ; byrRegs -[rax]
+ ; gcrRegs -[rdx rbx rdi] +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x38]
+ lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rsi]
; byrRegs -[rcx]
nop
- ;; size=72 bbWeight=1.00 PerfScore 17.50
+ ;; size=52 bbWeight=1.00 PerfScore 13.50
G_M45870_IG04: ; bbWeight=1.00, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbx
pop rsi
pop rdi
@@ -114,7 +103,7 @@ G_M45870_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=59 bbWeight=0 PerfScore 0.00
-; Total bytes of code 177, prolog size 24, PerfScore 29.08, instruction count 47, allocated bytes for code 177 (MethodHash=aec84cd1) for method System.Security.Cryptography.SP800108HmacCounterKdf:.ctor(ubyte[],System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
+; Total bytes of code 147, prolog size 14, PerfScore 22.75, instruction count 41, allocated bytes for code 147 (MethodHash=aec84cd1) for method System.Security.Cryptography.SP800108HmacCounterKdf:.ctor(ubyte[],System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
; ============================================================
Unwind Info:
@@ -127,7 +116,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ 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)
-20 (-16.13%) : 233625.dasm - System.Security.Cryptography.AesCcm:.ctor(ubyte[]):this (FullOpts)
@@ -17,27 +17,24 @@
;* V06 tmp4 [V06 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0x8)" P-INDEP
; V07 tmp5 [V07,T04] ( 2, 2.00) byref -> rbx single-def "field V04._reference (fldOffset=0x0)" P-INDEP
; V08 tmp6 [V08,T05] ( 2, 2.00) int -> rdi "field V04._length (fldOffset=0x8)" P-INDEP
-; V09 tmp7 [V09 ] ( 3, 6.00) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
+; V09 tmp7 [V09 ] ( 3, 6.00) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
; V10 tmp8 [V10,T02] ( 2, 4.00) ref -> rcx single-def "argument with side effect"
; V11 cse0 [V11,T03] ( 3, 3.00) int -> rdi "CSE - aggressive"
-; TEMP_01 byref -> [rsp+0x38]
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M20881_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rdi
push rsi
push rbx
- sub rsp, 64
- vxorps xmm4, xmm4, xmm4
- vmovdqu xmmword ptr [rsp+0x28], xmm4
+ sub rsp, 48
xor eax, eax
- mov qword ptr [rsp+0x38], rax
+ mov qword ptr [rsp+0x20], rax
mov rsi, rcx
; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=30 bbWeight=1.00 PerfScore 7.33
+ ;; size=20 bbWeight=1.00 PerfScore 5.00
G_M20881_IG02: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
@@ -53,40 +50,36 @@ G_M20881_IG02: ; bbWeight=1.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
add rbx, 16
; gcrRegs -[rbx]
; byrRegs +[rbx]
- lea rcx, bword ptr [rsi+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x38], rcx
call [Internal.Cryptography.BCryptAeadHandleCache:get_AesCcm():Internal.NativeCrypto.SafeAlgorithmHandle]
- ; gcrRegs -[rsi] +[rax]
- ; byrRegs -[rcx]
+ ; gcrRegs +[rax]
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov bword ptr [rsp+0x28], rbx
- mov dword ptr [rsp+0x30], edi
- lea rdx, [rsp+0x28]
+ mov bword ptr [rsp+0x20], rbx
+ mov dword ptr [rsp+0x28], edi
+ lea rdx, [rsp+0x20]
call [<unknown method>]
; gcrRegs -[rcx]
; byrRegs -[rbx]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x38]
+ lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rsi]
; byrRegs -[rcx]
nop
- ;; size=86 bbWeight=1.00 PerfScore 21.75
+ ;; size=76 bbWeight=1.00 PerfScore 19.75
G_M20881_IG03: ; bbWeight=1.00, epilog, nogc, extend
- add rsp, 64
+ add rsp, 48
pop rbx
pop rsi
pop rdi
ret
;; size=8 bbWeight=1.00 PerfScore 2.75
-; Total bytes of code 124, prolog size 24, PerfScore 31.83, instruction count 34, allocated bytes for code 124 (MethodHash=e6d7ae6e) for method System.Security.Cryptography.AesCcm:.ctor(ubyte[]):this (FullOpts)
+; Total bytes of code 104, prolog size 14, PerfScore 27.50, instruction count 30, allocated bytes for code 104 (MethodHash=e6d7ae6e) for method System.Security.Cryptography.AesCcm:.ctor(ubyte[]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -99,7 +92,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ 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)
+6 (+8.70%) : 275284.dasm - System.Text.Json.Tests.Utf8JsonWriterTests+<>c:
@@ -9,8 +9,8 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Text.Json.Tests.Utf8JsonWriterTests+<>c>
-; V01 arg1 [V01,T02] ( 4, 4 ) ref -> rdx class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-; V02 arg2 [V02,T00] ( 3, 6 ) byref -> r8 single-def
+; V01 arg1 [V01,T02] ( 4, 4 ) ref -> rax class-hnd single-def <System.Text.Json.Utf8JsonWriter>
+; V02 arg2 [V02,T00] ( 3, 6 ) byref -> rcx single-def
; V03 arg3 [V03,T01] ( 3, 6 ) byref -> r9 single-def
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Text.Json.JsonEncodedText>
@@ -21,17 +21,15 @@
;* V10 tmp6 [V10 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP
;* V11 tmp7 [V11 ] ( 0, 0 ) ref -> zero-ref "field V03._utf8Value (fldOffset=0x0)" P-INDEP
;* V12 tmp8 [V12 ] ( 0, 0 ) ref -> zero-ref "field V03._value (fldOffset=0x8)" P-INDEP
-; V13 tmp9 [V13,T05] ( 4, 2.98) ref -> rcx single-def "field V05._utf8Value (fldOffset=0x0)" P-INDEP
+; V13 tmp9 [V13,T03] ( 4, 2.98) ref -> r8 single-def "field V05._utf8Value (fldOffset=0x0)" P-INDEP
;* V14 tmp10 [V14 ] ( 0, 0 ) ref -> zero-ref "field V05._value (fldOffset=0x8)" P-INDEP
;* V15 tmp11 [V15 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP
;* V16 tmp12 [V16 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP
-; V17 tmp13 [V17,T06] ( 3, 1.50) byref -> rax "field V08._reference (fldOffset=0x0)" P-INDEP
-; V18 tmp14 [V18,T07] ( 3, 1.50) int -> r10 "field V08._length (fldOffset=0x8)" P-INDEP
+; V17 tmp13 [V17,T04] ( 3, 1.50) byref -> rdx "field V08._reference (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T05] ( 3, 1.50) int -> r10 "field V08._length (fldOffset=0x8)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
;* V20 tmp16 [V20 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Text.Json.JsonEncodedText>
; V21 tmp17 [V21 ] ( 3, 6 ) struct (16) [rsp+0x28] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ubyte]>
-; V22 tmp18 [V22,T03] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
-; V23 tmp19 [V23,T04] ( 2, 4 ) byref -> rdx single-def "argument with side effect"
;
; Lcl frame size = 56
@@ -39,36 +37,37 @@ G_M55533_IG01: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
sub rsp, 56
xor eax, eax
mov qword ptr [rsp+0x28], rax
- ;; size=11 bbWeight=1.00 PerfScore 1.50
-G_M55533_IG02: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0300 {r8 r9}, byref, isz
- ; gcrRegs +[rdx]
- ; byrRegs +[r8-r9]
- mov rcx, gword ptr [r9]
- ; gcrRegs +[rcx]
- cmp byte ptr [rdx], dl
- test rcx, rcx
+ mov rax, rdx
+ ; gcrRegs +[rax]
+ mov rcx, r8
+ ; byrRegs +[rcx]
+ ;; size=17 bbWeight=1.00 PerfScore 2.00
+G_M55533_IG02: ; bbWeight=1.00, gcrefRegs=0001 {rax}, byrefRegs=0202 {rcx r9}, byref, isz
+ ; byrRegs +[r9]
+ mov r8, gword ptr [r9]
+ ; gcrRegs +[r8]
+ cmp byte ptr [rax], al
+ test r8, r8
je SHORT G_M55533_IG06
;; size=10 bbWeight=1.00 PerfScore 6.25
-G_M55533_IG03: ; bbWeight=0.49, gcrefRegs=0006 {rcx rdx}, byrefRegs=0100 {r8}, byref
+G_M55533_IG03: ; bbWeight=0.49, gcrefRegs=0101 {rax r8}, byrefRegs=0002 {rcx}, byref
; byrRegs -[r9]
- lea rax, bword ptr [rcx+0x10]
- ; byrRegs +[rax]
- mov r10d, dword ptr [rcx+0x08]
- ;; size=8 bbWeight=0.49 PerfScore 1.23
-G_M55533_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0101 {rax r8}, byref
- ; gcrRegs -[rcx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- mov rdx, r8
- ; gcrRegs -[rdx]
+ lea rdx, bword ptr [r8+0x10]
; byrRegs +[rdx]
- mov bword ptr [rsp+0x28], rax
+ mov r10d, dword ptr [r8+0x08]
+ ;; size=8 bbWeight=0.49 PerfScore 1.23
+G_M55533_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0006 {rcx rdx}, byref
+ ; gcrRegs -[r8]
+ mov bword ptr [rsp+0x28], rdx
mov dword ptr [rsp+0x30], r10d
lea r8, [rsp+0x28]
- ; byrRegs -[r8]
+ mov rdx, rcx
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ ; byrRegs -[rcx]
call [System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeProperty(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte]):this]
- ; gcrRegs -[rcx]
- ; byrRegs -[rax rdx]
+ ; gcrRegs -[rax rcx]
+ ; byrRegs -[rdx]
; gcr arg pop 0
nop
;; size=28 bbWeight=1 PerfScore 6.25
@@ -76,16 +75,16 @@ G_M55533_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
ret
;; size=5 bbWeight=1 PerfScore 1.25
-G_M55533_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz
- ; gcrRegs +[rdx]
- ; byrRegs +[r8]
- xor rax, rax
- ; byrRegs +[rax]
+G_M55533_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0002 {rcx}, gcvars, byref, isz
+ ; gcrRegs +[rax]
+ ; byrRegs +[rcx]
+ xor rdx, rdx
+ ; byrRegs +[rdx]
xor r10d, r10d
jmp SHORT G_M55533_IG04
;; size=7 bbWeight=0.01 PerfScore 0.02
-; Total bytes of code 69, prolog size 11, PerfScore 16.50, instruction count 21, allocated bytes for code 69 (MethodHash=db042712) for method System.Text.Json.Tests.Utf8JsonWriterTests+<>c:<WriteString_NullPropertyName_JsonEncodedText>b__204_1(System.Text.Json.Utf8JsonWriter,System.ReadOnlySpan`1[ushort],System.Text.Json.JsonEncodedText):this (FullOpts)
+; Total bytes of code 75, prolog size 11, PerfScore 17.00, instruction count 23, allocated bytes for code 75 (MethodHash=db042712) for method System.Text.Json.Tests.Utf8JsonWriterTests+<>c:<WriteString_NullPropertyName_JsonEncodedText>b__204_1(System.Text.Json.Utf8JsonWriter,System.ReadOnlySpan`1[ushort],System.Text.Json.JsonEncodedText):this (FullOpts)
; ============================================================
Unwind Info:
+25 (+9.62%) : 171130.dasm - Tests.Collections.IListTest`1[System.__Canon]:SetItemNotUnique():this (FullOpts)
@@ -8,26 +8,23 @@
; 3 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 7, 5 ) ref -> rbx this class-hnd single-def <Tests.Collections.IListTest`1[System.__Canon]>
-; V01 loc0 [V01,T08] ( 6, 6.01) ref -> rsi class-hnd single-def <System.Object[]>
-; V02 loc1 [V02,T05] ( 3, 5 ) ref -> rbx class-hnd single-def <System.Collections.IList>
-; V03 loc2 [V03,T02] ( 5, 16.50) int -> rdi
+; V00 this [V00,T04] ( 7, 5 ) ref -> rbx this class-hnd single-def <Tests.Collections.IListTest`1[System.__Canon]>
+; V01 loc0 [V01,T05] ( 6, 6.01) ref -> rsi class-hnd single-def <System.Object[]>
+; V02 loc1 [V02,T06] ( 3, 5 ) ref -> rbx class-hnd single-def <System.Collections.IList>
+; V03 loc2 [V03,T01] ( 6, 20.50) int -> rdi
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T12] ( 3, 0.04) long -> rbp "Inlining Arg"
-; V06 tmp2 [V06,T14] ( 2, 0.03) byref -> rdi single-def "Inlining Arg"
+; V05 tmp1 [V05,T10] ( 3, 0.04) long -> rbp "Inlining Arg"
+; V06 tmp2 [V06,T11] ( 2, 0.03) byref -> rdi single-def "Inlining Arg"
;* V07 tmp3 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp5 [V09,T09] ( 7, 0.27) byref -> rdi "Inline stloc first use temp"
-; V10 tmp6 [V10,T10] ( 6, 0.26) byref -> rbp "Inline stloc first use temp"
-; V11 tmp7 [V11,T11] ( 2, 0.10) ref -> r14 class-hnd "Inline stloc first use temp" <System.Object>
+; V09 tmp5 [V09,T07] ( 7, 0.27) byref -> rdi "Inline stloc first use temp"
+; V10 tmp6 [V10,T08] ( 6, 0.26) byref -> rbp "Inline stloc first use temp"
+; V11 tmp7 [V11,T09] ( 2, 0.10) ref -> r14 class-hnd "Inline stloc first use temp" <System.Object>
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T00] ( 3, 24 ) int -> rcx "index expr"
-;* V15 tmp11 [V15,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V16 tmp12 [V16,T03] ( 2, 16 ) ref -> r8 "argument with side effect"
-; V17 tmp13 [V17,T01] ( 3, 24 ) int -> rdx "argument with side effect"
-; V18 cse0 [V18,T04] ( 7, 13.51) int -> rbp "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 5, 0.03) ref -> r14 "CSE - conservative"
+; V14 tmp10 [V14,T00] ( 3, 24 ) int -> r8 "index expr"
+; V15 tmp11 [V15,T02] ( 2, 16 ) ref -> r8 "argument with side effect"
+; V16 cse0 [V16,T03] ( 7, 13.51) int -> rbp "CSE - aggressive"
;
; Lcl frame size = 32
@@ -79,16 +76,16 @@ G_M15936_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=58 bbWeight=0.50 PerfScore 9.75
G_M15936_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov edx, edi
- mov ecx, ebp
- sub ecx, edx
- dec ecx
- cmp ecx, ebp
+ mov r8d, ebp
+ sub r8d, edi
+ dec r8d
+ cmp r8d, ebp
jae G_M15936_IG12
- mov r8, gword ptr [rsi+8*rcx+0x10]
+ mov r8, gword ptr [rsi+8*r8+0x10]
; gcrRegs +[r8]
mov rcx, rbx
; gcrRegs +[rcx]
+ mov edx, edi
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rcx r8]
@@ -96,7 +93,7 @@ G_M15936_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
inc edi
cmp ebp, edi
jg SHORT G_M15936_IG04
- ;; size=43 bbWeight=4 PerfScore 37.00
+ ;; size=47 bbWeight=4 PerfScore 37.00
G_M15936_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ebp, 1
jg SHORT G_M15936_IG09
@@ -134,23 +131,21 @@ G_M15936_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=004
mov ebp, ebp
cmp rbp, 1
ja SHORT G_M15936_IG10
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=46 bbWeight=0.01 PerfScore 0.06
+ ;; size=64 bbWeight=0.01 PerfScore 0.06
G_M15936_IG10: ; bbWeight=0.01, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
lea rbp, bword ptr [rdi+8*rbp-0x08]
; byrRegs +[rbp]
@@ -176,8 +171,8 @@ G_M15936_IG11: ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=00A0
add rbp, -8
cmp rdi, rbp
jb SHORT G_M15936_IG11
- jmp SHORT G_M15936_IG06
- ;; size=41 bbWeight=0.05 PerfScore 0.54
+ jmp G_M15936_IG06
+ ;; size=44 bbWeight=0.05 PerfScore 0.54
G_M15936_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
; byrRegs -[rbp rdi]
@@ -186,7 +181,7 @@ G_M15936_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 13, PerfScore 61.98, instruction count 84, allocated bytes for code 260 (MethodHash=f37bc1bf) for method Tests.Collections.IListTest`1[System.__Canon]:SetItemNotUnique():this (FullOpts)
+; Total bytes of code 285, prolog size 13, PerfScore 61.97, instruction count 83, allocated bytes for code 285 (MethodHash=f37bc1bf) for method Tests.Collections.IListTest`1[System.__Canon]:SetItemNotUnique():this (FullOpts)
; ============================================================
Unwind Info:
+25 (+9.62%) : 171574.dasm - Tests.Collections.IListTest`1[int]:SetItemNotUnique():this (FullOpts)
@@ -8,26 +8,23 @@
; 3 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 7, 5 ) ref -> rbx this class-hnd single-def <Tests.Collections.IListTest`1[int]>
-; V01 loc0 [V01,T08] ( 6, 6.01) ref -> rsi class-hnd single-def <System.Object[]>
-; V02 loc1 [V02,T05] ( 3, 5 ) ref -> rbx class-hnd single-def <System.Collections.IList>
-; V03 loc2 [V03,T02] ( 5, 16.50) int -> rdi
+; V00 this [V00,T04] ( 7, 5 ) ref -> rbx this class-hnd single-def <Tests.Collections.IListTest`1[int]>
+; V01 loc0 [V01,T05] ( 6, 6.01) ref -> rsi class-hnd single-def <System.Object[]>
+; V02 loc1 [V02,T06] ( 3, 5 ) ref -> rbx class-hnd single-def <System.Collections.IList>
+; V03 loc2 [V03,T01] ( 6, 20.50) int -> rdi
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T12] ( 3, 0.04) long -> rbp "Inlining Arg"
-; V06 tmp2 [V06,T14] ( 2, 0.03) byref -> rdi single-def "Inlining Arg"
+; V05 tmp1 [V05,T10] ( 3, 0.04) long -> rbp "Inlining Arg"
+; V06 tmp2 [V06,T11] ( 2, 0.03) byref -> rdi single-def "Inlining Arg"
;* V07 tmp3 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp4 [V08 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V09 tmp5 [V09,T09] ( 7, 0.27) byref -> rdi "Inline stloc first use temp"
-; V10 tmp6 [V10,T10] ( 6, 0.26) byref -> rbp "Inline stloc first use temp"
-; V11 tmp7 [V11,T11] ( 2, 0.10) ref -> r14 class-hnd "Inline stloc first use temp" <System.Object>
+; V09 tmp5 [V09,T07] ( 7, 0.27) byref -> rdi "Inline stloc first use temp"
+; V10 tmp6 [V10,T08] ( 6, 0.26) byref -> rbp "Inline stloc first use temp"
+; V11 tmp7 [V11,T09] ( 2, 0.10) ref -> r14 class-hnd "Inline stloc first use temp" <System.Object>
;* V12 tmp8 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V13 tmp9 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V14 tmp10 [V14,T00] ( 3, 24 ) int -> rcx "index expr"
-;* V15 tmp11 [V15,T06] ( 0, 0 ) ref -> zero-ref "argument with side effect"
-; V16 tmp12 [V16,T03] ( 2, 16 ) ref -> r8 "argument with side effect"
-; V17 tmp13 [V17,T01] ( 3, 24 ) int -> rdx "argument with side effect"
-; V18 cse0 [V18,T04] ( 7, 13.51) int -> rbp "CSE - aggressive"
-; V19 cse1 [V19,T13] ( 5, 0.03) ref -> r14 "CSE - conservative"
+; V14 tmp10 [V14,T00] ( 3, 24 ) int -> r8 "index expr"
+; V15 tmp11 [V15,T02] ( 2, 16 ) ref -> r8 "argument with side effect"
+; V16 cse0 [V16,T03] ( 7, 13.51) int -> rbp "CSE - aggressive"
;
; Lcl frame size = 32
@@ -79,16 +76,16 @@ G_M59221_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
;; size=58 bbWeight=0.50 PerfScore 9.75
G_M59221_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- mov edx, edi
- mov ecx, ebp
- sub ecx, edx
- dec ecx
- cmp ecx, ebp
+ mov r8d, ebp
+ sub r8d, edi
+ dec r8d
+ cmp r8d, ebp
jae G_M59221_IG12
- mov r8, gword ptr [rsi+8*rcx+0x10]
+ mov r8, gword ptr [rsi+8*r8+0x10]
; gcrRegs +[r8]
mov rcx, rbx
; gcrRegs +[rcx]
+ mov edx, edi
mov r11, 0xD1FFAB1E ; code for <unknown method>
call [r11]<unknown method>
; gcrRegs -[rcx r8]
@@ -96,7 +93,7 @@ G_M59221_IG04: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
inc edi
cmp ebp, edi
jg SHORT G_M59221_IG04
- ;; size=43 bbWeight=4 PerfScore 37.00
+ ;; size=47 bbWeight=4 PerfScore 37.00
G_M59221_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ebp, 1
jg SHORT G_M59221_IG09
@@ -134,23 +131,21 @@ G_M59221_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=004
mov ebp, ebp
cmp rbp, 1
ja SHORT G_M59221_IG10
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- mov rcx, r14
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=46 bbWeight=0.01 PerfScore 0.06
+ ;; size=64 bbWeight=0.01 PerfScore 0.06
G_M59221_IG10: ; bbWeight=0.01, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
lea rbp, bword ptr [rdi+8*rbp-0x08]
; byrRegs +[rbp]
@@ -176,8 +171,8 @@ G_M59221_IG11: ; bbWeight=0.05, gcrefRegs=0048 {rbx rsi}, byrefRegs=00A0
add rbp, -8
cmp rdi, rbp
jb SHORT G_M59221_IG11
- jmp SHORT G_M59221_IG06
- ;; size=41 bbWeight=0.05 PerfScore 0.54
+ jmp G_M59221_IG06
+ ;; size=44 bbWeight=0.05 PerfScore 0.54
G_M59221_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rsi]
; byrRegs -[rbp rdi]
@@ -186,7 +181,7 @@ G_M59221_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 13, PerfScore 61.98, instruction count 84, allocated bytes for code 260 (MethodHash=0f6318aa) for method Tests.Collections.IListTest`1[int]:SetItemNotUnique():this (FullOpts)
+; Total bytes of code 285, prolog size 13, PerfScore 61.97, instruction count 83, allocated bytes for code 285 (MethodHash=0f6318aa) for method Tests.Collections.IListTest`1[int]:SetItemNotUnique():this (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-8 (-16.00%) : 16801.dasm - Microsoft.ML.Trainers.SdcaTrainerBase
3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase3+Visitor[System.Canon,System.Canon,System.__Canon]):this (FullOpts)@@ -9,38 +9,32 @@
;
; V00 this [V00,T03] ( 3, 3 ) ref -> rcx this class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]>
; V01 arg1 [V01,T00] ( 5, 5 ) long -> rdx single-def
-; V02 arg2 [V02,T04] ( 3, 3 ) ref -> r8 class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
+; V02 arg2 [V02,T01] ( 4, 4 ) ref -> rax class-hnd single-def <Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T01] ( 3, 6 ) ref -> rcx single-def "arr expr"
-; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> rax single-def "argument with side effect"
-; V06 tmp3 [V06,T06] ( 2, 4 ) long -> r8 "argument with side effect"
-; V07 tmp4 [V07,T05] ( 2, 4 ) byref -> rcx single-def "argument with side effect"
+; V04 tmp1 [V04,T02] ( 3, 6 ) ref -> r8 single-def "arr expr"
+; V05 tmp2 [V05,T04] ( 2, 4 ) byref -> r8 single-def "argument with side effect"
;
; Lcl frame size = 40
G_M22309_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
- ;; size=4 bbWeight=1 PerfScore 0.25
-G_M22309_IG02: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rcx r8]
mov rax, r8
; gcrRegs +[rax]
- mov r8, rdx
- ; gcrRegs -[r8]
- mov rcx, gword ptr [rcx+0x08]
- cmp edx, dword ptr [rcx+0x08]
+ ;; size=7 bbWeight=1 PerfScore 0.50
+G_M22309_IG02: ; bbWeight=1, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ mov r8, gword ptr [rcx+0x08]
+ ; gcrRegs +[r8]
+ cmp edx, dword ptr [r8+0x08]
jae SHORT G_M22309_IG04
- mov edx, edx
- lea rcx, bword ptr [rcx+4*rdx+0x10]
+ mov ecx, edx
; gcrRegs -[rcx]
- ; byrRegs +[rcx]
- mov rdx, r8
- mov r8, rcx
+ lea r8, bword ptr [r8+4*rcx+0x10]
+ ; gcrRegs -[r8]
; byrRegs +[r8]
mov rcx, gword ptr [rax+0x08]
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- ;; size=32 bbWeight=1 PerfScore 10.25
+ ;; size=21 bbWeight=1 PerfScore 9.25
G_M22309_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
tail.jmp [rax+0x18]<unknown method>
@@ -53,7 +47,7 @@ G_M22309_IG04: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 50, prolog size 4, PerfScore 12.75, instruction count 15, allocated bytes for code 50 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
+; Total bytes of code 42, prolog size 7, PerfScore 12.00, instruction count 12, allocated bytes for code 42 (MethodHash=cc0aa8da) for method Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
; ============================================================
Unwind Info:
-17 (-14.05%) : 16617.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
@@ -17,14 +17,12 @@
;* V06 tmp1 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.Nullable`1[int]>
;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP
;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref single-def "field V03.value (fldOffset=0x4)" P-INDEP
-;* V09 tmp4 [V09,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
-;* V10 tmp5 [V10,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
-;* V11 tmp6 [V11,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
-;* V12 tmp7 [V12,T09] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
-; V13 tmp8 [V13,T01] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V14 tmp9 [V14,T02] ( 3, 6 ) struct ( 8) [rsp+0x20] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
-; V15 tmp10 [V15,T05] ( 2, 4 ) ref -> rdx single-def "argument with side effect"
-; TEMP_01 byref -> [rsp+0x30]
+;* V09 tmp4 [V09,T05] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP
+;* V10 tmp5 [V10,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP
+;* V11 tmp6 [V11,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP
+;* V12 tmp7 [V12,T08] ( 0, 0 ) int -> zero-ref single-def "field V06.value (fldOffset=0x4)" P-INDEP
+; V13 tmp8 [V13,T01] ( 3, 6 ) struct ( 8) [rsp+0x30] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+; V14 tmp9 [V14,T02] ( 3, 6 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
;
; Lcl frame size = 56
@@ -32,34 +30,28 @@ G_M25941_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 56
- xor eax, eax
- mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, r8
; gcrRegs +[rsi]
- ;; size=19 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M25941_IG02: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- lea rcx, bword ptr [rbx+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
- mov byte ptr [rsp+0x28], 0
+ mov byte ptr [rsp+0x30], 0
xor r8d, r8d
- mov dword ptr [rsp+0x2C], r8d
- mov byte ptr [rsp+0x20], 0
- mov byte ptr [rsp+0x21], 0
+ mov dword ptr [rsp+0x34], r8d
+ mov byte ptr [rsp+0x28], 0
+ mov byte ptr [rsp+0x29], 0
+ mov r8, qword ptr [rsp+0x30]
+ movzx r9, word ptr [rsp+0x28]
mov rcx, rdx
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- mov r8, qword ptr [rsp+0x28]
- movzx r9, word ptr [rsp+0x20]
mov r11, 0xD1FFAB1E ; code for <unknown method>
mov rdx, 0xD1FFAB1E
call [r11]<unknown method>
; gcrRegs -[rcx rdx] +[rax]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x30]
+ lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
@@ -74,7 +66,7 @@ G_M25941_IG02: ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
; gcrRegs -[rdx rbx rsi]
; byrRegs -[rcx]
nop
- ;; size=95 bbWeight=1 PerfScore 15.75
+ ;; size=85 bbWeight=1 PerfScore 13.75
G_M25941_IG03: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
@@ -82,7 +74,7 @@ G_M25941_IG03: ; bbWeight=1, epilog, nogc, extend
ret
;; size=7 bbWeight=1 PerfScore 2.25
-; Total bytes of code 121, prolog size 13, PerfScore 22.00, instruction count 31, allocated bytes for code 121 (MethodHash=3a149aaa) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
+; Total bytes of code 104, prolog size 6, PerfScore 18.75, instruction count 27, allocated bytes for code 104 (MethodHash=3a149aaa) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
; ============================================================
Unwind Info:
-17 (-12.50%) : 2463.dasm - FSharp.Compiler.Features+LanguageVersion:.ctor(System.String):this (FullOpts)
@@ -11,10 +11,8 @@
; V00 this [V00,T00] ( 7, 7 ) ref -> rbx this class-hnd single-def <FSharp.Compiler.Features+LanguageVersion>
; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def <System.String>
; V02 OutArgs [V02 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V03 tmp1 [V03 ] ( 2, 4 ) struct (16) [rsp+0x20] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Decimal>
-;* V04 tmp2 [V04,T03] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
-; V05 cse0 [V05,T02] ( 3, 3 ) byref -> rsi "CSE - aggressive"
-; TEMP_01 byref -> [rsp+0x30]
+; V03 tmp1 [V03 ] ( 2, 4 ) struct (16) [rsp+0x28] do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Decimal>
+; V04 cse0 [V04,T02] ( 3, 3 ) byref -> rsi "CSE - aggressive"
;
; Lcl frame size = 56
@@ -23,13 +21,11 @@ G_M2526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 56
vzeroupper
- xor eax, eax
- mov qword ptr [rsp+0x30], rax
mov rbx, rcx
; gcrRegs +[rbx]
mov rsi, rdx
; gcrRegs +[rsi]
- ;; size=22 bbWeight=1 PerfScore 5.00
+ ;; size=15 bbWeight=1 PerfScore 3.75
G_M2526_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
test byte ptr [(reloc)], 1 ; global ptr
je SHORT G_M2526_IG05
@@ -52,28 +48,24 @@ G_M2526_IG03: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
; gcrRegs -[rdx]
; byrRegs -[rcx]
; gcr arg pop 0
- lea rcx, bword ptr [rbx+0x10]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x30], rcx
vmovups xmm0, xmmword ptr [rsi]
- vmovups xmmword ptr [rsp+0x20], xmm0
+ vmovups xmmword ptr [rsp+0x28], xmm0
+ lea rdx, [rsp+0x28]
mov rcx, rbx
; gcrRegs +[rcx]
- ; byrRegs -[rcx]
- lea rdx, [rsp+0x20]
call [FSharp.Compiler.Features+LanguageVersion:versionToString(System.Decimal):System.String:this]
- ; gcrRegs -[rcx rbx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; byrRegs -[rsi]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x30]
+ lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rax rdx rbx]
; byrRegs -[rcx]
nop
- ;; size=76 bbWeight=1 PerfScore 20.25
+ ;; size=66 bbWeight=1 PerfScore 18.25
G_M2526_IG04: ; bbWeight=1, epilog, nogc, extend
add rsp, 56
pop rbx
@@ -89,7 +81,7 @@ G_M2526_IG05: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {r
jmp SHORT G_M2526_IG03
;; size=22 bbWeight=0 PerfScore 0.00
-; Total bytes of code 136, prolog size 16, PerfScore 31.50, instruction count 36, allocated bytes for code 136 (MethodHash=7f98f621) for method FSharp.Compiler.Features+LanguageVersion:.ctor(System.String):this (FullOpts)
+; Total bytes of code 119, prolog size 9, PerfScore 28.25, instruction count 32, allocated bytes for code 119 (MethodHash=7f98f621) for method FSharp.Compiler.Features+LanguageVersion:.ctor(System.String):this (FullOpts)
; ============================================================
Unwind Info:
+31 (+5.79%) : 661.dasm - System.Number:FormatNumberushort (FullOpts)
@@ -9,18 +9,18 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 13, 24 ) byref -> rbx single-def
-; V01 arg1 [V01,T09] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T10] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T17] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T23] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T07] ( 7, 10.50) ref -> rsi class-hnd single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc1 [V05,T08] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T18] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T02] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T06] ( 5, 14 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref
;* V10 tmp2 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V11 tmp3 [V11,T56] ( 3, 2 ) ref -> r14
-; V12 tmp4 [V12,T13] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V11 tmp3 [V11,T52] ( 3, 2 ) ref -> r14
+; V12 tmp4 [V12,T10] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V15 tmp7 [V15 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -34,8 +34,8 @@
; V23 tmp15 [V23,T03] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V24 tmp16 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V25 tmp17 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V26 tmp18 [V26,T18] ( 2, 8 ) int -> rax "Inlining Arg"
-; V27 tmp19 [V27,T14] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V26 tmp18 [V26,T14] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V27 tmp19 [V27,T11] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V28 tmp20 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp21 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V30 tmp22 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -43,7 +43,7 @@
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp25 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V34 tmp26 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V35 tmp27 [V35,T25] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V35 tmp27 [V35,T24] ( 3, 6 ) int -> [rsp+0x74] spill-single-def "Inline stloc first use temp"
;* V36 tmp28 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp29 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp30 [V38 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -58,8 +58,8 @@
; V47 tmp39 [V47,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V48 tmp40 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V50 tmp42 [V50,T19] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V51 tmp43 [V51,T15] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V50 tmp42 [V50,T15] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V51 tmp43 [V51,T12] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V52 tmp44 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp45 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V54 tmp46 [V54 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -67,7 +67,7 @@
;* V56 tmp48 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V57 tmp49 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V58 tmp50 [V58 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V59 tmp51 [V59,T26] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V59 tmp51 [V59,T25] ( 3, 6 ) int -> [rsp+0x70] spill-single-def "Inline stloc first use temp"
;* V60 tmp52 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V61 tmp53 [V61 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V62 tmp54 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -82,8 +82,8 @@
; V71 tmp63 [V71,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V72 tmp64 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V73 tmp65 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V74 tmp66 [V74,T20] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V75 tmp67 [V75,T16] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V74 tmp66 [V74,T16] ( 2, 8 ) int -> rax "Inlining Arg"
+; V75 tmp67 [V75,T13] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V76 tmp68 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -91,88 +91,84 @@
;* V80 tmp72 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V82 tmp74 [V82 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V83 tmp75 [V83,T27] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V83 tmp75 [V83,T26] ( 3, 6 ) int -> [rsp+0x6C] spill-single-def "Inline stloc first use temp"
;* V84 tmp76 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V85 tmp77 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V86 tmp78 [V86 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V87 tmp79 [V87 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V88 tmp80 [V88 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V89 tmp81 [V89,T11] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V89 tmp81 [V89,T08] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V90 tmp82 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V91 tmp83 [V91 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V92 tmp84 [V92,T12] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V92 tmp84 [V92,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V93 tmp85 [V93 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V94 tmp86 [V94 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V95 tmp87 [V95,T32] ( 2, 4 ) byref -> r12 "field V13._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp88 [V96,T43] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
+; V95 tmp87 [V95,T32] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp88 [V96,T43] ( 2, 4 ) int -> [rsp+0x68] spill-single-def "field V13._length (fldOffset=0x8)" P-INDEP
;* V97 tmp89 [V97 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp90 [V98 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V99 tmp91 [V99 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp92 [V100 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V101 tmp93 [V101 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP
;* V102 tmp94 [V102 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
-; V103 tmp95 [V103,T21] ( 3, 6 ) byref -> r12 "field V22._reference (fldOffset=0x0)" P-INDEP
-; V104 tmp96 [V104,T28] ( 3, 6 ) int -> rax "field V22._length (fldOffset=0x8)" P-INDEP
-; V105 tmp97 [V105,T33] ( 2, 4 ) byref -> r12 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V106 tmp98 [V106,T44] ( 2, 4 ) int -> rax "field V24._length (fldOffset=0x8)" P-INDEP
+; V103 tmp95 [V103,T19] ( 3, 6 ) byref -> rax "field V22._reference (fldOffset=0x0)" P-INDEP
+; V104 tmp96 [V104,T27] ( 3, 6 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
+; V105 tmp97 [V105,T33] ( 2, 4 ) byref -> rax "field V24._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp98 [V106,T44] ( 2, 4 ) int -> r8 "field V24._length (fldOffset=0x8)" P-INDEP
;* V107 tmp99 [V107 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V108 tmp100 [V108 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
-; V109 tmp101 [V109,T34] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
+; V109 tmp101 [V109,T34] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V32._reference (fldOffset=0x0)" P-INDEP
;* V110 tmp102 [V110 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP
-; V111 tmp103 [V111,T35] ( 2, 4 ) byref -> r12 "field V36._reference (fldOffset=0x0)" P-INDEP
-; V112 tmp104 [V112,T45] ( 2, 4 ) int -> rax "field V36._length (fldOffset=0x8)" P-INDEP
+; V111 tmp103 [V111,T35] ( 2, 4 ) byref -> rax "field V36._reference (fldOffset=0x0)" P-INDEP
+; V112 tmp104 [V112,T45] ( 2, 4 ) int -> r8 "field V36._length (fldOffset=0x8)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V114 tmp106 [V114 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V115 tmp107 [V115 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
-; V119 tmp111 [V119,T22] ( 3, 6 ) byref -> r8 "field V46._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp112 [V120,T29] ( 3, 6 ) int -> r10 "field V46._length (fldOffset=0x8)" P-INDEP
-; V121 tmp113 [V121,T36] ( 2, 4 ) byref -> r8 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp114 [V122,T46] ( 2, 4 ) int -> r10 "field V48._length (fldOffset=0x8)" P-INDEP
+; V119 tmp111 [V119,T20] ( 3, 6 ) byref -> r10 "field V46._reference (fldOffset=0x0)" P-INDEP
+; V120 tmp112 [V120,T28] ( 3, 6 ) int -> r9 "field V46._length (fldOffset=0x8)" P-INDEP
+; V121 tmp113 [V121,T36] ( 2, 4 ) byref -> r10 "field V48._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp114 [V122,T46] ( 2, 4 ) int -> r9 "field V48._length (fldOffset=0x8)" P-INDEP
;* V123 tmp115 [V123 ] ( 0, 0 ) byref -> zero-ref "field V49._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp116 [V124 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
; V125 tmp117 [V125,T37] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V56._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP
-; V127 tmp119 [V127,T38] ( 2, 4 ) byref -> r8 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128,T47] ( 2, 4 ) int -> r10 "field V60._length (fldOffset=0x8)" P-INDEP
+; V127 tmp119 [V127,T38] ( 2, 4 ) byref -> r10 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp120 [V128,T47] ( 2, 4 ) int -> r9 "field V60._length (fldOffset=0x8)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref "field V65._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V65._length (fldOffset=0x8)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp126 [V134 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-INDEP
-; V135 tmp127 [V135,T23] ( 3, 6 ) byref -> r13 "field V70._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp128 [V136,T30] ( 3, 6 ) int -> r12 "field V70._length (fldOffset=0x8)" P-INDEP
-; V137 tmp129 [V137,T39] ( 2, 4 ) byref -> r13 "field V72._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp130 [V138,T48] ( 2, 4 ) int -> r12 "field V72._length (fldOffset=0x8)" P-INDEP
+; V135 tmp127 [V135,T21] ( 3, 6 ) byref -> r12 "field V70._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp128 [V136,T29] ( 3, 6 ) int -> rax "field V70._length (fldOffset=0x8)" P-INDEP
+; V137 tmp129 [V137,T39] ( 2, 4 ) byref -> r12 "field V72._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp130 [V138,T48] ( 2, 4 ) int -> rax "field V72._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref "field V73._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0x8)" P-INDEP
-; V141 tmp133 [V141,T24] ( 3, 6 ) byref -> r13 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp133 [V141,T22] ( 3, 6 ) byref -> r12 "field V80._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp134 [V142 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-INDEP
-; V143 tmp135 [V143,T40] ( 2, 4 ) byref -> rcx "field V84._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp136 [V144,T31] ( 3, 6 ) int -> r12 "field V84._length (fldOffset=0x8)" P-INDEP
+; V143 tmp135 [V143,T40] ( 2, 4 ) byref -> rdx "field V84._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp136 [V144,T30] ( 3, 6 ) int -> rax "field V84._length (fldOffset=0x8)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP
-; V147 tmp139 [V147,T41] ( 2, 4 ) byref -> rax "field V90._reference (fldOffset=0x0)" P-INDEP
-; V148 tmp140 [V148,T49] ( 2, 4 ) int -> r8 "field V90._length (fldOffset=0x8)" P-INDEP
+; V147 tmp139 [V147,T41] ( 2, 4 ) byref -> r8 "field V90._reference (fldOffset=0x0)" P-INDEP
+; V148 tmp140 [V148,T49] ( 2, 4 ) int -> r10 "field V90._length (fldOffset=0x8)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) byref -> zero-ref "field V91._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
; V151 tmp143 [V151,T42] ( 2, 4 ) byref -> rax "field V93._reference (fldOffset=0x0)" P-INDEP
; V152 tmp144 [V152,T50] ( 2, 4 ) int -> r8 "field V93._length (fldOffset=0x8)" P-INDEP
-; V153 tmp145 [V153,T57] ( 2, 2 ) ref -> rcx single-def "arr expr"
-; V154 tmp146 [V154,T55] ( 3, 3 ) int -> rdx "index expr"
-; V155 tmp147 [V155 ] ( 6, 24 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V156 tmp148 [V156 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V157 tmp149 [V157,T51] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V158 tmp150 [V158,T52] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V159 tmp151 [V159,T54] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V160 tmp152 [V160,T17] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V161 tmp153 [V161,T53] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-; V162 cse0 [V162,T01] ( 9, 18 ) ref -> rdx multi-def "CSE - aggressive"
+; V153 tmp145 [V153,T53] ( 2, 2 ) ref -> rcx single-def "arr expr"
+; V154 tmp146 [V154,T51] ( 3, 3 ) int -> rdx "index expr"
+; V155 tmp147 [V155 ] ( 6, 24 ) struct (16) [rsp+0x58] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V156 tmp148 [V156 ] ( 3, 12 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
+; V157 cse0 [V157,T01] ( 9, 18 ) ref -> rdx multi-def "CSE - aggressive"
+; V158 cse1 [V158,T31] ( 3, 6 ) int -> r13 "CSE - moderate"
;
-; Lcl frame size = 104
+; Lcl frame size = 120
G_M28185_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -183,12 +179,12 @@ G_M28185_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 104
+ sub rsp, 120
xor eax, eax
- mov qword ptr [rsp+0x38], rax
+ mov qword ptr [rsp+0x48], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x40], xmm4
- mov qword ptr [rsp+0x50], rax
+ vmovdqa xmmword ptr [rsp+0x50], xmm4
+ mov qword ptr [rsp+0x60], rax
mov rbx, rcx
; byrRegs +[rbx]
mov rdi, rdx
@@ -220,9 +216,10 @@ G_M28185_IG04: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0088 {rbx
G_M28185_IG05: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref
; gcrRegs -[rcx]
xor r15d, r15d
- cmp dword ptr [r14+0x08], 0
+ mov r13d, dword ptr [r14+0x08]
+ test r13d, r13d
jle G_M28185_IG23
- ;; size=14 bbWeight=1 PerfScore 4.25
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M28185_IG06: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref, isz
mov ecx, r15d
movzx rdx, word ptr [r14+2*rcx+0x0C]
@@ -235,27 +232,29 @@ G_M28185_IG07: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rb
jmp G_M28185_IG20
;; size=14 bbWeight=2 PerfScore 6.50
G_M28185_IG08: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0088 {rbx rdi}, byref, isz
- mov r13, gword ptr [rsi+0x08]
- ; gcrRegs +[r13]
+ mov r12, gword ptr [rsi+0x08]
+ ; gcrRegs +[r12]
mov rcx, gword ptr [rsi+0x30]
; gcrRegs +[rcx]
test rcx, rcx
jne SHORT G_M28185_IG09
- xor r12, r12
- ; byrRegs +[r12]
- xor eax, eax
+ xor rax, rax
+ ; byrRegs +[rax]
+ xor r8d, r8d
jmp SHORT G_M28185_IG10
;; size=20 bbWeight=2 PerfScore 15.50
-G_M28185_IG09: ; bbWeight=2, gcrefRegs=6042 {rcx rsi r13 r14}, byrefRegs=0088 {rbx rdi}, byref
- ; byrRegs -[r12]
...
+35 (+5.99%) : 25594.dasm - Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.Canon,System.Canon,System.__Canon,short]:DecodeMarshalAsComInterface(byref,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
@@ -62,7 +62,7 @@
;* V51 tmp37 [V51 ] ( 0, 0 ) int -> zero-ref "field V12.value (fldOffset=0x4)" P-INDEP
;* V52 tmp38 [V52 ] ( 0, 0 ) ref -> zero-ref single-def "field V27.array (fldOffset=0x0)" P-INDEP
; V53 tmp39 [V53,T31] ( 2, 2 ) ref -> rax single-def "field V28._array (fldOffset=0x0)" P-INDEP
-;* V54 tmp40 [V54,T36] ( 0, 0 ) int -> zero-ref single-def "field V28._index (fldOffset=0x8)" P-INDEP
+;* V54 tmp40 [V54,T35] ( 0, 0 ) int -> zero-ref single-def "field V28._index (fldOffset=0x8)" P-INDEP
; V55 tmp41 [V55,T04] ( 6, 15 ) ref -> [rsp+0x48] spill-single-def "V10.[000..008)"
; V56 tmp42 [V56,T10] ( 3, 8 ) ref -> [rsp+0x40] spill-single-def "V10.[008..016)"
; V57 tmp43 [V57,T08] ( 4, 9 ) ref -> [rsp+0x38] spill-single-def "V10.[016..024)"
@@ -75,11 +75,10 @@
; V64 tmp50 [V64,T32] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
; V65 tmp51 [V65,T27] ( 3, 3 ) struct ( 8) [rsp+0x60] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
; V66 tmp52 [V66,T33] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
-; V67 tmp53 [V67,T35] ( 2, 2 ) int -> rdx "argument with side effect"
-; V68 cse0 [V68,T19] ( 3, 6 ) int -> [rsp+0x5C] spill-single-def "CSE - aggressive"
-; V69 rat0 [V69,T29] ( 3, 2 ) long -> rdx "runtime lookup"
-; V70 rat1 [V70,T28] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
-; V71 rat2 [V71,T37] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
+; V67 cse0 [V67,T19] ( 3, 6 ) int -> [rsp+0x5C] spill-single-def "CSE - aggressive"
+; V68 rat0 [V68,T29] ( 3, 2 ) long -> rdx "runtime lookup"
+; V69 rat1 [V69,T28] ( 3, 2.80) long -> rdx "fgMakeTemp is creating a new local variable"
+; V70 rat2 [V70,T36] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 120
@@ -130,8 +129,9 @@ G_M33183_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
xor r10d, r10d
mov dword ptr [rsp+0x6C], r10d
test edx, edx
- jle G_M33183_IG14
- ;; size=71 bbWeight=1 PerfScore 27.50
+ mov ebp, dword ptr [rsp+0xD0]
+ jle G_M33183_IG15
+ ;; size=78 bbWeight=1 PerfScore 28.50
G_M33183_IG03: ; bbWeight=4, gcVars=0000000000400000 {V44}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
mov ecx, r8d
shl rcx, 5
@@ -152,14 +152,15 @@ G_M33183_IG03: ; bbWeight=4, gcVars=0000000000400000 {V44}, gcrefRegs=004
mov ecx, dword ptr [rcx+0x18]
; byrRegs -[rcx]
test r8, r8
- je G_M33183_IG13
+ je G_M33183_IG14
;; size=50 bbWeight=4 PerfScore 56.00
G_M33183_IG04: ; bbWeight=1, gcVars=0000000000400510 {V44 V55 V56 V57}, gcrefRegs=0340 {rsi r8 r9}, byrefRegs=0008 {rbx}, gcvars, byref
; gcrRegs -[rax r11]
cmp dword ptr [r8+0x08], 17
- jne G_M33183_IG13
+ jne G_M33183_IG14
;; size=11 bbWeight=1 PerfScore 4.00
G_M33183_IG05: ; bbWeight=2, gcrefRegs=0340 {rsi r8 r9}, byrefRegs=0008 {rbx}, byref, isz
+ mov dword ptr [rsp+0xD0], ebp
vmovups ymm0, ymmword ptr [r8+0x0C]
vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00]
vmovups ymm1, ymmword ptr [r8+0x0E]
@@ -168,9 +169,9 @@ G_M33183_IG05: ; bbWeight=2, gcrefRegs=0340 {rsi r8 r9}, byrefRegs=0008 {
sete bpl
movzx rbp, bpl
test ebp, ebp
- je G_M33183_IG13
+ je SHORT G_M33183_IG06
test ecx, ecx
- je SHORT G_M33183_IG09
+ je SHORT G_M33183_IG10
mov rcx, r9
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -178,7 +179,7 @@ G_M33183_IG05: ; bbWeight=2, gcrefRegs=0340 {rsi r8 r9}, byrefRegs=0008 {
; gcrRegs -[rcx r8-r9]
; gcr arg pop 0
cmp eax, 13
- je SHORT G_M33183_IG06
+ je SHORT G_M33183_IG07
mov rcx, gword ptr [rsp+0x40]
; gcrRegs +[rcx]
mov r11, 0xD1FFAB1E ; code for <unknown method>
@@ -187,18 +188,23 @@ G_M33183_IG05: ; bbWeight=2, gcrefRegs=0340 {rsi r8 r9}, byrefRegs=0008 {
; gcrRegs -[rcx]
; gcr arg pop 0
cmp eax, 5
- jne SHORT G_M33183_IG09
- jmp SHORT G_M33183_IG09
- ;; size=102 bbWeight=2 PerfScore 70.00
-G_M33183_IG06: ; bbWeight=2, gcVars=0000000000400110 {V44 V55 V57}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; GC ptr vars +{V57}
+ jne SHORT G_M33183_IG10
+ jmp SHORT G_M33183_IG10
+ ;; size=105 bbWeight=2 PerfScore 72.00
+G_M33183_IG06: ; bbWeight=1, gcVars=0000000000400000 {V44}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; GC ptr vars -{V55}
+ mov ebp, dword ptr [rsp+0xD0]
+ jmp G_M33183_IG14
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M33183_IG07: ; bbWeight=2, gcVars=0000000000400110 {V44 V55 V57}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; GC ptr vars +{V55 V57}
mov rdx, 0xD1FFAB1E ; System.Int32
mov r15, gword ptr [rsp+0x38]
; gcrRegs +[r15]
cmp qword ptr [r15], rdx
- je SHORT G_M33183_IG08
+ je SHORT G_M33183_IG09
;; size=20 bbWeight=2 PerfScore 10.50
-G_M33183_IG07: ; bbWeight=1, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, byref
+G_M33183_IG08: ; bbWeight=1, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, byref
mov rdx, r15
; gcrRegs +[rdx]
mov rcx, 0xD1FFAB1E ; System.Int32
@@ -206,23 +212,23 @@ G_M33183_IG07: ; bbWeight=1, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rb
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=18 bbWeight=1 PerfScore 1.50
-G_M33183_IG08: ; bbWeight=2, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, byref, isz
+G_M33183_IG09: ; bbWeight=2, gcrefRegs=8040 {rsi r15}, byrefRegs=0008 {rbx}, byref, isz
mov r15d, dword ptr [r15+0x08]
; gcrRegs -[r15]
- jmp SHORT G_M33183_IG10
+ jmp SHORT G_M33183_IG11
;; size=6 bbWeight=2 PerfScore 8.00
-G_M33183_IG09: ; bbWeight=2, gcVars=0000000000400010 {V44 V55}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M33183_IG10: ; bbWeight=2, gcVars=0000000000400010 {V44 V55}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; GC ptr vars -{V57}
xor r15d, r15d
;; size=3 bbWeight=2 PerfScore 0.50
-G_M33183_IG10: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M33183_IG11: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r14d, 1
test r15d, r15d
- jl SHORT G_M33183_IG11
+ jl SHORT G_M33183_IG12
cmp r15d, 0xD1FFAB1E
- jle SHORT G_M33183_IG13
- ;; size=20 bbWeight=2 PerfScore 5.50
-G_M33183_IG11: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jle G_M33183_IG18
+ ;; size=24 bbWeight=2 PerfScore 5.50
+G_M33183_IG12: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
mov r12, gword ptr [rbx+0x18]
; gcrRegs +[r12]
mov rbp, gword ptr [rbx+0x08]
@@ -238,7 +244,7 @@ G_M33183_IG11: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
mov rdx, gword ptr [r12+0x08]
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M33183_IG12
+ je SHORT G_M33183_IG13
mov gword ptr [rsp+0x20], rax
; gcr arg write
mov r12, gword ptr [rsp+0x48]
@@ -257,10 +263,11 @@ G_M33183_IG11: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; gcrRegs -[rcx rdx rbp r8 r12]
; gcr arg pop 0
;; size=73 bbWeight=2 PerfScore 60.00
-G_M33183_IG12: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+G_M33183_IG13: ; bbWeight=2, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
mov r12d, 1
- ;; size=6 bbWeight=2 PerfScore 0.50
-G_M33183_IG13: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov ebp, dword ptr [rsp+0xD0]
+ ;; size=13 bbWeight=2 PerfScore 2.50
+G_M33183_IG14: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
inc r13d
mov r10d, dword ptr [rsp+0x6C]
lea r8d, [r10+0x01]
@@ -272,30 +279,38 @@ G_M33183_IG13: ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx},
; gcrRegs +[rax]
jg G_M33183_IG03
;; size=38 bbWeight=4 PerfScore 25.00
-G_M33183_IG14: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+G_M33183_IG15: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
; gcrRegs -[rax rsi]
; GC ptr vars -{V44}
test r12d, r12d
- jne SHORT G_M33183_IG19
+ jne SHORT G_M33183_IG21
;; size=5 bbWeight=1 PerfScore 1.25
-G_M33183_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M33183_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, qword ptr [rdi+0x38]
mov rcx, qword ptr [rcx]
mov rdx, qword ptr [rcx+0x30]
test rdx, rdx
- je SHORT G_M33183_IG17
+ je SHORT G_M33183_IG19
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M33183_IG16: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- jmp SHORT G_M33183_IG18
+G_M33183_IG17: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M33183_IG20
;; size=2 bbWeight=0.40 PerfScore 0.80
-G_M33183_IG17: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M33183_IG18: ; bbWeight=1, gcVars=0000000000400000 {V44}, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+ ; gcrRegs +[rsi]
+ ; GC ptr vars +{V22 V44}
+ mov ebp, dword ptr [rsp+0xD0]
+ jmp SHORT G_M33183_IG14
+ ;; size=9 bbWeight=1 PerfScore 3.00
+G_M33183_IG19: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rsi]
+ ; GC ptr vars -{V22 V44}
mov rcx, rdi
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov rdx, rax
;; size=21 bbWeight=0.10 PerfScore 0.18
-G_M33183_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M33183_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov rcx, rbx
; byrRegs +[rcx]
call [Microsoft.CodeAnalysis.DecodeWellKnownAttributeArguments`3[System.__Canon,System.__Canon,short]:GetOrCreateData[System.__Canon]():System.__Canon:this]
@@ -310,20 +325,19 @@ G_M33183_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx},
; gcr arg pop 0
mov rcx, rax
; gcrRegs +[rcx]
- mov ebp, dword ptr [rsp+0xD0]
- mov edx, ebp
mov byte ptr [rsp+0x60], r14b
mov dword ptr [rsp+0x64], r15d
mov r8, qword ptr [rsp+0x60]
+ mov edx, ebp
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.MarshalPseudoCustomAttributeData:SetMarshalAsComInterface(int,System.Nullable`1[int]):this]
; gcrRegs -[rax rcx]
; gcr arg pop 0
- ;; size=60 bbWeight=0.50 PerfScore 8.62
-G_M33183_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=53 bbWeight=0.50 PerfScore 8.12
+G_M33183_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=1 PerfScore 0.25
-G_M33183_IG20: ; bbWeight=1, epilog, nogc, extend
+G_M33183_IG22: ; bbWeight=1, epilog, nogc, extend
vzeroupper
add rsp, 120
pop rbx
@@ -340,7 +354,7 @@ RWD00 dq 0050006400690049h, 006D006100720061h, 0072006500740065h, 00650064006E
RWD32 dq 0061005000640069h, 0065006D00610072h, 0049007200650074h, 007800650064006Eh
-; Total bytes of code 584, prolog size 41, PerfScore 301.97, instruction count 152, allocated bytes for code 584 (MethodHash=ac357e60) for method Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsComInterface(byref,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
+; Total bytes of code 619, prolog size 41, PerfScore 312.47, instruction count 158, allocated bytes for code 619 (MethodHash=ac357e60) for method Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsComInterface(byref,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
; ============================================================
Unwind Info:
+12 (+6.49%) : 26647.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
@@ -10,36 +10,35 @@
;
; V00 arg0 [V00,T02] ( 3, 3 ) ref -> rcx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.CSharpCompilation>
; V01 arg1 [V01,T01] ( 5, 4 ) byref -> rbx single-def
-; V02 loc0 [V02 ] ( 5, 3.50) struct (24) [rsp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
+; V02 loc0 [V02 ] ( 5, 3.50) struct (24) [rsp+0x48] do-not-enreg[XS] addr-exposed ld-addr-op <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol>
-; V05 tmp2 [V05,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol>
-; V06 tmp3 [V06,T00] ( 6, 6 ) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol>
+; V05 tmp2 [V05,T03] ( 3, 1.50) ref -> [rsp+0x28] class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol>
+; V06 tmp3 [V06,T00] ( 7, 7 ) ref -> rcx class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol>
;* V07 tmp4 [V07 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (24) zero-ref "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-;* V09 tmp6 [V09,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V10 tmp7 [V10 ] ( 3, 2.50) ref -> [rsp+0x38] do-not-enreg[X] addr-exposed "field V02.DefaultType (fldOffset=0x0)" P-DEP
-; V11 tmp8 [V11 ] ( 3, 2.50) ref -> [rsp+0x40] do-not-enreg[X] addr-exposed "field V02._extensions (fldOffset=0x8)" P-DEP
-; V12 tmp9 [V12 ] ( 3, 2.50) ubyte -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V02.NullableAnnotation (fldOffset=0x10)" P-DEP
-; V13 tmp10 [V13,T08] ( 2, 1 ) ref -> r10 single-def "field V07.DefaultType (fldOffset=0x0)" P-INDEP
-; V14 tmp11 [V14,T09] ( 2, 1 ) ref -> r9 single-def "field V07._extensions (fldOffset=0x8)" P-INDEP
-; V15 tmp12 [V15,T10] ( 2, 1 ) ubyte -> r11 single-def "field V07.NullableAnnotation (fldOffset=0x10)" P-INDEP
-; V16 tmp13 [V16,T05] ( 3, 1.50) ref -> rdx single-def "field V08.DefaultType (fldOffset=0x0)" P-INDEP
-; V17 tmp14 [V17,T06] ( 3, 1.50) ref -> rax single-def "field V08._extensions (fldOffset=0x8)" P-INDEP
-; V18 tmp15 [V18,T07] ( 3, 1.50) ubyte -> r8 single-def "field V08.NullableAnnotation (fldOffset=0x10)" P-INDEP
-; V19 tmp16 [V19 ] ( 4, 4 ) struct (24) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
-; V20 tmp17 [V20,T03] ( 3, 3 ) ref -> rcx single-def "argument with side effect"
+;* V09 tmp6 [V09,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V10 tmp7 [V10 ] ( 3, 2.50) ref -> [rsp+0x48] do-not-enreg[X] addr-exposed "field V02.DefaultType (fldOffset=0x0)" P-DEP
+; V11 tmp8 [V11 ] ( 3, 2.50) ref -> [rsp+0x50] do-not-enreg[X] addr-exposed "field V02._extensions (fldOffset=0x8)" P-DEP
+; V12 tmp9 [V12 ] ( 3, 2.50) ubyte -> [rsp+0x58] do-not-enreg[X] addr-exposed "field V02.NullableAnnotation (fldOffset=0x10)" P-DEP
+; V13 tmp10 [V13,T07] ( 2, 1 ) ref -> r10 single-def "field V07.DefaultType (fldOffset=0x0)" P-INDEP
+; V14 tmp11 [V14,T08] ( 2, 1 ) ref -> r9 single-def "field V07._extensions (fldOffset=0x8)" P-INDEP
+; V15 tmp12 [V15,T09] ( 2, 1 ) ubyte -> r11 single-def "field V07.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V16 tmp13 [V16,T04] ( 3, 1.50) ref -> rdx single-def "field V08.DefaultType (fldOffset=0x0)" P-INDEP
+; V17 tmp14 [V17,T05] ( 3, 1.50) ref -> rax single-def "field V08._extensions (fldOffset=0x8)" P-INDEP
+; V18 tmp15 [V18,T06] ( 3, 1.50) ubyte -> r8 single-def "field V08.NullableAnnotation (fldOffset=0x10)" P-INDEP
+; V19 tmp16 [V19 ] ( 4, 4 ) struct (24) [rsp+0x30] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>
;
-; Lcl frame size = 80
+; Lcl frame size = 96
G_M3106_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbx
- sub rsp, 80
+ sub rsp, 96
vzeroupper
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rsp+0x20], xmm4
+ vmovdqa xmmword ptr [rsp+0x30], xmm4
xor eax, eax
- mov qword ptr [rsp+0x30], rax
+ mov qword ptr [rsp+0x40], rax
mov rbx, rdx
; byrRegs +[rbx]
;; size=28 bbWeight=1 PerfScore 6.08
@@ -50,12 +49,12 @@ G_M3106_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0008 {rbx}, b
;; size=3 bbWeight=1 PerfScore 2.00
G_M3106_IG03: ; bbWeight=1, nogc, extend
vmovdqu xmm0, xmmword ptr [rdx+0x28]
- vmovdqu xmmword ptr [rsp+0x38], xmm0
+ vmovdqu xmmword ptr [rsp+0x48], xmm0
mov rax, qword ptr [rdx+0x38]
- mov qword ptr [rsp+0x48], rax
+ mov qword ptr [rsp+0x58], rax
;; size=20 bbWeight=1 PerfScore 8.00
G_M3106_IG04: ; bbWeight=1, isz, extend
- lea rdx, [rsp+0x38]
+ lea rdx, [rsp+0x48]
; gcrRegs -[rdx]
call [Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInType(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte]
; gcrRegs -[rcx]
@@ -68,7 +67,7 @@ G_M3106_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M3106_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 80
+ add rsp, 96
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
@@ -76,11 +75,11 @@ G_M3106_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
; byrRegs +[rbx]
mov rcx, gword ptr [rbx]
; gcrRegs +[rcx]
- mov rdx, gword ptr [rsp+0x38]
+ mov rdx, gword ptr [rsp+0x48]
; gcrRegs +[rdx]
- mov rax, gword ptr [rsp+0x40]
+ mov rax, gword ptr [rsp+0x50]
; gcrRegs +[rax]
- movzx r8, byte ptr [rsp+0x48]
+ movzx r8, byte ptr [rsp+0x58]
mov r10, gword ptr [rcx+0x28]
; gcrRegs +[r10]
mov r9, gword ptr [rcx+0x30]
@@ -94,15 +93,17 @@ G_M3106_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
jne SHORT G_M3106_IG08
cmp r9, rax
jne SHORT G_M3106_IG08
- mov rax, rcx
+ mov gword ptr [rsp+0x28], rcx
+ ; GC ptr vars +{V05}
jmp SHORT G_M3106_IG09
- ;; size=56 bbWeight=0.50 PerfScore 8.62
+ ;; size=58 bbWeight=0.50 PerfScore 9.00
G_M3106_IG08: ; bbWeight=0.50, gcrefRegs=0007 {rax rcx rdx}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[r9]
- mov gword ptr [rsp+0x20], rdx
- mov gword ptr [rsp+0x28], rax
- mov byte ptr [rsp+0x30], r8b
- lea rdx, [rsp+0x20]
+ ; GC ptr vars -{V05}
+ mov gword ptr [rsp+0x30], rdx
+ mov gword ptr [rsp+0x38], rax
+ mov byte ptr [rsp+0x40], r8b
+ lea rdx, [rsp+0x30]
; gcrRegs -[rdx]
mov rax, qword ptr [rcx]
; gcrRegs -[rax]
@@ -110,24 +111,30 @@ G_M3106_IG08: ; bbWeight=0.50, gcrefRegs=0007 {rax rcx rdx}, byrefRegs=00
call [rax+0x10]<unknown method>
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- ;; size=33 bbWeight=0.50 PerfScore 5.25
-G_M3106_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref
+ mov rcx, rax
+ ; gcrRegs +[rcx]
+ mov gword ptr [rsp+0x28], rcx
+ ; GC ptr vars +{V05}
+ ;; size=41 bbWeight=0.50 PerfScore 5.88
+G_M3106_IG09: ; bbWeight=0.50, gcVars=0000000000000008 {V05}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+ ; gcrRegs -[rax rcx]
+ mov rdx, gword ptr [rsp+0x28]
+ ; gcrRegs +[rdx]
mov rcx, rbx
; byrRegs +[rcx]
- mov rdx, rax
- ; gcrRegs +[rdx]
+ ; GC ptr vars -{V05}
call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rax rdx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx rbx]
mov eax, 1
- ;; size=16 bbWeight=0.50 PerfScore 0.88
+ ;; size=18 bbWeight=0.50 PerfScore 1.25
G_M3106_IG10: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 80
+ add rsp, 96
pop rbx
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 185, prolog size 25, PerfScore 37.46, instruction count 51, allocated bytes for code 185 (MethodHash=2397f3dd) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
+; Total bytes of code 197, prolog size 25, PerfScore 38.83, instruction count 53, allocated bytes for code 197 (MethodHash=2397f3dd) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
; ============================================================
Unwind Info:
@@ -140,5 +147,5 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
smoke_tests.nativeaot.windows.x64.checked.mch
-8 (-11.27%) : 8602.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -10,7 +10,7 @@
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 32
@@ -33,11 +33,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov ecx, 1
xchg dword ptr [rbx], ecx
test ecx, ecx
- sete cl
- movzx rcx, cl
- test ecx, ecx
- jne SHORT G_M21281_IG05
- ;; size=33 bbWeight=1 PerfScore 27.50
+ je SHORT G_M21281_IG05
+ ;; size=25 bbWeight=1 PerfScore 26.00
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
lea rcx, gword ptr [(reloc)]
@@ -58,7 +55,7 @@ G_M21281_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 71, prolog size 5, PerfScore 31.75, instruction count 22, allocated bytes for code 71 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 63, prolog size 5, PerfScore 30.25, instruction count 19, allocated bytes for code 63 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
Unwind Info:
-8 (-11.27%) : 29972.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
@@ -9,7 +9,7 @@
;
; V00 this [V00,T00] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Threading.QueueUserWorkItemCallbackBase>
; V01 OutArgs [V01 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V02 tmp1 [V02,T01] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
+;* V02 tmp1 [V02 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;
; Lcl frame size = 32
@@ -32,11 +32,8 @@ G_M21281_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov ecx, 1
xchg dword ptr [rbx], ecx
test ecx, ecx
- sete cl
- movzx rcx, cl
- test ecx, ecx
- jne SHORT G_M21281_IG05
- ;; size=33 bbWeight=1 PerfScore 27.50
+ je SHORT G_M21281_IG05
+ ;; size=25 bbWeight=1 PerfScore 26.00
G_M21281_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
lea rcx, gword ptr [(reloc)]
@@ -57,7 +54,7 @@ G_M21281_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret
;; size=6 bbWeight=0.50 PerfScore 0.88
-; Total bytes of code 71, prolog size 5, PerfScore 31.75, instruction count 22, allocated bytes for code 71 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
+; Total bytes of code 63, prolog size 5, PerfScore 30.25, instruction count 19, allocated bytes for code 63 (MethodHash=f256acde) for method System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
; ============================================================
Unwind Info:
-17 (-10.62%) : 23421.dasm - Internal.CompilerGenerated.
@@ -27,9 +27,8 @@
;* V17 tmp2 [V17 ] ( 0, 0 ) short -> zero-ref "Inline return value spill temp"
;* V18 tmp3 [V18 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V19 tmp4 [V19 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp"
-; V20 tmp5 [V20,T05] ( 2, 4 ) long -> rsi "Cast away GC"
-; V21 tmp6 [V21,T06] ( 2, 4 ) long -> rsi "argument with side effect"
-; TEMP_01 byref -> [rsp+0x20]
+; V20 tmp5 [V20,T05] ( 2, 4 ) long -> rcx "Cast away GC"
+; V21 tmp6 [V21,T06] ( 2, 4 ) long -> rcx "argument with side effect"
;
; Lcl frame size = 40
@@ -37,13 +36,11 @@ G_M8134_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbx
sub rsp, 40
- xor eax, eax
- mov qword ptr [rsp+0x20], rax
mov rsi, rcx
; byrRegs +[rsi]
mov rbx, rdx
; byrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 4.00
+ ;; size=12 bbWeight=1 PerfScore 2.75
G_M8134_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
mov ecx, dword ptr [rsi]
mov dword ptr [rbx+0x10], ecx
@@ -81,26 +78,22 @@ G_M8134_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi},
;; size=38 bbWeight=4 PerfScore 54.00
G_M8134_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0048 {rbx rsi}, byref
; gcrRegs -[rdx]
- lea rcx, bword ptr [rbx+0x08]
- ; byrRegs +[rcx]
- mov bword ptr [rsp+0x20], rcx
add rsi, 268
mov rcx, rsi
- ; byrRegs -[rcx]
mov edx, 11
call Internal.Runtime.CompilerHelpers.InteropHelpers:ByValAnsiStringToString(ulong,int):System.String
; gcrRegs +[rax]
- ; byrRegs -[rbx rsi]
+ ; byrRegs -[rsi]
; gcr arg pop 0
- mov rcx, bword ptr [rsp+0x20]
+ lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rdx]
- ; byrRegs -[rcx]
+ ; byrRegs -[rcx rbx]
nop
- ;; size=43 bbWeight=1 PerfScore 5.75
+ ;; size=33 bbWeight=1 PerfScore 3.75
G_M8134_IG05: ; bbWeight=1, epilog, nogc, extend
add rsp, 40
pop rbx
@@ -113,7 +106,7 @@ G_M8134_IG06: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 160, prolog size 19, PerfScore 78.50, instruction count 47, allocated bytes for code 160 (MethodHash=6c21e039) for method Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
+; Total bytes of code 143, prolog size 12, PerfScore 75.25, instruction count 43, allocated bytes for code 143 (MethodHash=6c21e039) for method Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
; ============================================================
Unwind Info:
+45 (+6.08%) : 1322.dasm - System.Number:FormatPercentushort (FullOpts)
@@ -8,17 +8,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 18, 34 ) byref -> rbx single-def
-; V01 arg1 [V01,T09] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T10] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T20] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T28] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T07] ( 9, 13 ) ref -> rsi class-hnd exact single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc1 [V05,T08] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T21] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T01] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T02] ( 6, 16 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V10 tmp2 [V10,T73] ( 3, 2 ) ref -> r14
-; V11 tmp3 [V11,T14] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V10 tmp2 [V10,T68] ( 3, 2 ) ref -> r14
+; V11 tmp3 [V11,T11] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -29,8 +29,8 @@
; V19 tmp11 [V19,T03] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp14 [V22,T20] ( 2, 8 ) int -> rax "Inlining Arg"
-; V23 tmp15 [V23,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V22 tmp14 [V22,T16] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V23 tmp15 [V23,T12] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp17 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -38,7 +38,7 @@
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V31 tmp23 [V31,T30] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V31 tmp23 [V31,T29] ( 3, 6 ) int -> [rsp+0x84] spill-single-def "Inline stloc first use temp"
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp25 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp26 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -50,8 +50,8 @@
; V40 tmp32 [V40,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp35 [V43,T21] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V44 tmp36 [V44,T16] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V43 tmp35 [V43,T17] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V44 tmp36 [V44,T13] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp38 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp39 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -59,7 +59,7 @@
;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp43 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V52 tmp44 [V52,T31] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V52 tmp44 [V52,T30] ( 3, 6 ) int -> [rsp+0x80] spill-single-def "Inline stloc first use temp"
;* V53 tmp45 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp46 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -71,8 +71,8 @@
; V61 tmp53 [V61,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V62 tmp54 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp56 [V64,T22] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V65 tmp57 [V65,T17] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V64 tmp56 [V64,T18] ( 2, 8 ) int -> rax "Inlining Arg"
+; V65 tmp57 [V65,T14] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V66 tmp58 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp60 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -80,13 +80,13 @@
;* V70 tmp62 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V71 tmp63 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V72 tmp64 [V72 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V73 tmp65 [V73,T32] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V73 tmp65 [V73,T31] ( 3, 6 ) int -> [rsp+0x7C] spill-single-def "Inline stloc first use temp"
;* V74 tmp66 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V75 tmp67 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp68 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V79 tmp71 [V79,T11] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V79 tmp71 [V79,T08] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V80 tmp72 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V82 tmp74 [V82 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -95,8 +95,8 @@
; V85 tmp77 [V85,T06] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V86 tmp78 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp79 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp80 [V88,T23] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V89 tmp81 [V89,T18] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V88 tmp80 [V88,T19] ( 2, 8 ) int -> rax "Inlining Arg"
+; V89 tmp81 [V89,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V90 tmp82 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V91 tmp83 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V92 tmp84 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -104,20 +104,20 @@
;* V94 tmp86 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V96 tmp88 [V96 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V97 tmp89 [V97,T33] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V97 tmp89 [V97,T32] ( 3, 6 ) int -> [rsp+0x78] spill-single-def "Inline stloc first use temp"
;* V98 tmp90 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V99 tmp91 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V100 tmp92 [V100 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V101 tmp93 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V102 tmp94 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V103 tmp95 [V103,T12] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V103 tmp95 [V103,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V104 tmp96 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V105 tmp97 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V106 tmp98 [V106,T13] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V106 tmp98 [V106,T10] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V107 tmp99 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V108 tmp100 [V108 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V109 tmp101 [V109,T40] ( 2, 4 ) byref -> r12 "field V12._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp102 [V110,T54] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V12._length (fldOffset=0x8)" P-INDEP
+; V109 tmp101 [V109,T40] ( 2, 4 ) byref -> [rsp+0x48] spill-single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp102 [V110,T54] ( 2, 4 ) int -> [rsp+0x74] spill-single-def "field V12._length (fldOffset=0x8)" P-INDEP
;* V111 tmp103 [V111 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp104 [V112 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -126,90 +126,85 @@
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V119 tmp111 [V119,T24] ( 3, 6 ) byref -> r12 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp112 [V120,T34] ( 3, 6 ) int -> rax "field V18._length (fldOffset=0x8)" P-INDEP
-; V121 tmp113 [V121,T41] ( 2, 4 ) byref -> r12 "field V20._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp114 [V122,T55] ( 2, 4 ) int -> rax "field V20._length (fldOffset=0x8)" P-INDEP
+; V119 tmp111 [V119,T22] ( 3, 6 ) byref -> rax "field V18._reference (fldOffset=0x0)" P-INDEP
+; V120 tmp112 [V120,T33] ( 3, 6 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V121 tmp113 [V121,T41] ( 2, 4 ) byref -> rax "field V20._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp114 [V122,T55] ( 2, 4 ) int -> r8 "field V20._length (fldOffset=0x8)" P-INDEP
;* V123 tmp115 [V123 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp116 [V124 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V125 tmp117 [V125,T42] ( 2, 4 ) byref -> r12 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp117 [V125,T42] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V127 tmp119 [V127,T43] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128,T56] ( 2, 4 ) int -> rax "field V32._length (fldOffset=0x8)" P-INDEP
+; V127 tmp119 [V127,T43] ( 2, 4 ) byref -> rax "field V32._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp120 [V128,T56] ( 2, 4 ) int -> r8 "field V32._length (fldOffset=0x8)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp126 [V134 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-; V135 tmp127 [V135,T25] ( 3, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp128 [V136,T35] ( 3, 6 ) int -> r10 "field V39._length (fldOffset=0x8)" P-INDEP
-; V137 tmp129 [V137,T44] ( 2, 4 ) byref -> r8 "field V41._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp130 [V138,T57] ( 2, 4 ) int -> r10 "field V41._length (fldOffset=0x8)" P-INDEP
+; V135 tmp127 [V135,T23] ( 3, 6 ) byref -> r10 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp128 [V136,T34] ( 3, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
+; V137 tmp129 [V137,T44] ( 2, 4 ) byref -> r10 "field V41._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp130 [V138,T57] ( 2, 4 ) int -> r9 "field V41._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V141 tmp133 [V141,T45] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp133 [V141,T45] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp134 [V142 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-; V143 tmp135 [V143,T46] ( 2, 4 ) byref -> r8 "field V53._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp136 [V144,T58] ( 2, 4 ) int -> r10 "field V53._length (fldOffset=0x8)" P-INDEP
+; V143 tmp135 [V143,T46] ( 2, 4 ) byref -> r10 "field V53._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp136 [V144,T58] ( 2, 4 ) int -> r9 "field V53._length (fldOffset=0x8)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V147 tmp139 [V147 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp140 [V148 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
-; V151 tmp143 [V151,T26] ( 3, 6 ) byref -> r13 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V152 tmp144 [V152,T36] ( 3, 6 ) int -> r12 "field V60._length (fldOffset=0x8)" P-INDEP
-; V153 tmp145 [V153,T47] ( 2, 4 ) byref -> r13 "field V62._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp146 [V154,T59] ( 2, 4 ) int -> r12 "field V62._length (fldOffset=0x8)" P-INDEP
+; V151 tmp143 [V151,T24] ( 3, 6 ) byref -> r12 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp144 [V152,T35] ( 3, 6 ) int -> rax "field V60._length (fldOffset=0x8)" P-INDEP
+; V153 tmp145 [V153,T47] ( 2, 4 ) byref -> r12 "field V62._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp146 [V154,T59] ( 2, 4 ) int -> rax "field V62._length (fldOffset=0x8)" P-INDEP
;* V155 tmp147 [V155 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
;* V156 tmp148 [V156 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
-; V157 tmp149 [V157,T27] ( 3, 6 ) byref -> r13 "field V70._reference (fldOffset=0x0)" P-INDEP
+; V157 tmp149 [V157,T25] ( 3, 6 ) byref -> r12 "field V70._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp150 [V158 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
-; V159 tmp151 [V159,T48] ( 2, 4 ) byref -> rcx "field V74._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp152 [V160,T37] ( 3, 6 ) int -> r12 "field V74._length (fldOffset=0x8)" P-INDEP
+; V159 tmp151 [V159,T48] ( 2, 4 ) byref -> rdx "field V74._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp152 [V160,T36] ( 3, 6 ) int -> rax "field V74._length (fldOffset=0x8)" P-INDEP
;* V161 tmp153 [V161 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp154 [V162 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V163 tmp155 [V163,T49] ( 2, 4 ) byref -> rax "field V80._reference (fldOffset=0x0)" P-INDEP
-; V164 tmp156 [V164,T60] ( 2, 4 ) int -> r8 "field V80._length (fldOffset=0x8)" P-INDEP
+; V163 tmp155 [V163,T49] ( 2, 4 ) byref -> r8 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V164 tmp156 [V164,T60] ( 2, 4 ) int -> r10 "field V80._length (fldOffset=0x8)" P-INDEP
;* V165 tmp157 [V165 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP
;* V166 tmp158 [V166 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP
;* V167 tmp159 [V167 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp160 [V168 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
;* V169 tmp161 [V169 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp162 [V170 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
-; V171 tmp163 [V171,T28] ( 3, 6 ) byref -> r13 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V172 tmp164 [V172,T38] ( 3, 6 ) int -> r12 "field V84._length (fldOffset=0x8)" P-INDEP
-; V173 tmp165 [V173,T50] ( 2, 4 ) byref -> r13 "field V86._reference (fldOffset=0x0)" P-INDEP
-; V174 tmp166 [V174,T61] ( 2, 4 ) int -> r12 "field V86._length (fldOffset=0x8)" P-INDEP
+; V171 tmp163 [V171,T26] ( 3, 6 ) byref -> r12 "field V84._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp164 [V172,T37] ( 3, 6 ) int -> rax "field V84._length (fldOffset=0x8)" P-INDEP
+; V173 tmp165 [V173,T50] ( 2, 4 ) byref -> r12 "field V86._reference (fldOffset=0x0)" P-INDEP
+; V174 tmp166 [V174,T61] ( 2, 4 ) int -> rax "field V86._length (fldOffset=0x8)" P-INDEP
;* V175 tmp167 [V175 ] ( 0, 0 ) byref -> zero-ref "field V87._reference (fldOffset=0x0)" P-INDEP
;* V176 tmp168 [V176 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
-; V177 tmp169 [V177,T29] ( 3, 6 ) byref -> r13 "field V94._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp169 [V177,T27] ( 3, 6 ) byref -> r12 "field V94._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp170 [V178 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
-; V179 tmp171 [V179,T51] ( 2, 4 ) byref -> rcx "field V98._reference (fldOffset=0x0)" P-INDEP
-; V180 tmp172 [V180,T39] ( 3, 6 ) int -> r12 "field V98._length (fldOffset=0x8)" P-INDEP
+; V179 tmp171 [V179,T51] ( 2, 4 ) byref -> rdx "field V98._reference (fldOffset=0x0)" P-INDEP
+; V180 tmp172 [V180,T38] ( 3, 6 ) int -> rax "field V98._length (fldOffset=0x8)" P-INDEP
;* V181 tmp173 [V181 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP
;* V182 tmp174 [V182 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
-; V183 tmp175 [V183,T52] ( 2, 4 ) byref -> rax "field V104._reference (fldOffset=0x0)" P-INDEP
-; V184 tmp176 [V184,T62] ( 2, 4 ) int -> r8 "field V104._length (fldOffset=0x8)" P-INDEP
+; V183 tmp175 [V183,T52] ( 2, 4 ) byref -> r8 "field V104._reference (fldOffset=0x0)" P-INDEP
+; V184 tmp176 [V184,T62] ( 2, 4 ) int -> r10 "field V104._length (fldOffset=0x8)" P-INDEP
;* V185 tmp177 [V185 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V186 tmp178 [V186 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
; V187 tmp179 [V187,T53] ( 2, 4 ) byref -> rax "field V107._reference (fldOffset=0x0)" P-INDEP
; V188 tmp180 [V188,T63] ( 2, 4 ) int -> r8 "field V107._length (fldOffset=0x8)" P-INDEP
-; V189 tmp181 [V189,T69] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V190 tmp182 [V190,T71] ( 3, 3 ) int -> rdx "index expr"
-; V191 tmp183 [V191,T70] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V192 tmp184 [V192,T72] ( 3, 3 ) int -> rdx "index expr"
-; V193 tmp185 [V193 ] ( 9, 36 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V194 tmp186 [V194 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V195 tmp187 [V195,T64] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V196 tmp188 [V196,T65] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V197 tmp189 [V197,T68] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V198 tmp190 [V198,T19] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V199 tmp191 [V199,T66] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V200 tmp192 [V200,T67] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+; V189 tmp181 [V189,T64] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V190 tmp182 [V190,T66] ( 3, 3 ) int -> rdx "index expr"
+; V191 tmp183 [V191,T65] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V192 tmp184 [V192,T67] ( 3, 3 ) int -> rdx "index expr"
+; V193 tmp185 [V193 ] ( 9, 36 ) struct (16) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
...
+45 (+6.11%) : 4802.dasm - System.Number:FormatCurrencyushort (FullOpts)
@@ -9,17 +9,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 18, 34 ) byref -> rbx single-def
-; V01 arg1 [V01,T09] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T10] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T20] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T28] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T07] ( 9, 13 ) ref -> rsi class-hnd exact single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc1 [V05,T08] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T21] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T01] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T02] ( 6, 16 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V10 tmp2 [V10,T73] ( 3, 2 ) ref -> r14
-; V11 tmp3 [V11,T14] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V10 tmp2 [V10,T68] ( 3, 2 ) ref -> r14
+; V11 tmp3 [V11,T11] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -30,8 +30,8 @@
; V19 tmp11 [V19,T03] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp14 [V22,T20] ( 2, 8 ) int -> rax "Inlining Arg"
-; V23 tmp15 [V23,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V22 tmp14 [V22,T16] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V23 tmp15 [V23,T12] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp17 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -39,7 +39,7 @@
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V31 tmp23 [V31,T30] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V31 tmp23 [V31,T29] ( 3, 6 ) int -> [rsp+0x84] spill-single-def "Inline stloc first use temp"
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp25 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp26 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -51,8 +51,8 @@
; V40 tmp32 [V40,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp35 [V43,T21] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V44 tmp36 [V44,T16] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V43 tmp35 [V43,T17] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V44 tmp36 [V44,T13] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp38 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp39 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -60,7 +60,7 @@
;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp43 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V52 tmp44 [V52,T31] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V52 tmp44 [V52,T30] ( 3, 6 ) int -> [rsp+0x80] spill-single-def "Inline stloc first use temp"
;* V53 tmp45 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp46 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -72,8 +72,8 @@
; V61 tmp53 [V61,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V62 tmp54 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp56 [V64,T22] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V65 tmp57 [V65,T17] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V64 tmp56 [V64,T18] ( 2, 8 ) int -> rax "Inlining Arg"
+; V65 tmp57 [V65,T14] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V66 tmp58 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp60 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -81,13 +81,13 @@
;* V70 tmp62 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V71 tmp63 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V72 tmp64 [V72 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V73 tmp65 [V73,T32] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V73 tmp65 [V73,T31] ( 3, 6 ) int -> [rsp+0x7C] spill-single-def "Inline stloc first use temp"
;* V74 tmp66 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V75 tmp67 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp68 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V79 tmp71 [V79,T11] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V79 tmp71 [V79,T08] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V80 tmp72 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V82 tmp74 [V82 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -96,8 +96,8 @@
; V85 tmp77 [V85,T06] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V86 tmp78 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp79 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp80 [V88,T23] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V89 tmp81 [V89,T18] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V88 tmp80 [V88,T19] ( 2, 8 ) int -> rax "Inlining Arg"
+; V89 tmp81 [V89,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V90 tmp82 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V91 tmp83 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V92 tmp84 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -105,20 +105,20 @@
;* V94 tmp86 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V96 tmp88 [V96 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V97 tmp89 [V97,T33] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V97 tmp89 [V97,T32] ( 3, 6 ) int -> [rsp+0x78] spill-single-def "Inline stloc first use temp"
;* V98 tmp90 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V99 tmp91 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V100 tmp92 [V100 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V101 tmp93 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V102 tmp94 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V103 tmp95 [V103,T12] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V103 tmp95 [V103,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V104 tmp96 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V105 tmp97 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V106 tmp98 [V106,T13] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V106 tmp98 [V106,T10] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V107 tmp99 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V108 tmp100 [V108 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V109 tmp101 [V109,T40] ( 2, 4 ) byref -> r12 "field V12._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp102 [V110,T54] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V12._length (fldOffset=0x8)" P-INDEP
+; V109 tmp101 [V109,T40] ( 2, 4 ) byref -> [rsp+0x48] spill-single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp102 [V110,T54] ( 2, 4 ) int -> [rsp+0x74] spill-single-def "field V12._length (fldOffset=0x8)" P-INDEP
;* V111 tmp103 [V111 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp104 [V112 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -127,90 +127,85 @@
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V119 tmp111 [V119,T24] ( 3, 6 ) byref -> r12 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp112 [V120,T34] ( 3, 6 ) int -> rax "field V18._length (fldOffset=0x8)" P-INDEP
-; V121 tmp113 [V121,T41] ( 2, 4 ) byref -> r12 "field V20._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp114 [V122,T55] ( 2, 4 ) int -> rax "field V20._length (fldOffset=0x8)" P-INDEP
+; V119 tmp111 [V119,T22] ( 3, 6 ) byref -> rax "field V18._reference (fldOffset=0x0)" P-INDEP
+; V120 tmp112 [V120,T33] ( 3, 6 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V121 tmp113 [V121,T41] ( 2, 4 ) byref -> rax "field V20._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp114 [V122,T55] ( 2, 4 ) int -> r8 "field V20._length (fldOffset=0x8)" P-INDEP
;* V123 tmp115 [V123 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp116 [V124 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V125 tmp117 [V125,T42] ( 2, 4 ) byref -> r12 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp117 [V125,T42] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V127 tmp119 [V127,T43] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128,T56] ( 2, 4 ) int -> rax "field V32._length (fldOffset=0x8)" P-INDEP
+; V127 tmp119 [V127,T43] ( 2, 4 ) byref -> rax "field V32._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp120 [V128,T56] ( 2, 4 ) int -> r8 "field V32._length (fldOffset=0x8)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp126 [V134 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-; V135 tmp127 [V135,T25] ( 3, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp128 [V136,T35] ( 3, 6 ) int -> r10 "field V39._length (fldOffset=0x8)" P-INDEP
-; V137 tmp129 [V137,T44] ( 2, 4 ) byref -> r8 "field V41._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp130 [V138,T57] ( 2, 4 ) int -> r10 "field V41._length (fldOffset=0x8)" P-INDEP
+; V135 tmp127 [V135,T23] ( 3, 6 ) byref -> r10 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp128 [V136,T34] ( 3, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
+; V137 tmp129 [V137,T44] ( 2, 4 ) byref -> r10 "field V41._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp130 [V138,T57] ( 2, 4 ) int -> r9 "field V41._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V141 tmp133 [V141,T45] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp133 [V141,T45] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp134 [V142 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-; V143 tmp135 [V143,T46] ( 2, 4 ) byref -> r8 "field V53._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp136 [V144,T58] ( 2, 4 ) int -> r10 "field V53._length (fldOffset=0x8)" P-INDEP
+; V143 tmp135 [V143,T46] ( 2, 4 ) byref -> r10 "field V53._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp136 [V144,T58] ( 2, 4 ) int -> r9 "field V53._length (fldOffset=0x8)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V147 tmp139 [V147 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp140 [V148 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
-; V151 tmp143 [V151,T26] ( 3, 6 ) byref -> r13 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V152 tmp144 [V152,T36] ( 3, 6 ) int -> r12 "field V60._length (fldOffset=0x8)" P-INDEP
-; V153 tmp145 [V153,T47] ( 2, 4 ) byref -> r13 "field V62._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp146 [V154,T59] ( 2, 4 ) int -> r12 "field V62._length (fldOffset=0x8)" P-INDEP
+; V151 tmp143 [V151,T24] ( 3, 6 ) byref -> r12 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp144 [V152,T35] ( 3, 6 ) int -> rax "field V60._length (fldOffset=0x8)" P-INDEP
+; V153 tmp145 [V153,T47] ( 2, 4 ) byref -> r12 "field V62._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp146 [V154,T59] ( 2, 4 ) int -> rax "field V62._length (fldOffset=0x8)" P-INDEP
;* V155 tmp147 [V155 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
;* V156 tmp148 [V156 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
-; V157 tmp149 [V157,T27] ( 3, 6 ) byref -> r13 "field V70._reference (fldOffset=0x0)" P-INDEP
+; V157 tmp149 [V157,T25] ( 3, 6 ) byref -> r12 "field V70._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp150 [V158 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
-; V159 tmp151 [V159,T48] ( 2, 4 ) byref -> rcx "field V74._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp152 [V160,T37] ( 3, 6 ) int -> r12 "field V74._length (fldOffset=0x8)" P-INDEP
+; V159 tmp151 [V159,T48] ( 2, 4 ) byref -> rdx "field V74._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp152 [V160,T36] ( 3, 6 ) int -> rax "field V74._length (fldOffset=0x8)" P-INDEP
;* V161 tmp153 [V161 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp154 [V162 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V163 tmp155 [V163,T49] ( 2, 4 ) byref -> rax "field V80._reference (fldOffset=0x0)" P-INDEP
-; V164 tmp156 [V164,T60] ( 2, 4 ) int -> r8 "field V80._length (fldOffset=0x8)" P-INDEP
+; V163 tmp155 [V163,T49] ( 2, 4 ) byref -> r8 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V164 tmp156 [V164,T60] ( 2, 4 ) int -> r10 "field V80._length (fldOffset=0x8)" P-INDEP
;* V165 tmp157 [V165 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP
;* V166 tmp158 [V166 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP
;* V167 tmp159 [V167 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp160 [V168 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
;* V169 tmp161 [V169 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp162 [V170 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
-; V171 tmp163 [V171,T28] ( 3, 6 ) byref -> r13 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V172 tmp164 [V172,T38] ( 3, 6 ) int -> r12 "field V84._length (fldOffset=0x8)" P-INDEP
-; V173 tmp165 [V173,T50] ( 2, 4 ) byref -> r13 "field V86._reference (fldOffset=0x0)" P-INDEP
-; V174 tmp166 [V174,T61] ( 2, 4 ) int -> r12 "field V86._length (fldOffset=0x8)" P-INDEP
+; V171 tmp163 [V171,T26] ( 3, 6 ) byref -> r12 "field V84._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp164 [V172,T37] ( 3, 6 ) int -> rax "field V84._length (fldOffset=0x8)" P-INDEP
+; V173 tmp165 [V173,T50] ( 2, 4 ) byref -> r12 "field V86._reference (fldOffset=0x0)" P-INDEP
+; V174 tmp166 [V174,T61] ( 2, 4 ) int -> rax "field V86._length (fldOffset=0x8)" P-INDEP
;* V175 tmp167 [V175 ] ( 0, 0 ) byref -> zero-ref "field V87._reference (fldOffset=0x0)" P-INDEP
;* V176 tmp168 [V176 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
-; V177 tmp169 [V177,T29] ( 3, 6 ) byref -> r13 "field V94._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp169 [V177,T27] ( 3, 6 ) byref -> r12 "field V94._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp170 [V178 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
-; V179 tmp171 [V179,T51] ( 2, 4 ) byref -> rcx "field V98._reference (fldOffset=0x0)" P-INDEP
-; V180 tmp172 [V180,T39] ( 3, 6 ) int -> r12 "field V98._length (fldOffset=0x8)" P-INDEP
+; V179 tmp171 [V179,T51] ( 2, 4 ) byref -> rdx "field V98._reference (fldOffset=0x0)" P-INDEP
+; V180 tmp172 [V180,T38] ( 3, 6 ) int -> rax "field V98._length (fldOffset=0x8)" P-INDEP
;* V181 tmp173 [V181 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP
;* V182 tmp174 [V182 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
-; V183 tmp175 [V183,T52] ( 2, 4 ) byref -> rax "field V104._reference (fldOffset=0x0)" P-INDEP
-; V184 tmp176 [V184,T62] ( 2, 4 ) int -> r8 "field V104._length (fldOffset=0x8)" P-INDEP
+; V183 tmp175 [V183,T52] ( 2, 4 ) byref -> r8 "field V104._reference (fldOffset=0x0)" P-INDEP
+; V184 tmp176 [V184,T62] ( 2, 4 ) int -> r10 "field V104._length (fldOffset=0x8)" P-INDEP
;* V185 tmp177 [V185 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V186 tmp178 [V186 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
; V187 tmp179 [V187,T53] ( 2, 4 ) byref -> rax "field V107._reference (fldOffset=0x0)" P-INDEP
; V188 tmp180 [V188,T63] ( 2, 4 ) int -> r8 "field V107._length (fldOffset=0x8)" P-INDEP
-; V189 tmp181 [V189,T69] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V190 tmp182 [V190,T71] ( 3, 3 ) int -> rdx "index expr"
-; V191 tmp183 [V191,T70] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V192 tmp184 [V192,T72] ( 3, 3 ) int -> rdx "index expr"
-; V193 tmp185 [V193 ] ( 9, 36 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V194 tmp186 [V194 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V195 tmp187 [V195,T64] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V196 tmp188 [V196,T65] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V197 tmp189 [V197,T68] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V198 tmp190 [V198,T19] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V199 tmp191 [V199,T66] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V200 tmp192 [V200,T67] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+; V189 tmp181 [V189,T64] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V190 tmp182 [V190,T66] ( 3, 3 ) int -> rdx "index expr"
+; V191 tmp183 [V191,T65] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V192 tmp184 [V192,T67] ( 3, 3 ) int -> rdx "index expr"
+; V193 tmp185 [V193 ] ( 9, 36 ) struct (16) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
...
+45 (+6.11%) : 1327.dasm - System.Number:FormatCurrencyushort (FullOpts)
@@ -8,17 +8,17 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 18, 34 ) byref -> rbx single-def
-; V01 arg1 [V01,T09] ( 4, 5 ) byref -> rdi single-def
-; V02 arg2 [V02,T10] ( 3, 4 ) int -> rbp single-def
+; V01 arg1 [V01,T20] ( 4, 5 ) byref -> rdi single-def
+; V02 arg2 [V02,T28] ( 3, 4 ) int -> rbp single-def
; V03 arg3 [V03,T07] ( 9, 13 ) ref -> rsi class-hnd exact single-def <System.Globalization.NumberFormatInfo>
;* V04 loc0 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
-; V05 loc1 [V05,T08] ( 4, 10 ) ref -> r14 class-hnd exact single-def <System.String>
+; V05 loc1 [V05,T21] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String>
; V06 loc2 [V06,T01] ( 5, 17 ) int -> r15
; V07 loc3 [V07,T02] ( 6, 16 ) ushort -> rdx
; V08 OutArgs [V08 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V10 tmp2 [V10,T73] ( 3, 2 ) ref -> r14
-; V11 tmp3 [V11,T14] ( 2, 8 ) ref -> r13 class-hnd "impAppendStmt" <<unknown class>>
+; V10 tmp2 [V10,T68] ( 3, 2 ) ref -> r14
+; V11 tmp3 [V11,T11] ( 2, 8 ) ref -> r12 class-hnd "impAppendStmt" <<unknown class>>
;* V12 tmp4 [V12 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V13 tmp5 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V14 tmp6 [V14 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -29,8 +29,8 @@
; V19 tmp11 [V19,T03] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V20 tmp12 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp13 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp14 [V22,T20] ( 2, 8 ) int -> rax "Inlining Arg"
-; V23 tmp15 [V23,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
+; V22 tmp14 [V22,T16] ( 2, 8 ) int -> r8 "Inlining Arg"
+; V23 tmp15 [V23,T12] ( 2, 8 ) byref -> rax "Inlining Arg"
;* V24 tmp16 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp17 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp18 [V26 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -38,7 +38,7 @@
;* V28 tmp20 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp21 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V30 tmp22 [V30 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V31 tmp23 [V31,T30] ( 3, 6 ) int -> [rsp+0x64] spill-single-def "Inline stloc first use temp"
+; V31 tmp23 [V31,T29] ( 3, 6 ) int -> [rsp+0x84] spill-single-def "Inline stloc first use temp"
;* V32 tmp24 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V33 tmp25 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp26 [V34 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -50,8 +50,8 @@
; V40 tmp32 [V40,T04] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V41 tmp33 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp34 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp35 [V43,T21] ( 2, 8 ) int -> r10 "Inlining Arg"
-; V44 tmp36 [V44,T16] ( 2, 8 ) byref -> r8 "Inlining Arg"
+; V43 tmp35 [V43,T17] ( 2, 8 ) int -> r9 "Inlining Arg"
+; V44 tmp36 [V44,T13] ( 2, 8 ) byref -> r10 "Inlining Arg"
;* V45 tmp37 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp38 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp39 [V47 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -59,7 +59,7 @@
;* V49 tmp41 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V50 tmp42 [V50 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V51 tmp43 [V51 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V52 tmp44 [V52,T31] ( 3, 6 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V52 tmp44 [V52,T30] ( 3, 6 ) int -> [rsp+0x80] spill-single-def "Inline stloc first use temp"
;* V53 tmp45 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V54 tmp46 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V55 tmp47 [V55 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
@@ -71,8 +71,8 @@
; V61 tmp53 [V61,T05] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V62 tmp54 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V63 tmp55 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V64 tmp56 [V64,T22] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V65 tmp57 [V65,T17] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V64 tmp56 [V64,T18] ( 2, 8 ) int -> rax "Inlining Arg"
+; V65 tmp57 [V65,T14] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V66 tmp58 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V67 tmp59 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V68 tmp60 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -80,13 +80,13 @@
;* V70 tmp62 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V71 tmp63 [V71 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V72 tmp64 [V72 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V73 tmp65 [V73,T32] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V73 tmp65 [V73,T31] ( 3, 6 ) int -> [rsp+0x7C] spill-single-def "Inline stloc first use temp"
;* V74 tmp66 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V75 tmp67 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V76 tmp68 [V76 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V77 tmp69 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V78 tmp70 [V78 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V79 tmp71 [V79,T11] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V79 tmp71 [V79,T08] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V80 tmp72 [V80 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V81 tmp73 [V81 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V82 tmp74 [V82 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
@@ -95,8 +95,8 @@
; V85 tmp77 [V85,T06] ( 4, 16 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
;* V86 tmp78 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp79 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp80 [V88,T23] ( 2, 8 ) int -> r12 "Inlining Arg"
-; V89 tmp81 [V89,T18] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V88 tmp80 [V88,T19] ( 2, 8 ) int -> rax "Inlining Arg"
+; V89 tmp81 [V89,T15] ( 2, 8 ) byref -> r12 "Inlining Arg"
;* V90 tmp82 [V90 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V91 tmp83 [V91 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V92 tmp84 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
@@ -104,20 +104,20 @@
;* V94 tmp86 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V95 tmp87 [V95 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V96 tmp88 [V96 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V97 tmp89 [V97,T33] ( 3, 6 ) int -> r12 "Inline stloc first use temp"
+; V97 tmp89 [V97,T32] ( 3, 6 ) int -> [rsp+0x78] spill-single-def "Inline stloc first use temp"
;* V98 tmp90 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V99 tmp91 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V100 tmp92 [V100 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V101 tmp93 [V101 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V102 tmp94 [V102 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V103 tmp95 [V103,T12] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V103 tmp95 [V103,T09] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V104 tmp96 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V105 tmp97 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V106 tmp98 [V106,T13] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
+; V106 tmp98 [V106,T10] ( 4, 8 ) int -> rcx "Inline stloc first use temp"
;* V107 tmp99 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]>
;* V108 tmp100 [V108 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V109 tmp101 [V109,T40] ( 2, 4 ) byref -> r12 "field V12._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp102 [V110,T54] ( 2, 4 ) int -> [rsp+0x5C] spill-single-def "field V12._length (fldOffset=0x8)" P-INDEP
+; V109 tmp101 [V109,T40] ( 2, 4 ) byref -> [rsp+0x48] spill-single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp102 [V110,T54] ( 2, 4 ) int -> [rsp+0x74] spill-single-def "field V12._length (fldOffset=0x8)" P-INDEP
;* V111 tmp103 [V111 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp104 [V112 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
;* V113 tmp105 [V113 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-INDEP
@@ -126,90 +126,85 @@
;* V116 tmp108 [V116 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
;* V117 tmp109 [V117 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V118 tmp110 [V118 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V119 tmp111 [V119,T24] ( 3, 6 ) byref -> r12 "field V18._reference (fldOffset=0x0)" P-INDEP
-; V120 tmp112 [V120,T34] ( 3, 6 ) int -> rax "field V18._length (fldOffset=0x8)" P-INDEP
-; V121 tmp113 [V121,T41] ( 2, 4 ) byref -> r12 "field V20._reference (fldOffset=0x0)" P-INDEP
-; V122 tmp114 [V122,T55] ( 2, 4 ) int -> rax "field V20._length (fldOffset=0x8)" P-INDEP
+; V119 tmp111 [V119,T22] ( 3, 6 ) byref -> rax "field V18._reference (fldOffset=0x0)" P-INDEP
+; V120 tmp112 [V120,T33] ( 3, 6 ) int -> r8 "field V18._length (fldOffset=0x8)" P-INDEP
+; V121 tmp113 [V121,T41] ( 2, 4 ) byref -> rax "field V20._reference (fldOffset=0x0)" P-INDEP
+; V122 tmp114 [V122,T55] ( 2, 4 ) int -> r8 "field V20._length (fldOffset=0x8)" P-INDEP
;* V123 tmp115 [V123 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V124 tmp116 [V124 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V125 tmp117 [V125,T42] ( 2, 4 ) byref -> r12 "field V28._reference (fldOffset=0x0)" P-INDEP
+; V125 tmp117 [V125,T42] ( 2, 4 ) byref -> [rsp+0x40] spill-single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V126 tmp118 [V126 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V127 tmp119 [V127,T43] ( 2, 4 ) byref -> r12 "field V32._reference (fldOffset=0x0)" P-INDEP
-; V128 tmp120 [V128,T56] ( 2, 4 ) int -> rax "field V32._length (fldOffset=0x8)" P-INDEP
+; V127 tmp119 [V127,T43] ( 2, 4 ) byref -> rax "field V32._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp120 [V128,T56] ( 2, 4 ) int -> r8 "field V32._length (fldOffset=0x8)" P-INDEP
;* V129 tmp121 [V129 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V130 tmp122 [V130 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V131 tmp123 [V131 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V132 tmp124 [V132 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
;* V133 tmp125 [V133 ] ( 0, 0 ) byref -> zero-ref "field V38._reference (fldOffset=0x0)" P-INDEP
;* V134 tmp126 [V134 ] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
-; V135 tmp127 [V135,T25] ( 3, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V136 tmp128 [V136,T35] ( 3, 6 ) int -> r10 "field V39._length (fldOffset=0x8)" P-INDEP
-; V137 tmp129 [V137,T44] ( 2, 4 ) byref -> r8 "field V41._reference (fldOffset=0x0)" P-INDEP
-; V138 tmp130 [V138,T57] ( 2, 4 ) int -> r10 "field V41._length (fldOffset=0x8)" P-INDEP
+; V135 tmp127 [V135,T23] ( 3, 6 ) byref -> r10 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp128 [V136,T34] ( 3, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
+; V137 tmp129 [V137,T44] ( 2, 4 ) byref -> r10 "field V41._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp130 [V138,T57] ( 2, 4 ) int -> r9 "field V41._length (fldOffset=0x8)" P-INDEP
;* V139 tmp131 [V139 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP
;* V140 tmp132 [V140 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V141 tmp133 [V141,T45] ( 2, 4 ) byref -> [rsp+0x30] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+; V141 tmp133 [V141,T45] ( 2, 4 ) byref -> [rsp+0x38] spill-single-def "field V49._reference (fldOffset=0x0)" P-INDEP
;* V142 tmp134 [V142 ] ( 0, 0 ) int -> zero-ref "field V49._length (fldOffset=0x8)" P-INDEP
-; V143 tmp135 [V143,T46] ( 2, 4 ) byref -> r8 "field V53._reference (fldOffset=0x0)" P-INDEP
-; V144 tmp136 [V144,T58] ( 2, 4 ) int -> r10 "field V53._length (fldOffset=0x8)" P-INDEP
+; V143 tmp135 [V143,T46] ( 2, 4 ) byref -> r10 "field V53._reference (fldOffset=0x0)" P-INDEP
+; V144 tmp136 [V144,T58] ( 2, 4 ) int -> r9 "field V53._length (fldOffset=0x8)" P-INDEP
;* V145 tmp137 [V145 ] ( 0, 0 ) byref -> zero-ref "field V54._reference (fldOffset=0x0)" P-INDEP
;* V146 tmp138 [V146 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP
;* V147 tmp139 [V147 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V148 tmp140 [V148 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
;* V149 tmp141 [V149 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP
;* V150 tmp142 [V150 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP
-; V151 tmp143 [V151,T26] ( 3, 6 ) byref -> r13 "field V60._reference (fldOffset=0x0)" P-INDEP
-; V152 tmp144 [V152,T36] ( 3, 6 ) int -> r12 "field V60._length (fldOffset=0x8)" P-INDEP
-; V153 tmp145 [V153,T47] ( 2, 4 ) byref -> r13 "field V62._reference (fldOffset=0x0)" P-INDEP
-; V154 tmp146 [V154,T59] ( 2, 4 ) int -> r12 "field V62._length (fldOffset=0x8)" P-INDEP
+; V151 tmp143 [V151,T24] ( 3, 6 ) byref -> r12 "field V60._reference (fldOffset=0x0)" P-INDEP
+; V152 tmp144 [V152,T35] ( 3, 6 ) int -> rax "field V60._length (fldOffset=0x8)" P-INDEP
+; V153 tmp145 [V153,T47] ( 2, 4 ) byref -> r12 "field V62._reference (fldOffset=0x0)" P-INDEP
+; V154 tmp146 [V154,T59] ( 2, 4 ) int -> rax "field V62._length (fldOffset=0x8)" P-INDEP
;* V155 tmp147 [V155 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP
;* V156 tmp148 [V156 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
-; V157 tmp149 [V157,T27] ( 3, 6 ) byref -> r13 "field V70._reference (fldOffset=0x0)" P-INDEP
+; V157 tmp149 [V157,T25] ( 3, 6 ) byref -> r12 "field V70._reference (fldOffset=0x0)" P-INDEP
;* V158 tmp150 [V158 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP
-; V159 tmp151 [V159,T48] ( 2, 4 ) byref -> rcx "field V74._reference (fldOffset=0x0)" P-INDEP
-; V160 tmp152 [V160,T37] ( 3, 6 ) int -> r12 "field V74._length (fldOffset=0x8)" P-INDEP
+; V159 tmp151 [V159,T48] ( 2, 4 ) byref -> rdx "field V74._reference (fldOffset=0x0)" P-INDEP
+; V160 tmp152 [V160,T36] ( 3, 6 ) int -> rax "field V74._length (fldOffset=0x8)" P-INDEP
;* V161 tmp153 [V161 ] ( 0, 0 ) byref -> zero-ref "field V75._reference (fldOffset=0x0)" P-INDEP
;* V162 tmp154 [V162 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V163 tmp155 [V163,T49] ( 2, 4 ) byref -> rax "field V80._reference (fldOffset=0x0)" P-INDEP
-; V164 tmp156 [V164,T60] ( 2, 4 ) int -> r8 "field V80._length (fldOffset=0x8)" P-INDEP
+; V163 tmp155 [V163,T49] ( 2, 4 ) byref -> r8 "field V80._reference (fldOffset=0x0)" P-INDEP
+; V164 tmp156 [V164,T60] ( 2, 4 ) int -> r10 "field V80._length (fldOffset=0x8)" P-INDEP
;* V165 tmp157 [V165 ] ( 0, 0 ) byref -> zero-ref "field V81._reference (fldOffset=0x0)" P-INDEP
;* V166 tmp158 [V166 ] ( 0, 0 ) int -> zero-ref "field V81._length (fldOffset=0x8)" P-INDEP
;* V167 tmp159 [V167 ] ( 0, 0 ) byref -> zero-ref "field V82._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp160 [V168 ] ( 0, 0 ) int -> zero-ref "field V82._length (fldOffset=0x8)" P-INDEP
;* V169 tmp161 [V169 ] ( 0, 0 ) byref -> zero-ref "field V83._reference (fldOffset=0x0)" P-INDEP
;* V170 tmp162 [V170 ] ( 0, 0 ) int -> zero-ref "field V83._length (fldOffset=0x8)" P-INDEP
-; V171 tmp163 [V171,T28] ( 3, 6 ) byref -> r13 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V172 tmp164 [V172,T38] ( 3, 6 ) int -> r12 "field V84._length (fldOffset=0x8)" P-INDEP
-; V173 tmp165 [V173,T50] ( 2, 4 ) byref -> r13 "field V86._reference (fldOffset=0x0)" P-INDEP
-; V174 tmp166 [V174,T61] ( 2, 4 ) int -> r12 "field V86._length (fldOffset=0x8)" P-INDEP
+; V171 tmp163 [V171,T26] ( 3, 6 ) byref -> r12 "field V84._reference (fldOffset=0x0)" P-INDEP
+; V172 tmp164 [V172,T37] ( 3, 6 ) int -> rax "field V84._length (fldOffset=0x8)" P-INDEP
+; V173 tmp165 [V173,T50] ( 2, 4 ) byref -> r12 "field V86._reference (fldOffset=0x0)" P-INDEP
+; V174 tmp166 [V174,T61] ( 2, 4 ) int -> rax "field V86._length (fldOffset=0x8)" P-INDEP
;* V175 tmp167 [V175 ] ( 0, 0 ) byref -> zero-ref "field V87._reference (fldOffset=0x0)" P-INDEP
;* V176 tmp168 [V176 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP
-; V177 tmp169 [V177,T29] ( 3, 6 ) byref -> r13 "field V94._reference (fldOffset=0x0)" P-INDEP
+; V177 tmp169 [V177,T27] ( 3, 6 ) byref -> r12 "field V94._reference (fldOffset=0x0)" P-INDEP
;* V178 tmp170 [V178 ] ( 0, 0 ) int -> zero-ref "field V94._length (fldOffset=0x8)" P-INDEP
-; V179 tmp171 [V179,T51] ( 2, 4 ) byref -> rcx "field V98._reference (fldOffset=0x0)" P-INDEP
-; V180 tmp172 [V180,T39] ( 3, 6 ) int -> r12 "field V98._length (fldOffset=0x8)" P-INDEP
+; V179 tmp171 [V179,T51] ( 2, 4 ) byref -> rdx "field V98._reference (fldOffset=0x0)" P-INDEP
+; V180 tmp172 [V180,T38] ( 3, 6 ) int -> rax "field V98._length (fldOffset=0x8)" P-INDEP
;* V181 tmp173 [V181 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP
;* V182 tmp174 [V182 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
-; V183 tmp175 [V183,T52] ( 2, 4 ) byref -> rax "field V104._reference (fldOffset=0x0)" P-INDEP
-; V184 tmp176 [V184,T62] ( 2, 4 ) int -> r8 "field V104._length (fldOffset=0x8)" P-INDEP
+; V183 tmp175 [V183,T52] ( 2, 4 ) byref -> r8 "field V104._reference (fldOffset=0x0)" P-INDEP
+; V184 tmp176 [V184,T62] ( 2, 4 ) int -> r10 "field V104._length (fldOffset=0x8)" P-INDEP
;* V185 tmp177 [V185 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP
;* V186 tmp178 [V186 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
; V187 tmp179 [V187,T53] ( 2, 4 ) byref -> rax "field V107._reference (fldOffset=0x0)" P-INDEP
; V188 tmp180 [V188,T63] ( 2, 4 ) int -> r8 "field V107._length (fldOffset=0x8)" P-INDEP
-; V189 tmp181 [V189,T69] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V190 tmp182 [V190,T71] ( 3, 3 ) int -> rdx "index expr"
-; V191 tmp183 [V191,T70] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V192 tmp184 [V192,T72] ( 3, 3 ) int -> rdx "index expr"
-; V193 tmp185 [V193 ] ( 9, 36 ) struct (16) [rsp+0x48] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V194 tmp186 [V194 ] ( 3, 12 ) struct (16) [rsp+0x38] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-;* V195 tmp187 [V195,T64] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V196 tmp188 [V196,T65] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V197 tmp189 [V197,T68] ( 0, 0 ) int -> zero-ref "argument with side effect"
-; V198 tmp190 [V198,T19] ( 2, 8 ) ref -> r9 "argument with side effect"
-;* V199 tmp191 [V199,T66] ( 0, 0 ) byref -> zero-ref "argument with side effect"
-;* V200 tmp192 [V200,T67] ( 0, 0 ) byref -> zero-ref "argument with side effect"
+; V189 tmp181 [V189,T64] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V190 tmp182 [V190,T66] ( 3, 3 ) int -> rdx "index expr"
+; V191 tmp183 [V191,T65] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V192 tmp184 [V192,T67] ( 3, 3 ) int -> rdx "index expr"
+; V193 tmp185 [V193 ] ( 9, 36 ) struct (16) [rsp+0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
...
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
To reproduce these diffs on Windows x64:
Details
Improvements/regressions per collection
Collection
Contexts with diffs
Improvements
Regressions
Same size
Improvements (bytes)
Regressions (bytes)
aspnet.run.windows.x64.checked.mch
8,990
4,644
950
3,396
-131,823
+5,692
benchmarks.run.windows.x64.checked.mch
1,708
380
298
1,030
-4,443
+2,159
benchmarks.run_pgo.windows.x64.checked.mch
6,502
4,281
662
1,559
-139,672
+5,182
benchmarks.run_tiered.windows.x64.checked.mch
2,905
2,517
96
292
-77,786
+812
coreclr_tests.run.windows.x64.checked.mch
41,396
36,443
1,447
3,506
-1,001,773
+7,072
libraries.crossgen2.windows.x64.checked.mch
11,843
1,802
1,255
8,786
-38,817
+5,869
libraries.pmi.windows.x64.checked.mch
14,711
2,884
2,140
9,687
-28,373
+11,478
libraries_tests.run.windows.x64.Release.mch
57,188
44,246
3,757
9,185
-1,374,030
+27,810
librariestestsnotieredcompilation.run.windows.x64.Release.mch
30,739
8,293
3,775
18,671
-117,758
+20,951
realworld.run.windows.x64.checked.mch
3,064
863
584
1,617
-19,130
+5,864
smoke_tests.nativeaot.windows.x64.checked.mch
1,252
210
229
813
-1,464
+1,190
180,298
106,563
15,193
58,542
-2,935,069
+94,079
Context information
Collection
Diffed contexts
MinOpts
FullOpts
Missed, base
Missed, diff
aspnet.run.windows.x64.checked.mch
113,436
48,462
64,974
972 (0.85%)
978 (0.85%)
benchmarks.run.windows.x64.checked.mch
28,173
4
28,169
4 (0.01%)
5 (0.02%)
benchmarks.run_pgo.windows.x64.checked.mch
101,022
50,170
50,852
131 (0.13%)
131 (0.13%)
benchmarks.run_tiered.windows.x64.checked.mch
54,253
36,844
17,409
2 (0.00%)
2 (0.00%)
coreclr_tests.run.windows.x64.checked.mch
574,111
341,113
232,998
301 (0.05%)
301 (0.05%)
libraries.crossgen2.windows.x64.checked.mch
243,023
15
243,008
0 (0.00%)
0 (0.00%)
libraries.pmi.windows.x64.checked.mch
307,628
6
307,622
9 (0.00%)
13 (0.00%)
libraries_tests.run.windows.x64.Release.mch
682,147
485,176
196,971
2,467 (0.36%)
2,470 (0.36%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
319,773
21,886
297,887
10 (0.00%)
13 (0.00%)
realworld.run.windows.x64.checked.mch
36,885
3
36,882
3 (0.01%)
3 (0.01%)
smoke_tests.nativeaot.windows.x64.checked.mch
32,444
10
32,434
0 (0.00%)
0 (0.00%)
2,492,895
983,689
1,509,206
3,899 (0.16%)
3,916 (0.16%)
jit-analyze output
aspnet.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 42178999 (overridden on cmd)
Total bytes of diff: 42052868 (overridden on cmd)
Total bytes of delta: -126131 (-0.30 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
67 : 62412.dasm (1.01 % of base)
67 : 58862.dasm (1.02 % of base)
67 : 50306.dasm (1.02 % of base)
53 : 100886.dasm (0.49 % of base)
53 : 91619.dasm (0.49 % of base)
47 : 101029.dasm (0.41 % of base)
45 : 91769.dasm (0.40 % of base)
43 : 90456.dasm (0.83 % of base)
42 : 101987.dasm (0.33 % of base)
42 : 92119.dasm (3.38 % of base)
42 : 88086.dasm (3.38 % of base)
42 : 89126.dasm (0.33 % of base)
42 : 101365.dasm (3.38 % of base)
42 : 93027.dasm (0.33 % of base)
35 : 110748.dasm (2.14 % of base)
34 : 58891.dasm (10.49 % of base)
34 : 60268.dasm (10.66 % of base)
34 : 62480.dasm (10.49 % of base)
32 : 113692.dasm (1.07 % of base)
32 : 54688.dasm (0.50 % of base)
Top file improvements (bytes):
-1361 : 11900.dasm (-11.14 % of base)
-919 : 24164.dasm (-2.99 % of base)
-611 : 67599.dasm (-15.10 % of base)
-578 : 99792.dasm (-15.67 % of base)
-563 : 76260.dasm (-2.60 % of base)
-529 : 15919.dasm (-17.26 % of base)
-521 : 72801.dasm (-18.08 % of base)
-455 : 23961.dasm (-2.25 % of base)
-455 : 22895.dasm (-3.84 % of base)
-393 : 24090.dasm (-2.38 % of base)
-379 : 103689.dasm (-8.77 % of base)
-325 : 24573.dasm (-4.69 % of base)
-323 : 22962.dasm (-5.59 % of base)
-313 : 82684.dasm (-7.64 % of base)
-313 : 86065.dasm (-6.70 % of base)
-305 : 79976.dasm (-6.94 % of base)
-294 : 68722.dasm (-21.78 % of base)
-288 : 54971.dasm (-7.51 % of base)
-286 : 68437.dasm (-22.10 % of base)
-273 : 79409.dasm (-2.89 % of base)
84 total files with Code Size differences (50 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
67 (1.01 % of base) : 62412.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9[Benchmarks.Middleware.JsonMessage]:MoveNext():this (Tier1)
67 (1.02 % of base) : 58862.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9[Benchmarks.Middleware.JsonMessage]:MoveNext():this (Tier1)
67 (1.02 % of base) : 50306.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9[Benchmarks.Middleware.JsonMessage]:MoveNext():this (Tier1)
53 (0.49 % of base) : 100886.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
53 (0.49 % of base) : 91619.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
47 (0.41 % of base) : 101029.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
45 (0.40 % of base) : 91769.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
43 (0.83 % of base) : 90456.dasm - Microsoft.AspNetCore.Authentication.AuthenticationMiddleware+<Invoke>d__6:MoveNext():this (Tier1)
42 (0.33 % of base) : 101987.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
42 (0.33 % of base) : 89126.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
42 (0.33 % of base) : 93027.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
42 (3.38 % of base) : 92119.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
42 (3.38 % of base) : 88086.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
42 (3.38 % of base) : 101365.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
35 (2.14 % of base) : 110748.dasm - System.Reflection.RuntimeAssembly:GetTypeCore(System.Runtime.CompilerServices.QCallAssembly,System.String,System.ReadOnlySpan`1[System.String],int,System.Runtime.CompilerServices.ObjectHandleOnStack) (Tier1)
34 (10.49 % of base) : 58891.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
34 (10.66 % of base) : 60268.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
34 (10.49 % of base) : 62480.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
32 (1.07 % of base) : 113692.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.ConnectionDispatcher`1+<>c__DisplayClass10_0+<<StartAcceptingConnectionsCore>g__AcceptConnectionsAsync|0>d[System.__Canon]:MoveNext():this (Tier1)
32 (0.50 % of base) : 54688.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1-OSR)
Top method improvements (bytes):
-1361 (-11.14 % of base) : 11900.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier0)
-919 (-2.99 % of base) : 24164.dasm - Microsoft.EntityFrameworkCore.Query.RelationalShapedQueryCompilingExpressionVisitor+ShaperProcessingExpressionVisitor:VisitExtension(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (Instrumented Tier0)
-611 (-15.10 % of base) : 67599.dasm - System.Diagnostics.FileVersionInfo:GetVersionInfoForCodePage(ulong,System.String):ubyte:this (Tier0)
-578 (-15.67 % of base) : 99792.dasm - System.Enum:TryFormatUnconstrained[int](int,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (Instrumented Tier0)
-563 (-2.60 % of base) : 76260.dasm - AngleSharp.Css.Map:.cctor() (Tier0)
-529 (-17.26 % of base) : 15919.dasm - System.Enum:TryFormatUnconstrained[int](int,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (Tier0)
-521 (-18.08 % of base) : 72801.dasm - System.Enum:System.ISpanFormattable.TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier0)
-455 (-3.84 % of base) : 22895.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateData(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Instrumented Tier0)
-455 (-2.25 % of base) : 23961.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (Instrumented Tier0)
-393 (-2.38 % of base) : 24090.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:ApplyProjection(System.Linq.Expressions.Expression,int,int):System.Linq.Expressions.Expression:this (Instrumented Tier0)
-379 (-8.77 % of base) : 103689.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-325 (-4.69 % of base) : 24573.dasm - Microsoft.EntityFrameworkCore.Storage.RelationalCommand+<ExecuteReaderAsync>d__18:MoveNext():this (Tier0)
-323 (-5.59 % of base) : 22962.dasm - Microsoft.EntityFrameworkCore.Infrastructure.RelationalModelValidator:ValidateSharedTableCompatibility(System.Collections.Generic.IReadOnlyList`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType],byref,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Instrumented Tier0)
-313 (-6.70 % of base) : 86065.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM_S_D(byref,ubyte,byref):ubyte (Instrumented Tier0)
-313 (-7.64 % of base) : 82684.dasm - System.Globalization.TimeSpanParse:ProcessTerminal_HM_S_D(byref,ubyte,byref):ubyte (Tier0)
-305 (-6.94 % of base) : 79976.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
-294 (-21.78 % of base) : 68722.dasm - NLog.Extensions.Logging.NLogLogger:CreateLogEventInfo[Microsoft.Extensions.Logging.FormattedLogValues](NLog.LogLevel,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.FormattedLogValues,System.Exception,System.Func`3[Microsoft.Extensions.Logging.FormattedLogValues,System.Exception,System.String]):NLog.LogEventInfo:this (Tier0)
-288 (-7.51 % of base) : 54971.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharAtomicLoop|25(System.Text.RegularExpressions.RegexNode):this (Tier0)
-286 (-22.10 % of base) : 68437.dasm - NLog.Extensions.Logging.NLogLogger:CreateLogEventInfo[Microsoft.Extensions.Logging.LoggerMessage+LogValues`1[System.__Canon]](NLog.LogLevel,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.LoggerMessage+LogValues`1[System.__Canon],System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`1[System.__Canon],System.__Canon,System.__Canon]):NLog.LogEventInfo:this (Tier0)
-273 (-2.89 % of base) : 79409.dasm - OrchardCore.ContentManagement.Display.ContentItemDisplayCoordinator+<BuildDisplayAsync>d__7:MoveNext():this (Instrumented Tier0)
Top method regressions (percentages):
34 (10.66 % of base) : 60268.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
34 (10.49 % of base) : 58891.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
34 (10.49 % of base) : 62480.dasm - System.Text.Json.Utf8JsonWriter:WriteStringHelperEscapeValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ushort]):this (Tier1)
20 (5.71 % of base) : 113842.dasm - System.Net.Sockets.Socket:DoBind(System.Net.EndPoint,System.Net.SocketAddress):this (Tier1)
20 (5.71 % of base) : 112049.dasm - System.Net.Sockets.Socket:DoBind(System.Net.EndPoint,System.Net.SocketAddress):this (Tier1)
20 (5.71 % of base) : 99460.dasm - System.Net.Sockets.Socket:DoBind(System.Net.EndPoint,System.Net.SocketAddress):this (Tier1)
15 (5.19 % of base) : 12173.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.FormattedLogValues](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.FormattedLogValues,System.Exception,System.String],byref,byref) (FullOpts)
4 (4.88 % of base) : 82245.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder:ResolveService(Microsoft.Extensions.DependencyInjection.ServiceLookup.ILEmitResolverBuilder+ILEmitResolverBuilderRuntimeContext,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope):System.Object (FullOpts)
6 (4.80 % of base) : 89511.dasm - System.Text.Encodings.Web.TextEncoder:Encode(System.IO.TextWriter,System.String):this (Tier1)
15 (4.70 % of base) : 100077.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (Tier1)
2 (4.44 % of base) : 37462.dasm - System.IO.Pipelines.StreamPipeReader:ReadAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:this (Instrumented Tier1)
2 (4.44 % of base) : 32340.dasm - System.IO.Pipelines.StreamPipeReader:ReadAsync(System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.ReadResult]:this (Tier1)
7 (3.85 % of base) : 67083.dasm - System.String:Format[int,System.__Canon](System.IFormatProvider,System.Text.CompositeFormat,int,System.__Canon):System.String (FullOpts)
3 (3.66 % of base) : 38407.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.StringUtilities+<>c:<.cctor>b__25_1(System.Span`1[ushort],long):this (Instrumented Tier1)
3 (3.53 % of base) : 37236.dasm - Microsoft.AspNetCore.Mvc.Razor.Infrastructure.DefaultTagHelperActivator+Cache`1[System.__Canon]:Create(System.IServiceProvider):System.__Canon (Instrumented Tier1)
7 (3.50 % of base) : 100177.dasm - System.String:Format[int,System.__Canon](System.IFormatProvider,System.Text.CompositeFormat,int,System.__Canon):System.String (Tier1)
42 (3.38 % of base) : 92119.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
42 (3.38 % of base) : 88086.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
42 (3.38 % of base) : 101365.dasm - System.Reflection.MethodBaseInvoker:InvokeWithFewArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier1)
9 (3.20 % of base) : 78928.dasm - Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadata:get_ValidationMetadata():Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.ValidationMetadata:this (Tier0)
Top method improvements (percentages):
-34 (-28.33 % of base) : 73174.dasm - Microsoft.Extensions.Configuration.ConfigurationBinder:GetValue[System.Nullable`1[System.TimeSpan]](Microsoft.Extensions.Configuration.IConfiguration,System.String):System.Nullable`1[System.TimeSpan] (Tier0)
-28 (-26.42 % of base) : 84090.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Instrumented Tier0)
-28 (-26.42 % of base) : 11363.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Tier0)
-69 (-23.63 % of base) : 29373.dasm - Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker:.ctor(Microsoft.Extensions.Logging.ILogger,System.Diagnostics.DiagnosticListener,Microsoft.AspNetCore.Mvc.Infrastructure.IActionContextAccessor,Microsoft.AspNetCore.Mvc.Infrastructure.IActionResultTypeMapper,Microsoft.AspNetCore.Mvc.ControllerContext,Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvokerCacheEntry,Microsoft.AspNetCore.Mvc.Filters.IFilterMetadata[]):this (Instrumented Tier0)
-54 (-23.58 % of base) : 26568.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol:FirstWriteAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.IO.Pipelines.FlushResult]:this (Tier0)
-25 (-23.15 % of base) : 5558.dasm - Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.ConnectionManager:.ctor(Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure.KestrelTrace,System.Nullable`1[long]):this (Tier0)
-34 (-22.82 % of base) : 4767.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitDisposeCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0)
-78 (-22.54 % of base) : 12914.dasm - System.Net.WebSockets.ManagedWebSocket:SendFrameAsync(ubyte,ubyte,ubyte,System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (Tier0)
-22 (-22.45 % of base) : 83914.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryIndexOfAny(byref,int,System.ReadOnlySpan`1[ushort],byref):ubyte (Instrumented Tier0)
-22 (-22.45 % of base) : 67791.dasm - System.Buffers.IndexOfAnyAsciiSearcher:TryIndexOfAny(byref,int,System.ReadOnlySpan`1[ushort],byref):ubyte (Tier0)
-22 (-22.45 % of base) : 25481.dasm - System.Diagnostics.Metrics.Histogram`1[double]:Record(double,System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (Tier0)
-286 (-22.10 % of base) : 68437.dasm - NLog.Extensions.Logging.NLogLogger:CreateLogEventInfo[Microsoft.Extensions.Logging.LoggerMessage+LogValues`1[System.__Canon]](NLog.LogLevel,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.LoggerMessage+LogValues`1[System.__Canon],System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`1[System.__Canon],System.__Canon,System.__Canon]):NLog.LogEventInfo:this (Tier0)
-30 (-22.06 % of base) : 16708.dasm - Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider:GetMetadataCacheEntryForObjectType():Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadataProvider+ModelMetadataCacheEntry:this (Tier0)
-25 (-21.93 % of base) : 82342.dasm - System.Globalization.CalendarData:EnumCalendarInfo(System.String,ushort,int,byref):ubyte (Tier0)
-17 (-21.79 % of base) : 74299.dasm - Jint.Collections.StringDictionarySlim`1[System.__Canon]:get_Item(Jint.Key):byref:this (Tier0)
-17 (-21.79 % of base) : 16630.dasm - Microsoft.Extensions.Primitives.StringSegment:op_Equality(Microsoft.Extensions.Primitives.StringSegment,Microsoft.Extensions.Primitives.StringSegment):ubyte (Tier0)
-17 (-21.79 % of base) : 5881.dasm - System.Net.IPAddress+ReadOnlyIPAddress:.ctor(System.ReadOnlySpan`1[ubyte]):this (Tier0)
-17 (-21.79 % of base) : 27843.dasm - System.Reflection.RuntimeAssembly+ManifestResourceStream:Read(System.Span`1[ubyte]):int:this (Instrumented Tier0)
-17 (-21.79 % of base) : 11322.dasm - System.Reflection.RuntimeAssembly+ManifestResourceStream:Read(System.Span`1[ubyte]):int:this (Tier0)
-17 (-21.79 % of base) : 29681.dasm - System.Threading.CancellationTokenRegistration:op_Equality(System.Threading.CancellationTokenRegistration,System.Threading.CancellationTokenRegistration):ubyte (Instrumented Tier0)
benchmarks.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 8747477 (overridden on cmd)
Total bytes of diff: 8745193 (overridden on cmd)
Total bytes of delta: -2284 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
278 : 5382.dasm (2.70 % of base)
118 : 19612.dasm (6.93 % of base)
70 : 20162.dasm (1.46 % of base)
65 : 22145.dasm (5.35 % of base)
50 : 771.dasm (6.20 % of base)
40 : 14832.dasm (5.78 % of base)
38 : 23525.dasm (2.32 % of base)
35 : 22897.dasm (0.30 % of base)
34 : 21757.dasm (4.66 % of base)
31 : 661.dasm (5.79 % of base)
28 : 10108.dasm (2.43 % of base)
28 : 23914.dasm (1.75 % of base)
26 : 5796.dasm (1.57 % of base)
25 : 16075.dasm (2.14 % of base)
25 : 26652.dasm (5.52 % of base)
24 : 8621.dasm (1.74 % of base)
23 : 11488.dasm (0.67 % of base)
22 : 10890.dasm (1.37 % of base)
22 : 7369.dasm (1.92 % of base)
18 : 20075.dasm (0.93 % of base)
Top file improvements (bytes):
-379 : 9043.dasm (-8.74 % of base)
-232 : 11562.dasm (-11.66 % of base)
-220 : 3214.dasm (-1.92 % of base)
-100 : 15695.dasm (-5.43 % of base)
-95 : 25423.dasm (-15.25 % of base)
-79 : 21697.dasm (-14.13 % of base)
-74 : 8023.dasm (-2.66 % of base)
-73 : 18358.dasm (-2.15 % of base)
-69 : 7301.dasm (-0.40 % of base)
-67 : 19809.dasm (-2.86 % of base)
-61 : 1632.dasm (-12.20 % of base)
-56 : 3818.dasm (-1.26 % of base)
-55 : 4682.dasm (-5.78 % of base)
-52 : 5369.dasm (-1.91 % of base)
-50 : 24720.dasm (-12.59 % of base)
-46 : 21646.dasm (-7.29 % of base)
-42 : 26086.dasm (-2.58 % of base)
-41 : 9001.dasm (-1.89 % of base)
-36 : 25399.dasm (-0.22 % of base)
-36 : 2564.dasm (-4.39 % of base)
71 total files with Code Size differences (37 improved, 34 regressed), 20 unchanged.
Top method regressions (bytes):
278 (2.70 % of base) : 5382.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
118 (6.93 % of base) : 19612.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetCompilationReferences(System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref):this (FullOpts)
70 (1.46 % of base) : 20162.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
65 (5.35 % of base) : 22145.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
50 (6.20 % of base) : 771.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
40 (5.78 % of base) : 14832.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
38 (2.32 % of base) : 23525.dasm - BenchmarksGame.BinaryTrees_5:Bench(int,ubyte):int (FullOpts)
35 (0.30 % of base) : 22897.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
34 (4.66 % of base) : 21757.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
31 (5.79 % of base) : 661.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
28 (1.75 % of base) : 23914.dasm - System.Text.Json.Utf8JsonReader:ConsumeNextTokenUntilAfterAllCommentsAreSkippedMultiSegment(ubyte):ubyte:this (FullOpts)
28 (2.43 % of base) : 10108.dasm - System.Xml.Serialization.XmlSerializationILGen:GenerateGetSerializer(System.Collections.Generic.Dictionary`2[System.String,System.String],System.Xml.Serialization.XmlMapping[],System.Reflection.Emit.TypeBuilder):this (FullOpts)
26 (1.57 % of base) : 5796.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:.ctor(System.Collections.Generic.ICollection`1[Microsoft.Extensions.DependencyInjection.ServiceDescriptor],Microsoft.Extensions.DependencyInjection.ServiceProviderOptions):this (FullOpts)
25 (2.14 % of base) : 16075.dasm - System.Text.Json.Utf8JsonReader:ConsumeNextTokenUntilAfterAllCommentsAreSkipped(ubyte):ubyte:this (FullOpts)
25 (5.52 % of base) : 26652.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
24 (1.74 % of base) : 8621.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],System.__Canon]:TryRemoveInternal(System.ValueTuple`3[System.__Canon,System.__Canon,System.__Canon],byref,ubyte,System.__Canon):ubyte:this (FullOpts)
23 (0.67 % of base) : 11488.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (FullOpts)
22 (1.37 % of base) : 10890.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:LocationSerializeHandler(System.Text.Json.Utf8JsonWriter,MicroBenchmarks.Serializers.Location):this (FullOpts)
22 (1.92 % of base) : 7369.dasm - System.Collections.Generic.GenericArraySortHelper`2[System.__Canon,System.__Canon]:IntroSort(System.Span`1[System.__Canon],System.Span`1[System.__Canon],int) (FullOpts)
18 (0.93 % of base) : 20075.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (FullOpts)
Top method improvements (bytes):
-379 (-8.74 % of base) : 9043.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-232 (-11.66 % of base) : 11562.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-220 (-1.92 % of base) : 3214.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (FullOpts)
-100 (-5.43 % of base) : 15695.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-95 (-15.25 % of base) : 25423.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-79 (-14.13 % of base) : 21697.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-74 (-2.66 % of base) : 8023.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode.EmitRead(ProtoBuf.Compiler.CompilerContext,ProtoBuf.Compiler.Local):this (FullOpts)
-73 (-2.15 % of base) : 18358.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-69 (-0.40 % of base) : 7301.dasm - (dynamicClass):_DynamicMethod1(System.IO.TextReader,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-67 (-2.86 % of base) : 19809.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
-61 (-12.20 % of base) : 1632.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-56 (-1.26 % of base) : 3818.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
-55 (-5.78 % of base) : 4682.dasm - System.Text.Encoding:GetCharsWithFallback(ulong,int,ulong,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
-52 (-1.91 % of base) : 5369.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
-50 (-12.59 % of base) : 24720.dasm - System.Enum:TryParseByValueOrName[int,uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-46 (-7.29 % of base) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-42 (-2.58 % of base) : 26086.dasm - System.IO.Tests.Perf_RandomAccess+<WriteAsync>d__17:MoveNext():this (FullOpts)
-41 (-1.89 % of base) : 9001.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:.ctor(System.Type):this (FullOpts)
-36 (-0.22 % of base) : 25399.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
-36 (-4.39 % of base) : 2564.dasm - System.Net.Http.HttpConnectionPoolManager:SendAsync(System.Net.Http.HttpRequestMessage,ubyte,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Http.HttpResponseMessage]:this (FullOpts)
Top method regressions (percentages):
118 (6.93 % of base) : 19612.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetCompilationReferences(System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref):this (FullOpts)
50 (6.20 % of base) : 771.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
31 (5.79 % of base) : 661.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.78 % of base) : 14832.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
25 (5.52 % of base) : 26652.dasm - V8.Crypto.BigInteger:rShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)
65 (5.35 % of base) : 22145.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
15 (5.19 % of base) : 10455.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.FormattedLogValues](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.FormattedLogValues,System.Exception,System.String],byref,byref) (FullOpts)
15 (4.89 % of base) : 5992.dasm - Microsoft.Extensions.Logging.Logger:<Log>g__LoggerLog|14_0[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon]](int,Microsoft.Extensions.Logging.EventId,Microsoft.Extensions.Logging.ILogger,System.Exception,System.Func`3[Microsoft.Extensions.Logging.LoggerMessage+LogValues`2[int,System.__Canon],System.__Canon,System.__Canon],byref,byref) (FullOpts)
34 (4.66 % of base) : 21757.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
3 (4.17 % of base) : 26925.dasm - ProtoBuf.Internal.PrimaryTypeProvider:ProtoBuf.Serializers.ISerializer<System.DateTime>.Read(byref,System.DateTime):System.DateTime:this (FullOpts)
9 (4.11 % of base) : 26385.dasm - System.Numerics.Tests.Perf_BigInteger:Multiply(System.Numerics.Tests.Perf_BigInteger+BigIntegers):System.Numerics.BigInteger:this (FullOpts)
7 (3.85 % of base) : 6002.dasm - System.String:Format[int,System.__Canon](System.IFormatProvider,System.Text.CompositeFormat,int,System.__Canon):System.String (FullOpts)
3 (3.85 % of base) : 13640.dasm - System.Tests.Perf_UInt64:TryFormat(ulong):ubyte:this (FullOpts)
3 (3.75 % of base) : 14742.dasm - System.Net.Primitives.Tests.IPAddressPerformanceTests:TryFormat(System.Net.IPAddress):ubyte:this (FullOpts)
3 (3.75 % of base) : 15647.dasm - System.Net.Primitives.Tests.IPAddressPerformanceTests:TryWriteBytes(System.Net.IPAddress):ubyte:this (FullOpts)
3 (3.49 % of base) : 15889.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (FullOpts)
3 (3.49 % of base) : 14438.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
2 (3.45 % of base) : 281.dasm - System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this (FullOpts)
3 (3.19 % of base) : 4512.dasm - System.Text.Json.JsonSerializerOptions:get_ObjectTypeInfo():System.Text.Json.Serialization.Metadata.JsonTypeInfo:this (FullOpts)
3 (3.09 % of base) : 25931.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterDateTimeOffsetNow(System.DateTimeOffset):ubyte:this (FullOpts)
Top method improvements (percentages):
-95 (-15.25 % of base) : 25423.dasm - Benchstone.MDBenchF.MDLLoops:Test():ubyte:this (FullOpts)
-15 (-14.15 % of base) : 6536.dasm - System.Tests.Perf_Int128:.ctor():this (FullOpts)
-79 (-14.13 % of base) : 21697.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-50 (-12.59 % of base) : 24720.dasm - System.Enum:TryParseByValueOrName[int,uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-61 (-12.20 % of base) : 1632.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:Configure():this (FullOpts)
-15 (-11.81 % of base) : 27939.dasm - Benchstone.MDBenchI.MDPuzzle:Test():ubyte:this (FullOpts)
-232 (-11.66 % of base) : 11562.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-30 (-10.17 % of base) : 1633.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo:Configure():this (FullOpts)
-8 (-10.13 % of base) : 1886.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-20 (-9.05 % of base) : 6878.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-379 (-8.74 % of base) : 9043.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-27 (-8.71 % of base) : 21898.dasm - Microsoft.Cci.MetadataVisitor:Visit(Microsoft.Cci.ICustomAttribute):this (FullOpts)
-25 (-8.65 % of base) : 3556.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegers:.ctor(int[]):this (FullOpts)
-30 (-7.98 % of base) : 14683.dasm - System.Buffers.Tests.SearchValuesByteTests:Setup():this (FullOpts)
-15 (-7.94 % of base) : 20041.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NonMissingModuleSymbol:LookupTopLevelMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
-10 (-7.63 % of base) : 28019.dasm - System.Linq.Grouping`2+<GetEnumerator>d__9[System.__Canon,System.__Canon]:MoveNext():ubyte:this (FullOpts)
-10 (-7.41 % of base) : 22364.dasm - System.Reflection.PortableExecutable.PEBuilder:WritePESignature(System.Reflection.Metadata.BlobBuilder) (FullOpts)
-46 (-7.29 % of base) : 21646.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:CheckIfAttributeShouldBeEmbedded(int,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.Location):ubyte:this (FullOpts)
-7 (-7.07 % of base) : 4262.dasm - System.IO.Compression.DeflateStream:ReadByte():int:this (FullOpts)
-30 (-6.79 % of base) : 13892.dasm - System.Numerics.Tests.Perf_BigInteger+BigIntegerData:.ctor(System.String):this (FullOpts)
benchmarks.run_pgo.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 35391293 (overridden on cmd)
Total bytes of diff: 35256803 (overridden on cmd)
Total bytes of delta: -134490 (-0.38 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
107 : 34800.dasm (6.92 % of base)
107 : 37412.dasm (6.92 % of base)
28 : 99764.dasm (1.36 % of base)
22 : 47355.dasm (3.24 % of base)
18 : 100451.dasm (0.89 % of base)
18 : 68997.dasm (0.39 % of base)
18 : 35140.dasm (0.89 % of base)
18 : 42850.dasm (0.90 % of base)
18 : 45751.dasm (0.90 % of base)
18 : 69901.dasm (0.89 % of base)
18 : 94725.dasm (0.90 % of base)
18 : 41588.dasm (0.90 % of base)
18 : 46125.dasm (0.90 % of base)
18 : 48724.dasm (0.90 % of base)
18 : 67521.dasm (3.39 % of base)
18 : 74736.dasm (0.90 % of base)
18 : 85553.dasm (0.90 % of base)
18 : 98030.dasm (0.89 % of base)
18 : 37616.dasm (0.89 % of base)
18 : 47795.dasm (0.90 % of base)
Top file improvements (bytes):
-1361 : 12522.dasm (-11.10 % of base)
-1079 : 5673.dasm (-5.71 % of base)
-772 : 65651.dasm (-12.32 % of base)
-706 : 61213.dasm (-13.06 % of base)
-611 : 1034.dasm (-15.10 % of base)
-529 : 12893.dasm (-17.09 % of base)
-521 : 88729.dasm (-18.08 % of base)
-504 : 23027.dasm (-2.53 % of base)
-426 : 66747.dasm (-5.26 % of base)
-419 : 60469.dasm (-7.53 % of base)
-400 : 61579.dasm (-6.75 % of base)
-352 : 65202.dasm (-14.09 % of base)
-343 : 62093.dasm (-15.16 % of base)
-336 : 60123.dasm (-3.30 % of base)
-324 : 29887.dasm (-4.90 % of base)
-324 : 98594.dasm (-4.90 % of base)
-321 : 65736.dasm (-7.05 % of base)
-311 : 25385.dasm (-4.64 % of base)
-306 : 66977.dasm (-4.57 % of base)
-305 : 6883.dasm (-6.94 % of base)
91 total files with Code Size differences (56 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
107 (6.92 % of base) : 34800.dasm - System.Text.RegularExpressions.Symbolic.MintermClassifier:.ctor(System.Text.RegularExpressions.Symbolic.BDD[],System.Text.RegularExpressions.Symbolic.CharSetSolver):this (Tier1)
107 (6.92 % of base) : 37412.dasm - System.Text.RegularExpressions.Symbolic.MintermClassifier:.ctor(System.Text.RegularExpressions.Symbolic.BDD[],System.Text.RegularExpressions.Symbolic.CharSetSolver):this (Tier1)
28 (1.36 % of base) : 99764.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
22 (3.24 % of base) : 47355.dasm - System.String:StartsWith(System.String,int):ubyte:this (Tier1)
18 (0.39 % of base) : 68997.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
18 (3.39 % of base) : 67521.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
18 (0.89 % of base) : 100451.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.89 % of base) : 35140.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 42850.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 45751.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.89 % of base) : 69901.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 94725.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 41588.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 46125.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 48724.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 74736.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 85553.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.89 % of base) : 98030.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.89 % of base) : 37616.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
18 (0.90 % of base) : 47795.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
Top method improvements (bytes):
-1361 (-11.10 % of base) : 12522.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier0)
-1079 (-5.71 % of base) : 5673.dasm - Product:CreateLists() (Tier0)
-772 (-12.32 % of base) : 65651.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-706 (-13.06 % of base) : 61213.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-611 (-15.10 % of base) : 1034.dasm - System.Diagnostics.FileVersionInfo:GetVersionInfoForCodePage(ulong,System.String):ubyte:this (Tier0)
-529 (-17.09 % of base) : 12893.dasm - System.Enum:TryFormatUnconstrained[int](int,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (Tier0)
-521 (-18.08 % of base) : 88729.dasm - System.Enum:System.ISpanFormattable.TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier0)
-504 (-2.53 % of base) : 23027.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Instrumented Tier0)
-426 (-5.26 % of base) : 66747.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Instrumented Tier0)
-419 (-7.53 % of base) : 60469.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:CheckMembersAgainstBaseType(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):this (Instrumented Tier0)
-400 (-6.75 % of base) : 61579.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-352 (-14.09 % of base) : 65202.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-343 (-15.16 % of base) : 62093.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-336 (-3.30 % of base) : 60123.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddNonTypeMembers(Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+DeclaredMembersAndInitializersBuilder,Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Instrumented Tier0)
-324 (-4.90 % of base) : 29887.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-324 (-4.90 % of base) : 98594.dasm - System.Xml.Serialization.TypeScope:ImportTypeDesc(System.Type,System.Reflection.MemberInfo,ubyte):System.Xml.Serialization.TypeDesc:this (Instrumented Tier0)
-321 (-7.05 % of base) : 65736.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Instrumented Tier0)
-311 (-4.64 % of base) : 25385.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (Instrumented Tier0)
-306 (-4.57 % of base) : 66977.dasm - Microsoft.CodeAnalysis.Compilation:SerializeToPeStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.Compilation+EmitStreamProvider,Microsoft.CodeAnalysis.RebuildData,System.Func`2[Microsoft.DiaSymReader.ISymWriterMetadataProvider,Microsoft.DiaSymReader.SymUnmanagedWriter],Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Emit.EmitOptions,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte:this (Instrumented Tier0)
-305 (-6.94 % of base) : 6883.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (Instrumented Tier0)
Top method regressions (percentages):
107 (6.92 % of base) : 34800.dasm - System.Text.RegularExpressions.Symbolic.MintermClassifier:.ctor(System.Text.RegularExpressions.Symbolic.BDD[],System.Text.RegularExpressions.Symbolic.CharSetSolver):this (Tier1)
107 (6.92 % of base) : 37412.dasm - System.Text.RegularExpressions.Symbolic.MintermClassifier:.ctor(System.Text.RegularExpressions.Symbolic.BDD[],System.Text.RegularExpressions.Symbolic.CharSetSolver):this (Tier1)
3 (3.90 % of base) : 68616.dasm - System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
18 (3.39 % of base) : 67521.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
22 (3.24 % of base) : 47355.dasm - System.String:StartsWith(System.String,int):ubyte:this (Tier1)
8 (2.31 % of base) : 15777.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier0)
8 (2.31 % of base) : 15770.dasm - System.Net.Sockets.Socket:Send(System.ReadOnlySpan`1[ubyte],int,byref):int:this (Tier0)
7 (1.99 % of base) : 89983.dasm - System.Numerics.BigInteger:op_Addition(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (Tier1)
3 (1.82 % of base) : 101100.dasm - LinqBenchmarks+<>c:<AggregateBy00GroupByX>b__24_2(System.Linq.IGrouping`2[System.String,Product]):System.Decimal:this (Tier1)
4 (1.60 % of base) : 7023.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.Reflection.Emit.Label]:Fill(System.Span`1[System.Reflection.Emit.Label],int,System.Func`2[int,System.Reflection.Emit.Label]) (Instrumented Tier0)
4 (1.57 % of base) : 5654.dasm - System.Linq.Enumerable+ListPartition`1[ushort]:Fill(System.Collections.Generic.IList`1[ushort],System.Span`1[ushort],int) (Instrumented Tier0)
4 (1.48 % of base) : 4060.dasm - System.Linq.Enumerable+SelectArrayIterator`2[short,System.Collections.NotKnownComparable]:Fill(System.ReadOnlySpan`1[short],System.Span`1[System.Collections.NotKnownComparable],System.Func`2[short,System.Collections.NotKnownComparable]) (Instrumented Tier0)
4 (1.41 % of base) : 98848.dasm - System.Reflection.Emit.RuntimeParameterBuilder:.ctor(System.Reflection.Emit.RuntimeMethodBuilder,int,int,System.String):this (Instrumented Tier0)
11 (1.37 % of base) : 3328.dasm - System.Collections.Frozen.FrozenSet:CreateFromSet[int](System.Collections.Generic.HashSet`1[int]):System.Collections.Frozen.FrozenSet`1[int] (Instrumented Tier0)
28 (1.36 % of base) : 99764.dasm - System.IO.StreamWriter:Flush(ubyte,ubyte):this (Tier1)
11 (1.31 % of base) : 62071.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitSignature(Microsoft.Cci.ISignature,Microsoft.CodeAnalysis.Emit.EmitContext) (Instrumented Tier0)
11 (1.31 % of base) : 66925.dasm - Microsoft.CodeAnalysis.CodeGen.ReferenceDependencyWalker:VisitSignature(Microsoft.Cci.ISignature,Microsoft.CodeAnalysis.Emit.EmitContext) (Instrumented Tier0)
5 (1.30 % of base) : 68775.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:Microsoft.Cci.ICustomAttribute.GetNamedArguments(Microsoft.CodeAnalysis.Emit.EmitContext):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IMetadataNamedArgument]:this (Tier1)
4 (1.27 % of base) : 14233.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Read(ubyte[],int,int):int:this (Tier1)
4 (1.27 % of base) : 48854.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Write(ubyte[],int,int):this (Tier1)
Top method improvements (percentages):
-97 (-30.70 % of base) : 66856.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Instrumented Tier0)
-97 (-30.70 % of base) : 61967.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-90 (-30.51 % of base) : 66895.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-90 (-30.51 % of base) : 62029.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-147 (-30.50 % of base) : 62049.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-62 (-30.24 % of base) : 76349.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Instrumented Tier0)
-62 (-30.24 % of base) : 11276.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Tier0)
-156 (-29.66 % of base) : 66910.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Instrumented Tier0)
-30 (-28.30 % of base) : 66808.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Instrumented Tier0)
-30 (-28.30 % of base) : 61821.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
-26 (-28.26 % of base) : 31351.dasm - System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
-228 (-27.40 % of base) : 73497.dasm - System.Text.Tests.Perf_StringBuilder:Append_Memory():System.Text.StringBuilder:this (Tier0)
-228 (-27.40 % of base) : 74378.dasm - System.Text.Tests.Perf_StringBuilder:Append_NonEmptySpan():System.Text.StringBuilder:this (Tier0)
-91 (-27.16 % of base) : 61234.dasm - Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData:CreateIfNeeded(Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]):Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData (Tier0)
-141 (-26.60 % of base) : 71223.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-46 (-25.41 % of base) : 31764.dasm - Interop+Winsock:WSASendTo(System.Runtime.InteropServices.SafeHandle,byref,int,byref,int,System.ReadOnlySpan`1[ubyte],ulong,long):int (Instrumented Tier0)
-46 (-25.41 % of base) : 31681.dasm - Interop+Winsock:WSASendTo(System.Runtime.InteropServices.SafeHandle,byref,int,byref,int,System.ReadOnlySpan`1[ubyte],ulong,long):int (Tier0)
-62 (-24.22 % of base) : 69713.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-28 (-24.14 % of base) : 5600.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Tier0)
-55 (-23.91 % of base) : 60682.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
benchmarks.run_tiered.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 12661498 (overridden on cmd)
Total bytes of diff: 12584524 (overridden on cmd)
Total bytes of delta: -76974 (-0.61 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
278 : 52574.dasm (2.70 % of base)
70 : 45001.dasm (1.46 % of base)
50 : 21337.dasm (6.20 % of base)
31 : 9661.dasm (5.79 % of base)
23 : 24347.dasm (0.67 % of base)
18 : 44911.dasm (0.93 % of base)
16 : 45645.dasm (0.60 % of base)
12 : 44779.dasm (0.50 % of base)
12 : 3300.dasm (0.94 % of base)
11 : 12837.dasm (0.58 % of base)
11 : 10554.dasm (1.05 % of base)
11 : 9481.dasm (1.12 % of base)
11 : 14877.dasm (0.92 % of base)
11 : 16396.dasm (1.19 % of base)
11 : 6577.dasm (0.45 % of base)
10 : 25598.dasm (1.72 % of base)
10 : 50685.dasm (0.54 % of base)
10 : 50690.dasm (0.54 % of base)
8 : 4961.dasm (2.31 % of base)
8 : 4993.dasm (2.31 % of base)
Top file improvements (bytes):
-1361 : 11377.dasm (-11.10 % of base)
-1079 : 8665.dasm (-5.71 % of base)
-706 : 39303.dasm (-13.06 % of base)
-611 : 1158.dasm (-15.10 % of base)
-529 : 15990.dasm (-17.09 % of base)
-521 : 50154.dasm (-18.08 % of base)
-400 : 39677.dasm (-6.75 % of base)
-343 : 40192.dasm (-15.16 % of base)
-306 : 43631.dasm (-10.20 % of base)
-288 : 5678.dasm (-7.51 % of base)
-278 : 39232.dasm (-4.96 % of base)
-275 : 39718.dasm (-7.57 % of base)
-229 : 5819.dasm (-8.41 % of base)
-228 : 42942.dasm (-27.40 % of base)
-228 : 45533.dasm (-27.40 % of base)
-227 : 17649.dasm (-2.85 % of base)
-214 : 40126.dasm (-17.23 % of base)
-208 : 10573.dasm (-6.89 % of base)
-204 : 7574.dasm (-4.39 % of base)
-198 : 10219.dasm (-4.81 % of base)
84 total files with Code Size differences (55 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
278 (2.70 % of base) : 52574.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
70 (1.46 % of base) : 45001.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
50 (6.20 % of base) : 21337.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
31 (5.79 % of base) : 9661.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (Tier1)
23 (0.67 % of base) : 24347.dasm - System.Reflection.MethodBaseInvoker:InvokeWithManyArgs(System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):System.Object:this (Tier0-FullOpts)
18 (0.93 % of base) : 44911.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:CheckModifiers(ubyte,ubyte,uint,uint,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Nullable`1[Microsoft.CodeAnalysis.SyntaxTokenList],byref):uint (Tier1)
16 (0.60 % of base) : 45645.dasm - System.Text.Json.Tests.Perf_Segment:ReadMultiSegmentSequenceUsingSpan(int):this (Tier1-OSR)
12 (0.50 % of base) : 44779.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:ToDeclarationModifiers(Microsoft.CodeAnalysis.SyntaxTokenList,ubyte,Microsoft.CodeAnalysis.DiagnosticBag,ubyte):uint (Tier1)
12 (0.94 % of base) : 3300.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
11 (1.12 % of base) : 9481.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:CreateServiceAccessor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier):Microsoft.Extensions.DependencyInjection.ServiceProvider+ServiceAccessor:this (Tier0)
11 (0.58 % of base) : 12837.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (Tier0)
11 (0.92 % of base) : 14877.dasm - System.Net.Http.SocketsHttpHandler:ValidateAndNormalizeRequest(System.Net.Http.HttpRequestMessage):System.Exception (Tier0)
11 (1.05 % of base) : 10554.dasm - System.Net.Sockets.Socket:Accept():System.Net.Sockets.Socket:this (Tier0)
11 (1.19 % of base) : 16396.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Reflection.RuntimeEventInfo],byref):this (Tier0)
11 (0.45 % of base) : 6577.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[MicroBenchmarks.Serializers.LargeStructWithProperties]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier0)
10 (0.54 % of base) : 50685.dasm - BenchmarksGame.pidigits:compose_l(int,int,int,int):this (Tier1)
10 (0.54 % of base) : 50690.dasm - BenchmarksGame.pidigits:compose_r(int,int,int,int):this (Tier1)
10 (1.72 % of base) : 25598.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
8 (2.31 % of base) : 4993.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier0)
8 (2.31 % of base) : 4961.dasm - System.Net.Sockets.Socket:Send(System.ReadOnlySpan`1[ubyte],int,byref):int:this (Tier0)
Top method improvements (bytes):
-1361 (-11.10 % of base) : 11377.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier0)
-1079 (-5.71 % of base) : 8665.dasm - Product:CreateLists() (Tier0)
-706 (-13.06 % of base) : 39303.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-611 (-15.10 % of base) : 1158.dasm - System.Diagnostics.FileVersionInfo:GetVersionInfoForCodePage(ulong,System.String):ubyte:this (Tier0)
-529 (-17.09 % of base) : 15990.dasm - System.Enum:TryFormatUnconstrained[int](int,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (Tier0)
-521 (-18.08 % of base) : 50154.dasm - System.Enum:System.ISpanFormattable.TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier0)
-400 (-6.75 % of base) : 39677.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeConversionNodeCore(Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-343 (-15.16 % of base) : 40192.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:CreateEmbeddedAttributesIfNeeded(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-306 (-10.20 % of base) : 43631.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (Tier0)
-288 (-7.51 % of base) : 5678.dasm - System.Text.RegularExpressions.RegexCompiler+<>c__DisplayClass158_0:<EmitTryMatchAtCurrentPosition>g__EmitSingleCharAtomicLoop|25(System.Text.RegularExpressions.RegexNode):this (Tier0)
-278 (-4.96 % of base) : 39232.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0)
-275 (-7.57 % of base) : 39718.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.StateMachineStateDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,ubyte,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SourceSpan],Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedEntryPointSymbol+AsyncForwardEntryPoint):Microsoft.CodeAnalysis.CodeGen.MethodBody (Tier0)
-229 (-8.41 % of base) : 5819.dasm - System.Text.RegularExpressions.RegexCompiler:<EmitTryFindNextPossibleStartingPosition>g__EmitLiteralAfterAtomicLoop|157_5(byref):this (Tier0)
-228 (-27.40 % of base) : 42942.dasm - System.Text.Tests.Perf_StringBuilder:Append_Memory():System.Text.StringBuilder:this (Tier0)
-228 (-27.40 % of base) : 45533.dasm - System.Text.Tests.Perf_StringBuilder:Append_NonEmptySpan():System.Text.StringBuilder:this (Tier0)
-227 (-2.85 % of base) : 17649.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0)
-214 (-17.23 % of base) : 40126.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeCall(Microsoft.CodeAnalysis.CSharp.BoundCall,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-208 (-6.89 % of base) : 10573.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (Tier0)
-204 (-4.39 % of base) : 7574.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (Tier0)
-198 (-4.81 % of base) : 10219.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier0)
Top method regressions (percentages):
50 (6.20 % of base) : 21337.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (Tier1)
31 (5.79 % of base) : 9661.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (Tier1)
3 (3.90 % of base) : 47141.dasm - System.Security.Cryptography.HashProviderDispenser:CreateHashProvider(System.String):System.Security.Cryptography.HashProvider (Tier1)
2 (3.45 % of base) : 2919.dasm - System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this (Tier1)
278 (2.70 % of base) : 52574.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
8 (2.31 % of base) : 4993.dasm - System.Net.Sockets.Socket:Receive(System.Span`1[ubyte],int,byref):int:this (Tier0)
8 (2.31 % of base) : 4961.dasm - System.Net.Sockets.Socket:Send(System.ReadOnlySpan`1[ubyte],int,byref):int:this (Tier0)
7 (2.19 % of base) : 50666.dasm - System.Numerics.BigInteger:op_Addition(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (Tier1)
3 (1.89 % of base) : 53944.dasm - LinqBenchmarks+<>c:<AggregateBy00GroupByX>b__24_2(System.Linq.IGrouping`2[System.String,Product]):System.Decimal:this (Tier1)
10 (1.72 % of base) : 25598.dasm - BitOps:DoBitfieldIteration(int[],int[],int,byref):long (Tier1)
70 (1.46 % of base) : 45001.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier1)
7 (1.40 % of base) : 41663.dasm - Microsoft.CodeAnalysis.PEModule:FindTargetAttribute(System.Reflection.Metadata.MetadataReader,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.AttributeDescription,byref):Microsoft.CodeAnalysis.PEModule+AttributeInfo (Tier1)
4 (1.39 % of base) : 23962.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Read(ubyte[],int,int):int:this (Tier1)
4 (1.39 % of base) : 28526.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Write(ubyte[],int,int):this (Tier1)
11 (1.19 % of base) : 16396.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateEvents(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Reflection.RuntimeEventInfo],byref):this (Tier0)
11 (1.12 % of base) : 9481.dasm - Microsoft.Extensions.DependencyInjection.ServiceProvider:CreateServiceAccessor(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier):Microsoft.Extensions.DependencyInjection.ServiceProvider+ServiceAccessor:this (Tier0)
5 (1.09 % of base) : 16118.dasm - System.IO.RandomAccess+<>c:<ReadAtOffsetAsync>b__19_0(System.ValueTuple`4[Microsoft.Win32.SafeHandles.SafeFileHandle,System.Memory`1[ubyte],long,System.IO.Strategies.OSFileStreamStrategy]):int:this (Tier1)
11 (1.05 % of base) : 10554.dasm - System.Net.Sockets.Socket:Accept():System.Net.Sockets.Socket:this (Tier0)
2 (0.96 % of base) : 50660.dasm - System.Numerics.BigInteger:op_Multiply(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger (Tier1)
12 (0.94 % of base) : 3300.dasm - System.Reflection.RuntimeParameterInfo:GetParameters(System.IRuntimeMethodInfo,System.Reflection.MemberInfo,System.Signature,byref,ubyte):System.Reflection.ParameterInfo[] (Tier1)
Top method improvements (percentages):
-97 (-30.70 % of base) : 40066.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-90 (-30.51 % of base) : 40128.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-147 (-30.50 % of base) : 40148.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-62 (-30.24 % of base) : 4900.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Tier0)
-30 (-28.30 % of base) : 39920.dasm - Microsoft.CodeAnalysis.SmallDictionary`2+AvlNode[System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo]:.ctor(int,System.__Canon,Microsoft.CodeAnalysis.CodeGen.ILBuilder+LabelInfo):this (Tier0)
-26 (-28.26 % of base) : 24911.dasm - System.Diagnostics.ActivityEvent:.ctor(System.String):this (Tier0)
-228 (-27.40 % of base) : 42942.dasm - System.Text.Tests.Perf_StringBuilder:Append_Memory():System.Text.StringBuilder:this (Tier0)
-228 (-27.40 % of base) : 45533.dasm - System.Text.Tests.Perf_StringBuilder:Append_NonEmptySpan():System.Text.StringBuilder:this (Tier0)
-91 (-27.16 % of base) : 39323.dasm - Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData:CreateIfNeeded(Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]):Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator+UncommonData (Tier0)
-141 (-26.60 % of base) : 43604.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol:MakeLocal(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken,ubyte,Microsoft.CodeAnalysis.CSharp.Syntax.EqualsValueClauseSyntax,Microsoft.CodeAnalysis.CSharp.Binder):Microsoft.CodeAnalysis.CSharp.Symbols.SourceLocalSymbol (Tier0)
-46 (-25.41 % of base) : 25468.dasm - Interop+Winsock:WSASendTo(System.Runtime.InteropServices.SafeHandle,byref,int,byref,int,System.ReadOnlySpan`1[ubyte],ulong,long):int (Tier0)
-62 (-24.22 % of base) : 43163.dasm - System.Numerics.Tests.Perf_Matrix4x4:LerpBenchmark():System.Numerics.Matrix4x4:this (Tier0)
-28 (-24.14 % of base) : 5251.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Resources.ResourceLocator]:set_Item(System.__Canon,System.Resources.ResourceLocator):this (Tier0)
-55 (-23.91 % of base) : 38822.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper+CheckConstraintsArgs:.ctor(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.ConversionsBase,ubyte,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (Tier0)
-49 (-23.67 % of base) : 24843.dasm - System.Diagnostics.ActivitySource:StartActivity(System.String,int,System.Diagnostics.ActivityContext,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],System.DateTimeOffset):System.Diagnostics.Activity:this (Tier0)
-19 (-23.46 % of base) : 45793.dasm - System.Text.StringBuilder:Insert(int,System.Decimal):System.Text.StringBuilder:this (Tier0)
-37 (-23.42 % of base) : 43662.dasm - Microsoft.CodeAnalysis.CSharp.BoundTypeExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.AliasSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,ubyte):this (Tier0)
-42 (-23.33 % of base) : 38627.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.LookupPosition:IsInBody(int,Microsoft.CodeAnalysis.CSharp.Syntax.BaseMethodDeclarationSyntax):ubyte (Tier0)
-25 (-22.94 % of base) : 26035.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:Slice(int,System.SequencePosition):System.Buffers.ReadOnlySequence`1[ubyte]:this (Tier0)
-34 (-22.82 % of base) : 9549.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver:VisitDisposeCache(Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCallSite,Microsoft.Extensions.DependencyInjection.ServiceLookup.RuntimeResolverContext):System.Object:this (Tier0)
coreclr_tests.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 393404923 (overridden on cmd)
Total bytes of diff: 392410222 (overridden on cmd)
Total bytes of delta: -994701 (-0.25 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
96 : 52185.dasm (2.72 % of base)
96 : 52240.dasm (2.68 % of base)
91 : 89316.dasm (2.69 % of base)
91 : 89366.dasm (2.65 % of base)
78 : 504367.dasm (6.12 % of base)
65 : 478612.dasm (5.35 % of base)
62 : 273813.dasm (1.92 % of base)
58 : 476612.dasm (1.21 % of base)
55 : 359393.dasm (0.84 % of base)
55 : 359932.dasm (0.84 % of base)
54 : 284696.dasm (7.86 % of base)
35 : 89336.dasm (2.12 % of base)
35 : 479136.dasm (0.30 % of base)
35 : 89386.dasm (2.13 % of base)
34 : 478226.dasm (4.66 % of base)
32 : 52210.dasm (1.81 % of base)
32 : 334047.dasm (0.49 % of base)
32 : 52261.dasm (1.81 % of base)
31 : 272124.dasm (4.96 % of base)
27 : 70344.dasm (1.67 % of base)
Top file improvements (bytes):
-1882 : 263505.dasm (-1.67 % of base)
-1882 : 263578.dasm (-1.69 % of base)
-1644 : 23677.dasm (-5.09 % of base)
-1361 : 221304.dasm (-11.10 % of base)
-1361 : 338537.dasm (-10.97 % of base)
-1250 : 251512.dasm (-0.99 % of base)
-1250 : 251481.dasm (-0.99 % of base)
-1079 : 230117.dasm (-5.71 % of base)
-805 : 193926.dasm (-3.63 % of base)
-801 : 263431.dasm (-0.78 % of base)
-801 : 263410.dasm (-0.78 % of base)
-801 : 271505.dasm (-0.78 % of base)
-801 : 271511.dasm (-0.78 % of base)
-743 : 274503.dasm (-2.00 % of base)
-706 : 224619.dasm (-13.06 % of base)
-676 : 264718.dasm (-5.27 % of base)
-613 : 153848.dasm (-1.08 % of base)
-611 : 358972.dasm (-15.10 % of base)
-605 : 153894.dasm (-1.25 % of base)
-578 : 216118.dasm (-16.25 % of base)
100 total files with Code Size differences (62 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
96 (2.72 % of base) : 52185.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:RunBasicScenario():this (MinOpts)
96 (2.68 % of base) : 52240.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:RunBasicScenario():this (MinOpts)
91 (2.69 % of base) : 89316.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:RunBasicScenario():this (Instrumented Tier0)
91 (2.65 % of base) : 89366.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:RunBasicScenario():this (Instrumented Tier0)
78 (6.12 % of base) : 504367.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
65 (5.35 % of base) : 478612.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
62 (1.92 % of base) : 273813.dasm - System.Text.ValueStringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):this (Tier1)
58 (1.21 % of base) : 476612.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
55 (0.84 % of base) : 359393.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CreateValueFromKey(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayout:this (Tier1-OSR)
55 (0.84 % of base) : 359932.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CreateValueFromKey(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayout:this (Tier1-OSR)
54 (7.86 % of base) : 284696.dasm - GitHub_19438.Program:TestEntryPoint() (Tier1-OSR)
35 (2.12 % of base) : 89336.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt16:RunBasicScenario():this (Instrumented Tier0)
35 (2.13 % of base) : 89386.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt16:RunBasicScenario():this (Instrumented Tier0)
35 (0.30 % of base) : 479136.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:CheckParameterModifiers(Microsoft.CodeAnalysis.CSharp.Syntax.BaseParameterSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,ubyte,ubyte) (FullOpts)
34 (4.66 % of base) : 478226.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
32 (0.49 % of base) : 334047.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CreateValueFromKey(Internal.TypeSystem.Ecma.EcmaModule):ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayout:this (Tier1-OSR)
32 (1.81 % of base) : 52210.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperInt16:RunBasicScenario():this (MinOpts)
32 (1.81 % of base) : 52261.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperUInt16:RunBasicScenario():this (MinOpts)
31 (4.96 % of base) : 272124.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (Instrumented Tier1)
27 (1.67 % of base) : 70344.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:RunBasicScenario():this (Instrumented Tier0)
Top method improvements (bytes):
-1882 (-1.67 % of base) : 263505.dasm - r4rem:TestEntryPoint():int (Tier0)
-1882 (-1.69 % of base) : 263578.dasm - r8rem:TestEntryPoint():int (Tier0)
-1644 (-5.09 % of base) : 23677.dasm - Microsoft.Diagnostics.Tracing.Parsers.ClrTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (Instrumented Tier0)
-1361 (-10.97 % of base) : 338537.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Instrumented Tier0)
-1361 (-11.10 % of base) : 221304.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier0)
-1250 (-0.99 % of base) : 251481.dasm - overlddiv:TestEntryPoint():int (MinOpts)
-1250 (-0.99 % of base) : 251512.dasm - overldrem:TestEntryPoint():int (MinOpts)
-1079 (-5.71 % of base) : 230117.dasm - Product:CreateLists() (Tier0)
-805 (-3.63 % of base) : 193926.dasm - Dynamic.CollectionTest:CustomCollection():this (Instrumented Tier0)
-801 (-0.78 % of base) : 263410.dasm - overlddiv:TestEntryPoint():int (Tier0)
-801 (-0.78 % of base) : 271505.dasm - overlddiv:TestEntryPoint():int (Tier0)
-801 (-0.78 % of base) : 263431.dasm - overldrem:TestEntryPoint():int (Tier0)
-801 (-0.78 % of base) : 271511.dasm - overldrem:TestEntryPoint():int (Tier0)
-743 (-2.00 % of base) : 274503.dasm - DefaultNamespace.cb6054ToByte_all:runTest():ubyte:this (Instrumented Tier0)
-706 (-13.06 % of base) : 224619.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier0)
-676 (-5.27 % of base) : 264718.dasm - JitTest_huge_struct_Arrays_il.Test:Main():int (MinOpts)
-613 (-1.08 % of base) : 153848.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherMaskVector128:Test() (MinOpts)
-611 (-15.10 % of base) : 358972.dasm - System.Diagnostics.FileVersionInfo:GetVersionInfoForCodePage(ulong,System.String):ubyte:this (Tier0)
-605 (-1.25 % of base) : 153894.dasm - IntelHardwareIntrinsicTest._Avx2.Program+GatherVector128:Test() (MinOpts)
-578 (-16.25 % of base) : 216118.dasm - System.Enum:TryFormatUnconstrained[ubyte](ubyte,System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort]):ubyte (Instrumented Tier0)
Top method regressions (percentages):
15 (21.74 % of base) : 490039.dasm - (dynamicClass):ABIStress_TailCaller13(double,double,ABIStress.S4U,float,ABIStress.S4U,ABIStress.S8U,ABIStress.S8U,double,ABIStress.S8U):int (FullOpts)
12 (13.48 % of base) : 490883.dasm - (dynamicClass):ABIStress_TailCaller474(long,ubyte,int,ABIStress.S2U,ABIStress.S4P,ABIStress.S2U,int,double,short,ABIStress.S2P,ABIStress.S4P,long,ubyte,long,ubyte,ABIStress.S8P,long,double,ABIStress.S4P,ABIStress.S2P):int (FullOpts)
21 (13.13 % of base) : 491023.dasm - (dynamicClass):ABIStress_TailCaller552(float,int,int,ABIStress.S1P,long,double,ABIStress.S8U,ABIStress.S2U,short,ubyte,short,short,ABIStress.S2U,short,ubyte,ABIStress.S2U,ABIStress.S2U):int (FullOpts)
9 (12.50 % of base) : 491563.dasm - (dynamicClass):ABIStress_TailCaller864(short,int,ABIStress.S4U,ABIStress.S8U,ABIStress.S8U,ABIStress.S8P,long,ABIStress.S8U,short,ABIStress.S4U,ABIStress.S1P,short):int (FullOpts)
11 (12.09 % of base) : 490215.dasm - (dynamicClass):ABIStress_TailCaller109(ABIStress.S2P,ABIStress.S1P,ABIStress.S2P,ABIStress.S2P,ABIStress.S8U,ABIStress.S4P,ABIStress.S8U,ubyte,double,short,long,long,ABIStress.S4P,short,long):int (FullOpts)
10 (10.87 % of base) : 490609.dasm - (dynamicClass):ABIStress_TailCaller320(short,short,ubyte,ABIStress.S8U,ABIStress.S4P,float,ABIStress.S4P,long,ABIStress.S2P,ABIStress.S1P,ABIStress.S2P,ABIStress.S8P,long,long,ABIStress.S4P,ubyte,double,ABIStress.S8U,short,ABIStress.S4U,ubyte):int (FullOpts)
11 (10.48 % of base) : 490633.dasm - (dynamicClass):ABIStress_TailCaller333(double,long,short,ABIStress.S8U,ABIStress.S4U,ABIStress.S4P,int,ABIStress.S8P,ABIStress.S8U,ABIStress.S2P,ubyte,short,float,ABIStress.S8P,ABIStress.S4U):int (FullOpts)
3 (9.68 % of base) : 491699.dasm - (dynamicClass):ABIStress_TailCaller940(short,ubyte,ABIStress.S2P,float,double,ABIStress.S4P,ABIStress.S1P,int):int (FullOpts)
18 (9.05 % of base) : 491668.dasm - (dynamicClass):ABIStress_TailCaller923(ABIStress.S2P,float,long,ABIStress.S4U,ubyte,ubyte,ABIStress.S8U,ABIStress.S8U,long,ubyte,ABIStress.S1P,ABIStress.S8P,int,ABIStress.S4U,ABIStress.S1P,ABIStress.S2P,ABIStress.S2P,ABIStress.S8U,ABIStress.S8U,ABIStress.S8U,double):int (FullOpts)
8 (8.89 % of base) : 491773.dasm - (dynamicClass):ABIStress_TailCaller985(ABIStress.S8P,ABIStress.S4P,ubyte,ABIStress.S8U,float,ubyte,ABIStress.S2P,short,double,int,ubyte):int (FullOpts)
9 (8.74 % of base) : 490266.dasm - (dynamicClass):ABIStress_TailCaller136(ABIStress.S2P,ubyte,ABIStress.S8U,ABIStress.S8P,ABIStress.S4P,int,float,ABIStress.S1P,ubyte,ABIStress.S4P,ABIStress.S8P,short,ABIStress.S4P,ABIStress.S4P,ABIStress.S4P,long,ABIStress.S8P,double,ABIStress.S4P,ABIStress.S2P):int (FullOpts)
12 (8.33 % of base) : 491027.dasm - (dynamicClass):ABIStress_TailCaller554(ABIStress.S4P,ubyte,int,int,ABIStress.S2P,ubyte,float,ABIStress.S2U,ABIStress.S2P,double,short):int (FullOpts)
5 (8.20 % of base) : 568519.dasm - NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]](System.Nullable`1[NotEmptyStructConstrainedGenQ`1[int]]):ubyte (FullOpts)
5 (8.20 % of base) : 568498.dasm - NullableTest:BoxUnboxToNQ[System.Nullable`1[NotEmptyStructQ]](System.Nullable`1[NotEmptyStructQ]):ubyte (FullOpts)
13 (8.07 % of base) : 490238.dasm - (dynamicClass):ABIStress_TailCaller121(long,double,double,ABIStress.S1P,ubyte,ABIStress.S2U,ubyte,ABIStress.S2P,short,long,ABIStress.S2U,short,ubyte,ABIStress.S8P,float,ABIStress.S2P,long,short):int (FullOpts)
14 (8.05 % of base) : 490507.dasm - (dynamicClass):ABIStress_TailCaller265(double,double,short,ABIStress.S8P,ABIStress.S4U,ABIStress.S4P,ABIStress.S4P,short,short,ABIStress.S2P,ABIStress.S2P,ABIStress.S2P,ubyte,long,ABIStress.S4P,int):int (FullOpts)
13 (7.93 % of base) : 490365.dasm - (dynamicClass):ABIStress_TailCaller188(int,ABIStress.S2U,ABIStress.S4P,ABIStress.S8P,int,short,ABIStress.S8P,short,ABIStress.S2P,ABIStress.S2P,long,double,ABIStress.S8P,float,ABIStress.S2U,int,ABIStress.S8P,ABIStress.S4P,ABIStress.S1P,ubyte,ABIStress.S2U,ABIStress.S4P,ABIStress.S2P,long):int (FullOpts)
54 (7.86 % of base) : 284696.dasm - GitHub_19438.Program:TestEntryPoint() (Tier1-OSR)
78 (6.12 % of base) : 504367.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (FullOpts)
5 (6.10 % of base) : 568328.dasm - NullableTest:BoxUnboxToNQ(System.ValueType):ubyte (FullOpts)
Top method improvements (percentages):
-62 (-32.46 % of base) : 23722.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.MethodLoadUnloadTraceDataBase:.ctor(int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-97 (-30.70 % of base) : 225370.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-90 (-30.51 % of base) : 225430.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-147 (-30.50 % of base) : 225450.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-62 (-29.25 % of base) : 23713.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrStackWalkTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.ClrStackWalkTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23701.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.DestroyGCHandleTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.DestroyGCHandleTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23685.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCAllocationTickTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.GCAllocationTickTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23693.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkEdgeTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkEdgeTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23737.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRCWTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.GCBulkRCWTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23697.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCGenerationRangeTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.GCGenerationRangeTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23681.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.GCHeapStatsTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.GCHeapStatsTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23705.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.IOThreadTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.IOThreadTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23721.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.MethodLoadUnloadTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.MethodLoadUnloadTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23725.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ModuleLoadUnloadTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.ModuleLoadUnloadTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23733.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.RuntimeInformationTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.RuntimeInformationTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23729.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.StrongNameVerificationTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.StrongNameVerificationTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23757.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadPoolIOWorkTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadPoolIOWorkTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23709.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadPoolWorkerThreadAdjustmentStatsTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadPoolWorkerThreadAdjustmentStatsTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23753.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadStartWorkTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadStartWorkTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
-62 (-29.25 % of base) : 23717.dasm - Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadTerminatedOrTransitionTraceData:.ctor(System.Action`1[Microsoft.Diagnostics.Tracing.Parsers.Clr.ThreadTerminatedOrTransitionTraceData],int,int,System.String,System.Guid,int,System.String,System.Guid,System.String):this (Tier0)
libraries.crossgen2.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 39443922 (overridden on cmd)
Total bytes of diff: 39410974 (overridden on cmd)
Total bytes of delta: -32948 (-0.08 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
152 : 166530.dasm (7.33 % of base)
108 : 68457.dasm (0.96 % of base)
89 : 120114.dasm (2.75 % of base)
72 : 66309.dasm (0.27 % of base)
61 : 62164.dasm (2.20 % of base)
46 : 200583.dasm (1.42 % of base)
43 : 13915.dasm (1.68 % of base)
42 : 201800.dasm (3.09 % of base)
40 : 227365.dasm (4.39 % of base)
39 : 68299.dasm (2.13 % of base)
37 : 201814.dasm (2.65 % of base)
35 : 163524.dasm (4.94 % of base)
34 : 68560.dasm (1.46 % of base)
33 : 166489.dasm (3.07 % of base)
32 : 62676.dasm (1.05 % of base)
30 : 227492.dasm (12.40 % of base)
29 : 187256.dasm (4.37 % of base)
29 : 70191.dasm (3.12 % of base)
28 : 219222.dasm (3.48 % of base)
28 : 224462.dasm (2.56 % of base)
Top file improvements (bytes):
-15924 : 41335.dasm (-16.13 % of base)
-1835 : 138543.dasm (-7.34 % of base)
-1835 : 156306.dasm (-7.34 % of base)
-274 : 68639.dasm (-5.55 % of base)
-266 : 143764.dasm (-9.66 % of base)
-262 : 205675.dasm (-2.56 % of base)
-243 : 103294.dasm (-0.78 % of base)
-214 : 184097.dasm (-20.68 % of base)
-209 : 143928.dasm (-16.88 % of base)
-183 : 193568.dasm (-4.63 % of base)
-180 : 117498.dasm (-14.31 % of base)
-177 : 143846.dasm (-13.27 % of base)
-157 : 131413.dasm (-7.49 % of base)
-149 : 151538.dasm (-3.79 % of base)
-147 : 193474.dasm (-3.60 % of base)
-128 : 161174.dasm (-4.46 % of base)
-100 : 241449.dasm (-4.74 % of base)
-100 : 131985.dasm (-6.49 % of base)
-82 : 96779.dasm (-2.39 % of base)
-81 : 234785.dasm (-6.81 % of base)
80 total files with Code Size differences (40 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
152 (7.33 % of base) : 166530.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21+CommonEmbeddedType[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetAttributes(System.__Canon,System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
108 (0.96 % of base) : 68457.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
89 (2.75 % of base) : 120114.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
72 (0.27 % of base) : 66309.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
61 (2.20 % of base) : 62164.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
46 (1.42 % of base) : 200583.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9[System.__Canon]:MoveNext():this (FullOpts)
43 (1.68 % of base) : 13915.dasm - System.Data.XSDSchema:HandleDataSet(System.Xml.Schema.XmlSchemaElement,ubyte):this (FullOpts)
42 (3.09 % of base) : 201800.dasm - System.Text.Json.Utf8JsonReader:ConsumeNextTokenFromLastNonCommentToken():ubyte:this (FullOpts)
40 (4.39 % of base) : 227365.dasm - System.Formats.Asn1.AsnWriter:WriteUtcTimeCore(System.Formats.Asn1.Asn1Tag,System.DateTimeOffset):this (FullOpts)
39 (2.13 % of base) : 68299.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitStatementsWithLocalFunctions(Microsoft.CodeAnalysis.CSharp.BoundBlock):this (FullOpts)
37 (2.65 % of base) : 201814.dasm - System.Text.Json.Utf8JsonReader:ConsumeNextTokenFromLastNonCommentTokenMultiSegment():ubyte:this (FullOpts)
35 (4.94 % of base) : 163524.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
34 (1.46 % of base) : 68560.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitSwitchSection(Microsoft.CodeAnalysis.CSharp.BoundSwitchSection,ubyte):this (FullOpts)
33 (3.07 % of base) : 166489.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21+CommonEmbeddedParameter[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetAttributes(System.__Canon,System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
32 (1.05 % of base) : 62676.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNullCoalescingOperator(Microsoft.CodeAnalysis.CSharp.Syntax.BinaryExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
30 (12.40 % of base) : 227492.dasm - System.IO.Compression.BrotliStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
29 (3.12 % of base) : 70191.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteTupleConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
29 (4.37 % of base) : 187256.dasm - System.Security.IdentityHelper:ToBase32StringSuitableForDirName(ubyte[]):System.String (FullOpts)
28 (3.48 % of base) : 219222.dasm - Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(Xunit.JsonObject):Internal.Microsoft.Extensions.DependencyModel.CompilationOptions:this (FullOpts)
28 (2.56 % of base) : 224462.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions (FullOpts)
Top method improvements (bytes):
-15924 (-16.13 % of base) : 41335.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServerTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
-1835 (-7.34 % of base) : 138543.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-1835 (-7.34 % of base) : 156306.dasm - Microsoft.CodeAnalysis.DesktopAssemblyIdentityComparer:.cctor() (FullOpts)
-274 (-5.55 % of base) : 68639.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-266 (-9.66 % of base) : 143764.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-262 (-2.56 % of base) : 205675.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (FullOpts)
-243 (-0.78 % of base) : 103294.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-214 (-20.68 % of base) : 184097.dasm - System.Net.Http.HPack.HPackDecoder:Parse(System.ReadOnlySpan`1[ubyte],byref,System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-209 (-16.88 % of base) : 143928.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-183 (-4.63 % of base) : 193568.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-180 (-14.31 % of base) : 117498.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
-177 (-13.27 % of base) : 143846.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-157 (-7.49 % of base) : 131413.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-149 (-3.79 % of base) : 151538.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.__Canon]:MergeSortCooperatively():this (FullOpts)
-147 (-3.60 % of base) : 193474.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
-128 (-4.46 % of base) : 161174.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
-100 (-4.74 % of base) : 241449.dasm - System.Diagnostics.FileVersionInfo:GetVersionInfoForCodePage(ulong,System.String):ubyte:this (FullOpts)
-100 (-6.49 % of base) : 131985.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-82 (-2.39 % of base) : 96779.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:CompleteAggregateClauseBinding(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax,Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.Binder+IntoClauseDisallowGroupReferenceBinder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundAggregateClause:this (FullOpts)
-81 (-6.81 % of base) : 234785.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
Top method regressions (percentages):
30 (12.40 % of base) : 227492.dasm - System.IO.Compression.BrotliStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
9 (9.38 % of base) : 199676.dasm - System.Text.Json.Utf8JsonReader:ValueTextEquals(System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
9 (8.91 % of base) : 177251.dasm - System.Security.Cryptography.RSA:<Decrypt>g__TryWithDecrypt|17_0(System.Security.Cryptography.RSA,System.ReadOnlySpan`1[ubyte],ubyte[],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte (FullOpts)
9 (8.91 % of base) : 177250.dasm - System.Security.Cryptography.RSA:<Encrypt>g__TryWithEncrypt|15_0(System.Security.Cryptography.RSA,System.ReadOnlySpan`1[ubyte],ubyte[],System.Security.Cryptography.RSAEncryptionPadding,byref):ubyte (FullOpts)
9 (8.91 % of base) : 201735.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Text.Json.JsonElement]:OnTryWriteAsObject(System.Text.Json.Utf8JsonWriter,System.Object,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts)
26 (8.58 % of base) : 241682.dasm - System.ConsolePal:SetCursorPosition(int,int) (FullOpts)
9 (8.18 % of base) : 177252.dasm - System.Security.Cryptography.RSA:<SignData>g__TryWithSignData|29_0(System.Security.Cryptography.RSA,System.ReadOnlySpan`1[ubyte],ubyte[],System.ValueTuple`2[System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding],byref):ubyte (FullOpts)
9 (8.18 % of base) : 177253.dasm - System.Security.Cryptography.RSA:<SignHash>g__TryWithSignHash|31_0(System.Security.Cryptography.RSA,System.ReadOnlySpan`1[ubyte],ubyte[],System.ValueTuple`2[System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding],byref):ubyte (FullOpts)
18 (7.50 % of base) : 117070.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:EliminateNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult]):int (FullOpts)
152 (7.33 % of base) : 166530.dasm - Microsoft.CodeAnalysis.Emit.NoPia.EmbeddedTypesManager`21+CommonEmbeddedType[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:GetAttributes(System.__Canon,System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[System.__Canon]:this (FullOpts)
12 (6.90 % of base) : 88885.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
3 (6.82 % of base) : 61219.dasm - System.Speech.Internal.SrgsCompiler.Tag:Serialize(System.Speech.Internal.StreamMarshaler):this (FullOpts)
12 (6.78 % of base) : 216134.dasm - System.Collections.Generic.GrowableArray`1[System.__Canon]:Insert(int,System.__Canon):this (FullOpts)
16 (6.56 % of base) : 163173.dasm - Microsoft.CodeAnalysis.Text.SourceText+LineInfo:get_Item(int):Microsoft.CodeAnalysis.Text.TextLine:this (FullOpts)
16 (6.56 % of base) : 145790.dasm - Microsoft.CodeAnalysis.Text.SourceText+LineInfo:get_Item(int):Microsoft.CodeAnalysis.Text.TextLine:this (FullOpts)
21 (6.44 % of base) : 70428.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
3 (6.12 % of base) : 234001.dasm - Microsoft.Extensions.Logging.FilterLoggingBuilderExtensions+<>c__DisplayClass5_0:<AddFilter>b__0(Microsoft.Extensions.Logging.LoggerFilterOptions):this (FullOpts)
3 (6.00 % of base) : 102875.dasm - Microsoft.CodeAnalysis.VisualBasic.BoundTypeOrValueData:Equals(Microsoft.CodeAnalysis.VisualBasic.BoundTypeOrValueData):ubyte:this (FullOpts)
5 (5.75 % of base) : 72387.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree:ParseText(System.String,Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,System.Text.Encoding,System.Collections.Immutable.ImmutableDictionary`2[System.String,int],System.Threading.CancellationToken):Microsoft.CodeAnalysis.SyntaxTree (FullOpts)
19 (5.71 % of base) : 199892.dasm - System.Text.Json.Utf8JsonWriter:WriteNull(System.ReadOnlySpan`1[ushort]):this (FullOpts)
Top method improvements (percentages):
-214 (-20.68 % of base) : 184097.dasm - System.Net.Http.HPack.HPackDecoder:Parse(System.ReadOnlySpan`1[ubyte],byref,System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-17 (-19.32 % of base) : 170915.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol:GetRootNamespaceSymbol():Microsoft.CSharp.RuntimeBinder.Semantics.NamespaceSymbol (FullOpts)
-15 (-18.52 % of base) : 240220.dasm - System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
-15 (-18.52 % of base) : 240221.dasm - System.Net.Quic.QuicConnection:HandleEventPeerAddressChanged(byref):int:this (FullOpts)
-209 (-16.88 % of base) : 143928.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-29 (-16.20 % of base) : 161374.dasm - Microsoft.CodeAnalysis.Emit.EmitOptions:.ctor(ubyte,int,System.String,System.String,int,ulong,ubyte,Microsoft.CodeAnalysis.SubsystemVersion,System.String,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int]):this (FullOpts)
-29 (-16.20 % of base) : 143973.dasm - Microsoft.CodeAnalysis.Emit.EmitOptions:.ctor(ubyte,int,System.String,System.String,int,ulong,ubyte,Microsoft.CodeAnalysis.SubsystemVersion,System.String,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int]):this (FullOpts)
-17 (-16.19 % of base) : 208393.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.Text.RegularExpressions.Symbolic.BitVector]:GetHashCode():int:this (FullOpts)
-15924 (-16.13 % of base) : 41335.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServerTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
-21 (-14.79 % of base) : 152932.dasm - System.DirectoryServices.ActiveDirectory.ReplicationCursor:get_SourceServer():System.String:this (FullOpts)
-77 (-14.45 % of base) : 177359.dasm - System.Security.Cryptography.CngHelpers:FromBCryptBlob(byref,System.ReadOnlySpan`1[ubyte],ubyte) (FullOpts)
-180 (-14.31 % of base) : 117498.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions:.ctor(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions):this (FullOpts)
-79 (-14.06 % of base) : 155910.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-79 (-14.06 % of base) : 138109.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-52 (-13.72 % of base) : 36252.dasm - System.Enum:TryParseByValueOrName[ubyte,ubyte](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-10 (-13.70 % of base) : 126946.dasm - System.Xml.XsdCachingReader:MoveToFirstAttribute():ubyte:this (FullOpts)
-17 (-13.60 % of base) : 132916.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
-177 (-13.27 % of base) : 143846.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-9 (-13.04 % of base) : 144417.dasm - Microsoft.CodeAnalysis.CodeGen.CompilationTestData:SetMethodILBuilder(Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.CodeGen.ILBuilder):this (FullOpts)
-33 (-13.04 % of base) : 60701.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseWithTag(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,int,System.Speech.Internal.Synthesis.SsmlParser+SsmlAttributes,ubyte) (FullOpts)
libraries.pmi.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 61386973 (overridden on cmd)
Total bytes of diff: 61370078 (overridden on cmd)
Total bytes of delta: -16895 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
506 : 227452.dasm (4.00 % of base)
469 : 64724.dasm (1.56 % of base)
250 : 60421.dasm (3.32 % of base)
159 : 179886.dasm (2.73 % of base)
131 : 45814.dasm (1.25 % of base)
73 : 124547.dasm (1.84 % of base)
73 : 204514.dasm (6.20 % of base)
72 : 124971.dasm (1.90 % of base)
71 : 159685.dasm (2.18 % of base)
69 : 199502.dasm (2.29 % of base)
67 : 64752.dasm (1.89 % of base)
64 : 124294.dasm (1.33 % of base)
59 : 130034.dasm (3.47 % of base)
59 : 60669.dasm (3.32 % of base)
58 : 88759.dasm (1.21 % of base)
55 : 101644.dasm (1.47 % of base)
55 : 150494.dasm (4.69 % of base)
55 : 190424.dasm (4.69 % of base)
55 : 127392.dasm (1.35 % of base)
53 : 292389.dasm (3.67 % of base)
Top file improvements (bytes):
-4057 : 41452.dasm (-4.27 % of base)
-379 : 169330.dasm (-8.54 % of base)
-379 : 169425.dasm (-8.59 % of base)
-262 : 199442.dasm (-9.16 % of base)
-232 : 136554.dasm (-11.66 % of base)
-225 : 108721.dasm (-0.65 % of base)
-220 : 239886.dasm (-1.92 % of base)
-209 : 199613.dasm (-16.33 % of base)
-179 : 199531.dasm (-9.43 % of base)
-169 : 286360.dasm (-4.14 % of base)
-155 : 298578.dasm (-8.44 % of base)
-147 : 229649.dasm (-11.91 % of base)
-138 : 164383.dasm (-9.71 % of base)
-138 : 204198.dasm (-9.71 % of base)
-122 : 299713.dasm (-3.44 % of base)
-120 : 159616.dasm (-3.74 % of base)
-104 : 67113.dasm (-1.65 % of base)
-103 : 249298.dasm (-2.37 % of base)
-100 : 139564.dasm (-4.48 % of base)
-88 : 101287.dasm (-4.61 % of base)
82 total files with Code Size differences (42 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
506 (4.00 % of base) : 227452.dasm - System.Management.ManagementClassGenerator:AddToDateTimeFunction():this (FullOpts)
469 (1.56 % of base) : 64724.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
250 (3.32 % of base) : 60421.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindTypeParameterConstraints(Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.TypeParameterConstraintClauseSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterConstraintClause,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Syntax.TypeConstraintSyntax]]:this (FullOpts)
159 (2.73 % of base) : 179886.dasm - Microsoft.Build.Internal.AvailableStaticMethods:InitializeAvailableMethods() (FullOpts)
131 (1.25 % of base) : 45814.dasm - Microsoft.Diagnostics.Tracing.Parsers.RegisteredTraceEventParser:GetManifestForRegisteredProvider(System.Guid):System.String (FullOpts)
73 (6.20 % of base) : 204514.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
73 (1.84 % of base) : 124547.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CollectOverloadedCandidates(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+Candidate],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,ubyte,ubyte,ubyte,byref,byref) (FullOpts)
72 (1.90 % of base) : 124971.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeUnification:CanUnifyHelper(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeWithModifiers,byref):ubyte (FullOpts)
71 (2.18 % of base) : 159685.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],byref,byref):this (FullOpts)
69 (2.29 % of base) : 199502.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:PopulateEncLogTableRows(System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int]):this (FullOpts)
67 (1.89 % of base) : 64752.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompiler:CreateCompilation(System.IO.TextWriter,Microsoft.CodeAnalysis.TouchedFileLogger,Microsoft.CodeAnalysis.ErrorLogger,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult],Microsoft.CodeAnalysis.AnalyzerConfigOptionsResult):Microsoft.CodeAnalysis.Compilation:this (FullOpts)
64 (1.33 % of base) : 124294.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:VerifyAccessExposureForMemberType(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
59 (3.32 % of base) : 60669.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
59 (3.47 % of base) : 130034.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
58 (1.21 % of base) : 88759.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
55 (4.69 % of base) : 150494.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
55 (4.69 % of base) : 190424.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
55 (1.47 % of base) : 101644.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:VerifyNameShadowingInMethodBody(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
55 (1.35 % of base) : 127392.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+TypeBinder:LookupTupleType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte,ubyte,ubyte):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol (FullOpts)
53 (3.67 % of base) : 292389.dasm - System.Net.Mime.MailBnfHelper:GetDateTimeString(System.DateTime,System.Text.StringBuilder):System.String (FullOpts)
Top method improvements (bytes):
-4057 (-4.27 % of base) : 41452.dasm - Microsoft.Diagnostics.Tracing.Parsers.ApplicationServerTraceEventParser:EnumerateTemplates(System.Func`3[System.String,System.String,int],System.Action`1[Microsoft.Diagnostics.Tracing.TraceEvent]):this (FullOpts)
-379 (-8.59 % of base) : 169425.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-379 (-8.54 % of base) : 169330.dasm - Newtonsoft.Json.JsonWriter:WriteValueAsync(Newtonsoft.Json.JsonWriter,int,System.Object,System.Threading.CancellationToken):System.Threading.Tasks.Task (FullOpts)
-262 (-9.16 % of base) : 199442.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-232 (-11.66 % of base) : 136554.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-225 (-0.65 % of base) : 108721.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
-220 (-1.92 % of base) : 239886.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (FullOpts)
-209 (-16.33 % of base) : 199613.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-179 (-9.43 % of base) : 199531.dasm - Microsoft.CodeAnalysis.Emit.EmitBaseline:CreateInitialBaseline(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ModuleMetadata,System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,Microsoft.CodeAnalysis.Emit.EditAndContinueMethodDebugInformation],System.Func`2[System.Reflection.Metadata.MethodDefinitionHandle,System.Reflection.Metadata.StandaloneSignatureHandle],ubyte):Microsoft.CodeAnalysis.Emit.EmitBaseline (FullOpts)
-169 (-4.14 % of base) : 286360.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:MergeSortCooperatively():this (FullOpts)
-155 (-8.44 % of base) : 298578.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
-147 (-11.91 % of base) : 229649.dasm - System.Net.Http.HPack.HPackDecoder:Parse(System.ReadOnlySpan`1[ubyte],byref,System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-138 (-9.71 % of base) : 164383.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeNodeActionsByKind|1(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],ubyte):this (FullOpts)
-138 (-9.71 % of base) : 204198.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeNodeActionsByKind|1(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.SyntaxNode],Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+GroupedAnalyzerActions[ubyte],ubyte):this (FullOpts)
-122 (-3.44 % of base) : 299713.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-120 (-3.74 % of base) : 159616.dasm - Microsoft.CodeAnalysis.Emit.DefinitionMap:TryCreateVariableSlotAllocator(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.Symbols.IMethodSymbolInternal,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator:this (FullOpts)
-104 (-1.65 % of base) : 67113.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-103 (-2.37 % of base) : 249298.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9[ubyte]:MoveNext():this (FullOpts)
-100 (-4.48 % of base) : 139564.dasm - System.Xml.Schema.XsdDateTime+Parser:Parse(System.String,int):ubyte:this (FullOpts)
-88 (-4.61 % of base) : 101287.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ValidateMethodForDelegateInvoke(Microsoft.CodeAnalysis.VisualBasic.BoundAddressOfOperator,Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int] (FullOpts)
Top method regressions (percentages):
13 (10.00 % of base) : 24609.dasm - System.MemoryExtensions:TryWrite[int](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,int):ubyte (FullOpts)
11 (8.33 % of base) : 24612.dasm - System.MemoryExtensions:TryWrite[long](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,long):ubyte (FullOpts)
16 (8.00 % of base) : 244900.dasm - System.Security.Cryptography.Pbkdf2Implementation:FillDeriveKeyPBKDF2(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,System.String,System.Span`1[ubyte]) (FullOpts)
7 (7.37 % of base) : 265642.dasm - System.Text.Json.PooledByteBufferWriter:WriteToStreamAsync(System.IO.Stream,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
7 (7.37 % of base) : 246626.dasm - System.Text.Json.PooledByteBufferWriter:WriteToStreamAsync(System.IO.Stream,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
18 (6.98 % of base) : 229731.dasm - System.Net.Http.Headers.KnownHeader:.ctor(System.String,System.Nullable`1[int],System.Nullable`1[int]):this (FullOpts)
28 (6.60 % of base) : 175818.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:LastIndexOf[int](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int],int,int,int,System.Collections.Generic.IEqualityComparer`1[int]):int (FullOpts)
9 (6.52 % of base) : 24617.dasm - System.MemoryExtensions:TryWrite[int,System.Nullable`1[int]](System.Span`1[ushort],System.IFormatProvider,System.Text.CompositeFormat,byref,int,System.Nullable`1[int]):ubyte (FullOpts)
28 (6.51 % of base) : 175816.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:LastIndexOf[ubyte](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[ubyte],ubyte,int,int,System.Collections.Generic.IEqualityComparer`1[ubyte]):int (FullOpts)
22 (6.51 % of base) : 279710.dasm - System.Formats.Asn1.AsnDecoder:TryReadPrimitiveBitString(System.ReadOnlySpan`1[ubyte],int,byref,byref,byref,System.Nullable`1[System.Formats.Asn1.Asn1Tag]):ubyte (FullOpts)
12 (6.49 % of base) : 91535.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
27 (6.24 % of base) : 175817.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:LastIndexOf[short](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[short],short,int,int,System.Collections.Generic.IEqualityComparer`1[short]):int (FullOpts)
73 (6.20 % of base) : 204514.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
29 (6.17 % of base) : 175821.dasm - Microsoft.CodeAnalysis.Collections.SegmentedArray:LastIndexOf[long](Microsoft.CodeAnalysis.Collections.SegmentedArray`1[long],long,int,int,System.Collections.Generic.IEqualityComparer`1[long]):int (FullOpts)
18 (6.12 % of base) : 279874.dasm - System.Formats.Asn1.AsnWriter:WriteConstructedCerCharacterString(System.Formats.Asn1.Asn1Tag,System.Text.Encoding,System.ReadOnlySpan`1[ushort],int):this (FullOpts)
3 (5.88 % of base) : 231140.dasm - System.Net.Security.SslStream:GenerateAlertToken():System.Net.Security.ProtocolToken:this (FullOpts)
3 (5.77 % of base) : 163833.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
3 (5.77 % of base) : 203659.dasm - Microsoft.CodeAnalysis.DesktopStrongNameProvider+<>c__DisplayClass12_0:<SignBuilder>b__0(System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob]):ubyte[]:this (FullOpts)
5 (5.75 % of base) : 70948.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree:ParseText(System.String,Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,System.Text.Encoding,System.Collections.Immutable.ImmutableDictionary`2[System.String,int],System.Threading.CancellationToken):Microsoft.CodeAnalysis.SyntaxTree (FullOpts)
3 (5.56 % of base) : 208132.dasm - System.Collections.Immutable.ImmutableDictionary`2+Builder[long,System.Nullable`1[int]]:TryGetKey(long,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-17 (-22.37 % of base) : 180665.dasm - Microsoft.Build.Execution.TaskRegistry:get_TaskRegistrations():System.Collections.Generic.IDictionary`2[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskIdentity,System.Collections.Generic.List`1[Microsoft.Build.Execution.TaskRegistry+RegisteredTaskRecord]]:this (FullOpts)
-20 (-20.83 % of base) : 222255.dasm - System.DirectoryServices.ActiveDirectory.ReplicationCursor:get_SourceServer():System.String:this (FullOpts)
-15 (-20.55 % of base) : 293786.dasm - System.Net.Quic.QuicConnection:HandleEventLocalAddressChanged(byref):int:this (FullOpts)
-15 (-20.55 % of base) : 293787.dasm - System.Net.Quic.QuicConnection:HandleEventPeerAddressChanged(byref):int:this (FullOpts)
-30 (-16.95 % of base) : 242358.dasm - System.Security.Cryptography.SP800108HmacCounterKdf:.ctor(ubyte[],System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
-209 (-16.33 % of base) : 199613.dasm - Microsoft.CodeAnalysis.Emit.SymbolMatcher:MapBaselineToCompilation(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]],System.Collections.Generic.IReadOnlyDictionary`2[Microsoft.CodeAnalysis.Symbols.ISymbolInternal,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Symbols.ISymbolInternal]]):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
-30 (-16.22 % of base) : 260140.dasm - CommandLine.Text.HelpText+<>c__DisplayClass66_0:<AddOption>b__2(System.Object):this (FullOpts)
-29 (-16.20 % of base) : 159840.dasm - Microsoft.CodeAnalysis.Emit.EmitOptions:.ctor(ubyte,int,System.String,System.String,int,ulong,ubyte,Microsoft.CodeAnalysis.SubsystemVersion,System.String,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int]):this (FullOpts)
-29 (-16.20 % of base) : 199678.dasm - Microsoft.CodeAnalysis.Emit.EmitOptions:.ctor(ubyte,int,System.String,System.String,int,ulong,ubyte,Microsoft.CodeAnalysis.SubsystemVersion,System.String,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int]):this (FullOpts)
-20 (-15.27 % of base) : 152736.dasm - Microsoft.CodeAnalysis.MetadataTypeName:get_NamespaceSegmentsMemory():System.Collections.Immutable.ImmutableArray`1[System.ReadOnlyMemory`1[ushort]]:this (FullOpts)
-20 (-15.27 % of base) : 192594.dasm - Microsoft.CodeAnalysis.MetadataTypeName:get_NamespaceSegmentsMemory():System.Collections.Immutable.ImmutableArray`1[System.ReadOnlyMemory`1[ushort]]:this (FullOpts)
-36 (-15.13 % of base) : 214610.dasm - System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute:get_TypeId():System.Object:this (FullOpts)
-67 (-14.89 % of base) : 9013.dasm - Microsoft.FSharp.Collections.Array4DModule:Create[System.Numerics.Vector`1[float]](int,int,int,int,System.Numerics.Vector`1[float]):System.Numerics.Vector`1[float][,,,] (FullOpts)
-20 (-14.29 % of base) : 242383.dasm - System.Security.Cryptography.AesCcm:.ctor(ubyte[]):this (FullOpts)
-79 (-14.13 % of base) : 151862.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-79 (-14.13 % of base) : 191756.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-10 (-14.08 % of base) : 136135.dasm - System.Xml.XsdCachingReader:MoveToFirstAttribute():ubyte:this (FullOpts)
-17 (-13.82 % of base) : 132388.dasm - System.Xml.XmlSqlBinaryReader:ImplReadPI():this (FullOpts)
-20 (-13.70 % of base) : 242592.dasm - System.Security.Cryptography.ChaCha20Poly1305:.ctor(ubyte[]):this (FullOpts)
-50 (-12.56 % of base) : 23052.dasm - System.Enum:TryParseByValueOrName[ubyte,long](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
libraries_tests.run.windows.x64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 281632278 (overridden on cmd)
Total bytes of diff: 280286058 (overridden on cmd)
Total bytes of delta: -1346220 (-0.48 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
559 : 106322.dasm (8.46 % of base)
336 : 646812.dasm (3.99 % of base)
191 : 54503.dasm (0.94 % of base)
184 : 222782.dasm (3.88 % of base)
180 : 222879.dasm (6.81 % of base)
174 : 223001.dasm (6.38 % of base)
167 : 222867.dasm (9.22 % of base)
149 : 631718.dasm (1.25 % of base)
147 : 65703.dasm (1.22 % of base)
146 : 619988.dasm (4.14 % of base)
141 : 91602.dasm (1.59 % of base)
137 : 431692.dasm (2.44 % of base)
130 : 90501.dasm (1.08 % of base)
126 : 664875.dasm (0.99 % of base)
122 : 222923.dasm (4.23 % of base)
121 : 54506.dasm (0.61 % of base)
117 : 65938.dasm (6.16 % of base)
116 : 222893.dasm (3.37 % of base)
114 : 620050.dasm (3.04 % of base)
114 : 336478.dasm (1.77 % of base)
Top file improvements (bytes):
-13991 : 571895.dasm (-13.98 % of base)
-2352 : 7461.dasm (-10.16 % of base)
-2352 : 29758.dasm (-9.80 % of base)
-2128 : 243025.dasm (-5.59 % of base)
-2041 : 243032.dasm (-5.55 % of base)
-1911 : 254605.dasm (-8.41 % of base)
-1825 : 279595.dasm (-1.38 % of base)
-1825 : 282125.dasm (-1.36 % of base)
-1771 : 243065.dasm (-5.57 % of base)
-1767 : 243058.dasm (-5.63 % of base)
-1764 : 243049.dasm (-5.58 % of base)
-1761 : 243072.dasm (-5.54 % of base)
-1652 : 243043.dasm (-5.55 % of base)
-1647 : 421534.dasm (-12.42 % of base)
-1521 : 7592.dasm (-10.30 % of base)
-1361 : 10070.dasm (-11.10 % of base)
-1361 : 36043.dasm (-10.97 % of base)
-1318 : 557038.dasm (-14.14 % of base)
-1318 : 563261.dasm (-14.14 % of base)
-1211 : 591467.dasm (-17.07 % of base)
99 total files with Code Size differences (62 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
559 (8.46 % of base) : 106322.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Instrumented Tier1)
336 (3.99 % of base) : 646812.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (Tier1)
191 (0.94 % of base) : 54503.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindAttributeCore(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundAttribute:this (Tier1)
184 (3.88 % of base) : 222782.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2[System.__Canon,System.__Canon]:AddToCollection(System.Collections.Generic.ICollection`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int):this (Tier1)
180 (6.81 % of base) : 222879.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2[System.__Canon,System.__Canon]:IDictionary_Generic_Keys_ModifyingTheDictionaryUpdatesTheCollection(int):this (Tier1)
174 (6.38 % of base) : 223001.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2[System.__Canon,System.__Canon]:IDictionary_Generic_Values_ModifyingTheDictionaryUpdatesTheCollection(int):this (Tier1)
167 (9.22 % of base) : 222867.dasm - System.Collections.Tests.ICollection_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ICollection_Generic_Contains_DefaultValueOnCollectionNotContainingDefaultValue(int):this (Tier1)
149 (1.25 % of base) : 631718.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitConditionalOperatorCore(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundNode:this (Tier1)
147 (1.22 % of base) : 65703.dasm - Microsoft.Interop.ComInterfaceGenerator:Initialize(Microsoft.CodeAnalysis.IncrementalGeneratorInitializationContext):this (Tier1)
146 (4.14 % of base) : 619988.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:ObjectCreationOverloadResolution(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol],byref):this (Tier1)
141 (1.59 % of base) : 91602.dasm - Microsoft.Interop.LibraryImportGenerator:PrintForwarderStub(Microsoft.Interop.ContainingSyntax,ubyte,Microsoft.Interop.LibraryImportGenerator+IncrementalStubGenerationContext,Microsoft.Interop.GeneratorDiagnosticsBag):Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax (Tier1)
137 (2.44 % of base) : 431692.dasm - System.Xml.Schema.Preprocessor:PreprocessParticle(System.Xml.Schema.XmlSchemaParticle):this (Tier1)
130 (1.08 % of base) : 90501.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:AddConstructorToCandidateSet(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol]],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,ubyte,byref):this (Tier1)
126 (0.99 % of base) : 664875.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
122 (4.23 % of base) : 222923.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2[System.__Canon,System.__Canon]:IDictionary_Generic_RemoveKey_EveryKey(int):this (Tier1)
121 (0.61 % of base) : 54506.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)
117 (6.16 % of base) : 65938.dasm - Microsoft.CodeAnalysis.TransformNode`2[System.ValueTuple`2[System.ValueTuple`2[System.ValueTuple`2[System.ValueTuple`2[System.ValueTuple`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.__Canon],System.__Canon],System.__Canon],System.__Canon],System.__Canon]:UpdateStateTable(Microsoft.CodeAnalysis.DriverStateTable+Builder,Microsoft.CodeAnalysis.NodeStateTable`1[System.__Canon],System.Threading.CancellationToken):Microsoft.CodeAnalysis.NodeStateTable`1[System.__Canon]:this (Tier1)
116 (3.37 % of base) : 222893.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2+<>c__DisplayClass62_0[System.__Canon,System.__Canon]:<IDictionary_Generic_Remove_ReferenceRemovedFromCollection>g__PopulateAndRemove|1(System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon],ubyte):System.Collections.Generic.KeyValuePair`2[System.WeakReference`1[System.Object],System.WeakReference`1[System.Object]]:this (Tier1)
114 (3.04 % of base) : 620050.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckAndCoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte):this (Tier1)
114 (1.77 % of base) : 336478.dasm - System.Linq.Parallel.SortHelper`2[int,System.Linq.Parallel.ConcatKey`2[int,int]]:MergeSortCooperatively():this (Tier1)
Top method improvements (bytes):
-13991 (-13.98 % of base) : 571895.dasm - System.Text.Json.SourceGeneration.Tests.ConstructorTests_Default+ConstructorTestsContext_Default:ClassWithManyConstructorParametersSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.ClassWithManyConstructorParameters):this (Tier0)
-2352 (-9.80 % of base) : 29758.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnPinnedMarshalledTypes>d__2:MoveNext():ubyte:this (Instrumented Tier0)
-2352 (-10.16 % of base) : 7461.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnPinnedMarshalledTypes>d__2:MoveNext():ubyte:this (Tier0)
-2128 (-5.59 % of base) : 243025.dasm - System.Tests.XTermData+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-2041 (-5.55 % of base) : 243032.dasm - System.Tests.GNOMETerminalData+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-1911 (-8.41 % of base) : 254605.dasm - System.Xml.Schema.SchemaNames:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1825 (-1.38 % of base) : 279595.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach001.freach001.Test:MainMethod():int (Instrumented Tier0)
-1825 (-1.36 % of base) : 282125.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.freach.freach007.freach007.Test:MainMethod():int (Instrumented Tier0)
-1771 (-5.57 % of base) : 243065.dasm - System.Tests.RxvtUnicode+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-1767 (-5.63 % of base) : 243058.dasm - System.Tests.Tmux256ColorData+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-1764 (-5.58 % of base) : 243049.dasm - System.Tests.TmuxData+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-1761 (-5.54 % of base) : 243072.dasm - System.Tests.AlacrittyData+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-1652 (-5.55 % of base) : 243043.dasm - System.Tests.WindowsTerminalData+<get_RecordedScenarios>d__9:MoveNext():ubyte:this (Tier0)
-1647 (-12.42 % of base) : 421534.dasm - System.Xml.Xsl.Xslt.KeywordsTable:.ctor(System.Xml.XmlNameTable):this (Instrumented Tier0)
-1521 (-10.30 % of base) : 7592.dasm - ComInterfaceGenerator.Unit.Tests.ByValueContentsMarshalling+<ByValueMarshalAttributeOnValueTypes>d__1:MoveNext():ubyte:this (Tier0)
-1361 (-10.97 % of base) : 36043.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Instrumented Tier0)
-1361 (-11.10 % of base) : 10070.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (Tier0)
-1318 (-14.14 % of base) : 563261.dasm - System.Text.Json.SourceGeneration.Tests.ConstructorTests_Default+ConstructorTestsContext_Default:SimpleTestClassSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.SimpleTestClass):this (Tier0)
-1318 (-14.14 % of base) : 557038.dasm - System.Text.Json.SourceGeneration.Tests.PropertyNameTests_Default+PropertyNameTestsContext_Default:SimpleTestClassSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Text.Json.Serialization.Tests.SimpleTestClass):this (Tier0)
-1211 (-17.07 % of base) : 591467.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteHelloWorldEscaped(System.Text.Json.JsonWriterOptions):this (Instrumented Tier0)
Top method regressions (percentages):
46 (15.38 % of base) : 590972.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],double):this (Tier1)
46 (15.38 % of base) : 590961.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],float):this (Tier1)
34 (14.23 % of base) : 577525.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscape(System.ReadOnlySpan`1[ushort]):this (Tier1)
31 (12.97 % of base) : 589849.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscape(System.ReadOnlySpan`1[ushort]):this (Tier1)
34 (12.78 % of base) : 577524.dasm - System.Text.Json.Utf8JsonWriter:WriteStringValue(System.ReadOnlySpan`1[ushort]):this (Tier1)
43 (11.94 % of base) : 590960.dasm - System.Text.Json.Utf8JsonWriter:WriteNumber(System.ReadOnlySpan`1[ushort],float):this (Tier1)
43 (11.47 % of base) : 590971.dasm - System.Text.Json.Utf8JsonWriter:WriteNumber(System.ReadOnlySpan`1[ushort],double):this (Tier1)
34 (11.33 % of base) : 591815.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(System.ReadOnlySpan`1[ushort]):this (Tier1)
41 (10.96 % of base) : 592899.dasm - System.Text.Json.Utf8JsonWriter:WriteNull(System.ReadOnlySpan`1[ushort]):this (Tier1)
47 (10.61 % of base) : 591809.dasm - System.Text.Json.Utf8JsonWriter:WriteStringEscape(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):this (Tier1)
52 (10.02 % of base) : 591807.dasm - System.Text.Json.Utf8JsonWriter:WriteString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):this (Tier1)
167 (9.22 % of base) : 222867.dasm - System.Collections.Tests.ICollection_Generic_Tests`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:ICollection_Generic_Contains_DefaultValueOnCollectionNotContainingDefaultValue(int):this (Tier1)
19 (9.09 % of base) : 543767.dasm - System.Text.Encodings.Web.TextEncoder:Encode(System.String):System.String:this (Tier1)
559 (8.46 % of base) : 106322.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Instrumented Tier1)
13 (7.98 % of base) : 500607.dasm - System.Globalization.CompareInfo:IndexOf(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
31 (7.81 % of base) : 590879.dasm - System.Text.Json.Utf8JsonWriter:WriteStartEscape(System.ReadOnlySpan`1[ushort],ubyte):this (Tier1)
84 (7.69 % of base) : 505900.dasm - System.Number:FormatCurrency[ubyte](byref,byref,int,System.Globalization.NumberFormatInfo) (Tier1)
22 (7.67 % of base) : 590874.dasm - System.Text.Json.Utf8JsonWriter:WriteNumberEscape(System.ReadOnlySpan`1[ushort],long):this (Tier1)
3 (7.14 % of base) : 448103.dasm - (dynamicClass):InvokeStub_MethodInfoDefaultParameters.StaticMethod(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
180 (6.81 % of base) : 222879.dasm - System.Collections.Tests.IDictionary_Generic_Tests`2[System.__Canon,System.__Canon]:IDictionary_Generic_Keys_ModifyingTheDictionaryUpdatesTheCollection(int):this (Tier1)
Top method improvements (percentages):
-55 (-36.42 % of base) : 536453.dasm - System.ServiceModel.Syndication.SyndicationFeed:.ctor(System.String,System.String,System.Uri,System.String,System.DateTimeOffset):this (Tier0)
-103 (-35.64 % of base) : 536452.dasm - System.ServiceModel.Syndication.Tests.SyndicationFeedTests:Ctor_String_String_Uri_String_DateTimeOffset(System.String,System.String,System.Uri,System.String,System.DateTimeOffset):this (Tier0)
-103 (-34.33 % of base) : 536592.dasm - System.ServiceModel.Syndication.Tests.SyndicationFeedTests:Ctor_String_String_Uri_String_DateTimeOffset_Items(System.String,System.String,System.Uri,System.String,System.DateTimeOffset,System.Collections.Generic.IEnumerable`1[System.ServiceModel.Syndication.SyndicationItem]):this (Tier0)
-84 (-33.87 % of base) : 74003.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerExecutor:TryExecuteSymbolEndActions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.SymbolEndAnalyzerAction],Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.Diagnostics.SymbolDeclaredCompilationEvent,System.Func`5[Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SyntaxReference,Microsoft.CodeAnalysis.Compilation,System.Threading.CancellationToken,Microsoft.CodeAnalysis.SyntaxNode],ubyte,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):ubyte:this (Tier0)
-83 (-33.74 % of base) : 74062.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerOperationBlockStartAnalysisContext:.ctor(Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.Diagnostics.HostOperationBlockStartAnalysisScope,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IOperation],Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions,System.Func`2[Microsoft.CodeAnalysis.IOperation,Microsoft.CodeAnalysis.FlowAnalysis.ControlFlowGraph],Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],ubyte,System.Threading.CancellationToken):this (Tier0)
-94 (-32.53 % of base) : 259275.dasm - System.Diagnostics.ActivitySource:CreateActivity(System.String,int,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Collections.Generic.IEnumerable`1[System.Diagnostics.ActivityLink],int):System.Diagnostics.Activity:this (Tier0)
-67 (-31.60 % of base) : 70161.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerSymbolStartAnalysisContext:.ctor(Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.Diagnostics.HostSymbolStartAnalysisScope,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions,ubyte,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):this (Instrumented Tier0)
-67 (-31.60 % of base) : 69365.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerSymbolStartAnalysisContext:.ctor(Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer,Microsoft.CodeAnalysis.Diagnostics.HostSymbolStartAnalysisScope,Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.Diagnostics.AnalyzerOptions,ubyte,Microsoft.CodeAnalysis.SyntaxTree,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan],System.Threading.CancellationToken):this (Tier0)
-50 (-31.06 % of base) : 618050.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitIntegerSwitchJumpTable(System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.ConstantValue,System.Object][],System.Object,Microsoft.CodeAnalysis.CodeGen.LocalOrParameter,int):this (Instrumented Tier0)
-50 (-31.06 % of base) : 612479.dasm - Microsoft.CodeAnalysis.CodeGen.ILBuilder:EmitIntegerSwitchJumpTable(System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.ConstantValue,System.Object][],System.Object,Microsoft.CodeAnalysis.CodeGen.LocalOrParameter,int):this (Tier0)
-97 (-30.70 % of base) : 140727.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-97 (-30.70 % of base) : 157689.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):this (Tier0)
-41 (-30.60 % of base) : 534640.dasm - System.ServiceModel.Syndication.SyndicationItem:.ctor(System.String,System.String,System.Uri):this (Tier0)
-90 (-30.51 % of base) : 157773.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-90 (-30.51 % of base) : 140867.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],System.Collections.Immutable.ImmutableArray`1[ubyte],ubyte,ubyte,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-147 (-30.50 % of base) : 157859.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-147 (-30.50 % of base) : 141025.dasm - Microsoft.CodeAnalysis.CSharp.BoundCall:Update(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundCall:this (Tier0)
-121 (-30.33 % of base) : 176519.dasm - Microsoft.CodeAnalysis.CSharp.BoundObjectCreationExpression:.ctor(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):this (Tier0)
-62 (-30.24 % of base) : 81469.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Instrumented Tier0)
-62 (-30.24 % of base) : 76313.dasm - System.Net.SSPISecureChannelType:InitializeSecurityContext(byref,byref,System.String,int,int,System.Net.Security.InputSecurityBuffers,byref,byref):int:this (Tier0)
librariestestsnotieredcompilation.run.windows.x64.Release.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 133912278 (overridden on cmd)
Total bytes of diff: 133815471 (overridden on cmd)
Total bytes of delta: -96807 (-0.07 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
506 : 149336.dasm (4.00 % of base)
503 : 4427.dasm (1.72 % of base)
237 : 23669.dasm (2.42 % of base)
180 : 138337.dasm (5.29 % of base)
176 : 66967.dasm (3.59 % of base)
176 : 68140.dasm (3.59 % of base)
149 : 110909.dasm (7.51 % of base)
146 : 242765.dasm (8.33 % of base)
144 : 281585.dasm (2.92 % of base)
137 : 232069.dasm (7.93 % of base)
130 : 134121.dasm (6.06 % of base)
118 : 130400.dasm (4.48 % of base)
107 : 101748.dasm (2.65 % of base)
101 : 277548.dasm (3.01 % of base)
98 : 233394.dasm (3.23 % of base)
95 : 242826.dasm (4.68 % of base)
81 : 101724.dasm (1.51 % of base)
79 : 124456.dasm (3.31 % of base)
74 : 212136.dasm (2.67 % of base)
73 : 55758.dasm (6.20 % of base)
Top file improvements (bytes):
-428 : 13202.dasm (-3.99 % of base)
-397 : 67487.dasm (-0.46 % of base)
-379 : 42313.dasm (-8.74 % of base)
-296 : 67455.dasm (-0.26 % of base)
-232 : 33618.dasm (-11.66 % of base)
-220 : 5356.dasm (-1.92 % of base)
-191 : 204058.dasm (-0.08 % of base)
-190 : 51044.dasm (-2.99 % of base)
-184 : 118685.dasm (-1.80 % of base)
-170 : 45187.dasm (-2.57 % of base)
-168 : 13206.dasm (-3.05 % of base)
-167 : 139475.dasm (-4.10 % of base)
-156 : 3523.dasm (-0.76 % of base)
-155 : 186731.dasm (-8.44 % of base)
-149 : 165397.dasm (-3.65 % of base)
-148 : 160758.dasm (-3.66 % of base)
-147 : 166460.dasm (-12.03 % of base)
-147 : 16776.dasm (-11.76 % of base)
-147 : 155424.dasm (-11.76 % of base)
-146 : 202344.dasm (-5.62 % of base)
81 total files with Code Size differences (43 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
506 (4.00 % of base) : 149336.dasm - System.Management.ManagementClassGenerator:AddToDateTimeFunction():this (FullOpts)
503 (1.72 % of base) : 4427.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
237 (2.42 % of base) : 23669.dasm - Microsoft.CodeAnalysis.FindSymbols.DependentTypeFinder+ProjectIndex+<CreateIndexAsync>d__8:MoveNext():this (FullOpts)
180 (5.29 % of base) : 138337.dasm - System.IO.Tests.Stream_ReadAtLeast+<ReadMoreThanMinimumBytes>d__2:MoveNext():this (FullOpts)
176 (3.59 % of base) : 66967.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGenerationTests:ForLoops():this (FullOpts)
176 (3.59 % of base) : 68140.dasm - System.CodeDom.Compiler.Tests.VBCodeGenerationTests:ForLoops():this (FullOpts)
149 (7.51 % of base) : 110909.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test2():ubyte (FullOpts)
146 (8.33 % of base) : 242765.dasm - System.Text.Encodings.Tests.DecoderMiscTests:DecoderConvertSplitAcrossInvalidMultiByteSequenceTests():this (FullOpts)
144 (2.92 % of base) : 281585.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedRecordPrintMembers:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
137 (7.93 % of base) : 232069.dasm - System.Security.Cryptography.Tests.HmacTests`1[System.__Canon]:VerifyHmac(int,ubyte[]):this (FullOpts)
130 (6.06 % of base) : 134121.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedViewStreamTests:AllReadWriteMethods(long,long):this (FullOpts)
118 (4.48 % of base) : 130400.dasm - System.IO.Tests.Directory_GetFileSystemEntries_str_str:SearchPatternExactMatch():this (FullOpts)
107 (2.65 % of base) : 101748.dasm - System.Diagnostics.Tests.DiagnosticSourceEventSourceBridgeTests:<TestTransformSpecs>b__5_0():this (FullOpts)
101 (3.01 % of base) : 277548.dasm - System.Text.Json.Serialization.Tests.NullableTests:EnumerableWithNullableValue() (FullOpts)
98 (3.23 % of base) : 233394.dasm - System.Security.Cryptography.X509Certificates.Tests.ChainPolicyTests:VerifyCloneBehavior() (FullOpts)
95 (4.68 % of base) : 242826.dasm - System.Text.Tests.ASCIIEncodingDecode:Decode(ubyte[],int,int):this (FullOpts)
81 (1.51 % of base) : 101724.dasm - System.Diagnostics.Metrics.Tests.MetricsTests+<>c:<MeterDisposalsTest>b__9_0():this (FullOpts)
79 (3.31 % of base) : 124456.dasm - System.Formats.Tar.Tests.TarFile_ExtractToDirectory_File_Tests:Extract_AllSegmentsOfPath():this (FullOpts)
74 (2.67 % of base) : 212136.dasm - System.Tests.UInt128Tests+<Parse_Valid_TestData>d__13:MoveNext():ubyte:this (FullOpts)
73 (6.20 % of base) : 55758.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
Top method improvements (bytes):
-428 (-3.99 % of base) : 13202.dasm - Microsoft.CodeAnalysis.Testing.AnalyzerTest`1[System.__Canon]:VerifyDiagnosticResults(System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[Microsoft.CodeAnalysis.Project,Microsoft.CodeAnalysis.Diagnostic]],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer],Microsoft.CodeAnalysis.Testing.DiagnosticResult[],Microsoft.CodeAnalysis.Testing.IVerifier):this (MinOpts)
-397 (-0.46 % of base) : 67487.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Valid_TestData>d__0:MoveNext():ubyte:this (FullOpts)
-379 (-8.74 % of base) : 42313.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object) (FullOpts)
-296 (-0.26 % of base) : 67455.dasm - System.CodeDom.Compiler.Tests.CodeValidatorTests+<ValidateIdentifiers_Invalid_TestData>d__2:MoveNext():ubyte:this (FullOpts)
-232 (-11.66 % of base) : 33618.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-220 (-1.92 % of base) : 5356.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (FullOpts)
-191 (-0.08 % of base) : 204058.dasm - System.Runtime.Serialization.Formatters.Tests.BinaryFormatterTests+<SerializableObjects>d__3:MoveNext():ubyte:this (Tier0-MinOpts)
-190 (-2.99 % of base) : 51044.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-184 (-1.80 % of base) : 118685.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.covariant.usage001.usage001.Test:MainMethod(System.String[]):int (FullOpts)
-170 (-2.57 % of base) : 45187.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
-168 (-3.05 % of base) : 13206.dasm - Microsoft.CodeAnalysis.Testing.WeightedMatch:Match[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]](System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.DiagnosticResult],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.TimeSpan):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Testing.WeightedMatch+Result`2[Microsoft.CodeAnalysis.Testing.DiagnosticResult,System.ValueTuple`2[System.__Canon,System.__Canon]]] (MinOpts)
-167 (-4.10 % of base) : 139475.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,int]:MergeSortCooperatively():this (FullOpts)
-156 (-0.76 % of base) : 3523.dasm - Microsoft.CodeAnalysis.Testing.ReferenceAssemblies+<ResolveCoreAsync>d__50:MoveNext():this (MinOpts)
-155 (-8.44 % of base) : 186731.dasm - System.Reflection.Emit.CustomAttributeInfo:DecodeCustomAttribute(System.Reflection.ConstructorInfo,System.ReadOnlySpan`1[ubyte]):System.Reflection.Emit.CustomAttributeInfo (FullOpts)
-149 (-3.65 % of base) : 165397.dasm - System.Net.Security.FakeNtlmServer:ValidateAuthentication(ubyte[]):this (FullOpts)
-148 (-3.66 % of base) : 160758.dasm - System.Net.Security.FakeNtlmServer:ValidateAuthentication(ubyte[]):this (FullOpts)
-147 (-12.03 % of base) : 166460.dasm - System.Net.Http.HPack.HPackDecoder:Parse(System.ReadOnlySpan`1[ubyte],byref,System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-147 (-11.76 % of base) : 16776.dasm - System.Net.Http.HPack.HPackDecoder:Parse(System.ReadOnlySpan`1[ubyte],byref,System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-147 (-11.76 % of base) : 155424.dasm - System.Net.Http.HPack.HPackDecoder:Parse(System.ReadOnlySpan`1[ubyte],byref,System.Net.Http.IHttpStreamHeadersHandler):this (FullOpts)
-146 (-5.62 % of base) : 202344.dasm - System.Numerics.Tests.StackCalc:DoBinaryOperatorSN(System.Numerics.BigInteger,System.Numerics.BigInteger,System.String,byref):System.Numerics.BigInteger:this (FullOpts)
Top method regressions (percentages):
25 (9.62 % of base) : 171574.dasm - Tests.Collections.IListTest`1[int]:SetItemNotUnique():this (FullOpts)
25 (9.62 % of base) : 171130.dasm - Tests.Collections.IListTest`1[System.__Canon]:SetItemNotUnique():this (FullOpts)
59 (9.20 % of base) : 202418.dasm - System.Numerics.Tests.powTest:RunPowAxiom0PowX() (FullOpts)
6 (8.70 % of base) : 275284.dasm - System.Text.Json.Tests.Utf8JsonWriterTests+<>c:<WriteString_NullPropertyName_JsonEncodedText>b__204_1(System.Text.Json.Utf8JsonWriter,System.ReadOnlySpan`1[ushort],System.Text.Json.JsonEncodedText):this (FullOpts)
6 (8.70 % of base) : 275285.dasm - System.Text.Json.Tests.Utf8JsonWriterTests+<>c:<WriteString_NullPropertyName_JsonEncodedText>b__204_2(System.Text.Json.Utf8JsonWriter,System.ReadOnlySpan`1[ubyte],System.Text.Json.JsonEncodedText):this (FullOpts)
146 (8.33 % of base) : 242765.dasm - System.Text.Encodings.Tests.DecoderMiscTests:DecoderConvertSplitAcrossInvalidMultiByteSequenceTests():this (FullOpts)
6 (8.00 % of base) : 203052.dasm - System.Numerics.Tests.ExtractBytesMembersTests+<>c__DisplayClass11_0:<ToByteArray_FromStringTests_Advanced>b__0():System.Object:this (FullOpts)
6 (8.00 % of base) : 203025.dasm - System.Numerics.Tests.ExtractBytesMembersTests+<>c__DisplayClass7_0:<ToByteArray_FromIntTests_Advanced>b__0():System.Object:this (FullOpts)
6 (8.00 % of base) : 203055.dasm - System.Numerics.Tests.ExtractBytesMembersTests+<>c__DisplayClass9_0:<ToByteArray_FromLongTests_Advanced>b__0():System.Object:this (FullOpts)
137 (7.93 % of base) : 232069.dasm - System.Security.Cryptography.Tests.HmacTests`1[System.__Canon]:VerifyHmac(int,ubyte[]):this (FullOpts)
149 (7.51 % of base) : 110909.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.operate007a.operate007a.Test:Test2():ubyte (FullOpts)
7 (7.22 % of base) : 203038.dasm - System.Numerics.Tests.ExtractBytesMembersTests+<>c__DisplayClass16_0:<ValidateGetByteCountAndTryWriteBytes>b__0():System.Object:this (FullOpts)
3 (7.14 % of base) : 188776.dasm - (dynamicClass):InvokeStub_MethodInfoDefaultParameters.StaticMethod(System.Object,System.Object,System.Object,System.Object,System.Object):System.Object (FullOpts)
5 (6.94 % of base) : 281608.dasm - System.Text.RegularExpressions.Tests.RegexParserTests:ParseCheckOffset(System.String,int,System.Nullable`1[int],int):this (FullOpts)
18 (6.62 % of base) : 120522.dasm - System.Formats.Asn1.AsnWriter:WriteConstructedCerCharacterString(System.Formats.Asn1.Asn1Tag,System.Text.Encoding,System.ReadOnlySpan`1[ushort],int):this (FullOpts)
12 (6.49 % of base) : 18462.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
3 (6.38 % of base) : 129623.dasm - System.IO.Compression.Tests.ZipFile_ZipArchive_Create+<>c__DisplayClass0_0:<CreateEntryFromFileExtension>b__1():System.Object:this (FullOpts)
12 (6.35 % of base) : 54541.dasm - System.String:Format[System.__Canon,System.__Canon,int](System.IFormatProvider,System.Text.CompositeFormat,System.__Canon,System.__Canon,int):System.String (FullOpts)
73 (6.20 % of base) : 55758.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__75:MoveNext():ubyte:this (FullOpts)
130 (6.06 % of base) : 134121.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedViewStreamTests:AllReadWriteMethods(long,long):this (FullOpts)
Top method improvements (percentages):
-21 (-22.83 % of base) : 72159.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_1:<RemoveRangeEnumerableInvalid>b__20():System.Object:this (FullOpts)
-30 (-16.95 % of base) : 24577.dasm - System.Security.Cryptography.SP800108HmacCounterKdf:.ctor(ubyte[],System.Security.Cryptography.HashAlgorithmName):this (FullOpts)
-20 (-16.13 % of base) : 233625.dasm - System.Security.Cryptography.AesCcm:.ctor(ubyte[]):this (FullOpts)
-20 (-16.13 % of base) : 235897.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests+<>c:<Ctor_KeySpan_ArgValidation>b__7_0():System.Object:this (FullOpts)
-20 (-16.13 % of base) : 24708.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests+<>c:<Ctor_KeySpan_ArgValidation>b__7_0():System.Object:this (FullOpts)
-20 (-15.38 % of base) : 236841.dasm - System.Security.Cryptography.ChaCha20Poly1305:.ctor(ubyte[]):this (FullOpts)
-36 (-15.13 % of base) : 89450.dasm - System.ComponentModel.Design.Serialization.RootDesignerSerializerAttribute:get_TypeId():System.Object:this (FullOpts)
-20 (-14.93 % of base) : 236581.dasm - System.Security.Cryptography.Tests.AesGcmTests+<>c__DisplayClass2_0:<InvalidKeyLength>b__1():System.Object:this (FullOpts)
-79 (-14.60 % of base) : 47266.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-79 (-14.60 % of base) : 53407.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-20 (-14.60 % of base) : 233687.dasm - System.Security.Cryptography.Tests.AesCcmTests+<>c:<NullKey>b__8_0():System.Object:this (FullOpts)
-17 (-14.29 % of base) : 103836.dasm - System.Diagnostics.TextWriterTraceListenerTests.DelimiterWriteMethodTestsBase:.ctor():this (FullOpts)
-17 (-14.29 % of base) : 103811.dasm - System.Diagnostics.TextWriterTraceListenerTests.TextWriterTraceListener_WriteTestsBase:.ctor():this (FullOpts)
-20 (-14.29 % of base) : 236844.dasm - System.Security.Cryptography.Tests.ChaCha20Poly1305IsSupportedTests+<>c__DisplayClass2_0:<CtorThrowsPNSEIfNotSupported>b__1():System.Object:this (FullOpts)
-20 (-14.29 % of base) : 235898.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests+<>c:<Ctor_KeySpan_ArgValidation>b__7_1():System.Object:this (FullOpts)
-20 (-14.29 % of base) : 24709.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests+<>c:<Ctor_KeySpan_ArgValidation>b__7_1():System.Object:this (FullOpts)
-20 (-14.29 % of base) : 235899.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests+<>c:<Ctor_KeySpan_ArgValidation>b__7_2():System.Object:this (FullOpts)
-20 (-14.29 % of base) : 24710.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests+<>c:<Ctor_KeySpan_ArgValidation>b__7_2():System.Object:this (FullOpts)
-79 (-14.13 % of base) : 55711.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-14 (-12.84 % of base) : 195609.dasm - System.Tests.RandomTests+<>c__DisplayClass27_0:<GetItems_Buffer_ArgValidation>b__0():this (FullOpts)
realworld.run.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 14170687 (overridden on cmd)
Total bytes of diff: 14157421 (overridden on cmd)
Total bytes of delta: -13266 (-0.09 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
503 : 18873.dasm (1.71 % of base)
330 : 2407.dasm (3.66 % of base)
278 : 34800.dasm (2.70 % of base)
256 : 5812.dasm (0.29 % of base)
117 : 21181.dasm (7.08 % of base)
106 : 17325.dasm (3.36 % of base)
95 : 9403.dasm (2.34 % of base)
90 : 22106.dasm (1.91 % of base)
65 : 10053.dasm (3.36 % of base)
65 : 32242.dasm (5.35 % of base)
59 : 22462.dasm (3.31 % of base)
54 : 22536.dasm (1.41 % of base)
53 : 17432.dasm (0.66 % of base)
51 : 9939.dasm (1.25 % of base)
50 : 757.dasm (6.20 % of base)
49 : 9955.dasm (0.95 % of base)
48 : 23382.dasm (1.79 % of base)
46 : 26448.dasm (3.66 % of base)
43 : 28192.dasm (0.36 % of base)
40 : 34583.dasm (0.95 % of base)
Top file improvements (bytes):
-3102 : 4518.dasm (-1.88 % of base)
-1502 : 4609.dasm (-32.31 % of base)
-1485 : 3150.dasm (-27.00 % of base)
-1293 : 12508.dasm (-5.65 % of base)
-300 : 13864.dasm (-0.91 % of base)
-237 : 11754.dasm (-6.01 % of base)
-232 : 1671.dasm (-11.66 % of base)
-220 : 14800.dasm (-1.92 % of base)
-204 : 11819.dasm (-10.08 % of base)
-158 : 12533.dasm (-6.81 % of base)
-146 : 34420.dasm (-1.52 % of base)
-144 : 9271.dasm (-5.11 % of base)
-137 : 10050.dasm (-1.79 % of base)
-133 : 11340.dasm (-1.24 % of base)
-131 : 13062.dasm (-0.56 % of base)
-128 : 7862.dasm (-1.74 % of base)
-126 : 8718.dasm (-0.76 % of base)
-125 : 25424.dasm (-2.22 % of base)
-113 : 22690.dasm (-1.83 % of base)
-112 : 14958.dasm (-0.96 % of base)
76 total files with Code Size differences (41 improved, 35 regressed), 20 unchanged.
Top method regressions (bytes):
503 (1.71 % of base) : 18873.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
330 (3.66 % of base) : 2407.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
278 (2.70 % of base) : 34800.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
256 (0.29 % of base) : 5812.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
117 (7.08 % of base) : 21181.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetCompilationReferences(System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref):this (FullOpts)
106 (3.36 % of base) : 17325.dasm - Microsoft.ML.Numeric.VectorUtils:AddMultWithOffset(byref,float,byref,int) (FullOpts)
95 (2.34 % of base) : 9403.dasm - FSharp.Compiler.CheckExpressions:AnalyzeAndMakeAndPublishRecursiveValue(FSharp.Compiler.CheckExpressions+OverridesOK,ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,int,FSharp.Compiler.CheckExpressions+NormalizedRecBindingDefn):System.Tuple`2[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val]],System.Tuple`2[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,int]] (FullOpts)
90 (1.91 % of base) : 22106.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
65 (3.36 % of base) : 10053.dasm - FSharp.Compiler.NameResolution:ResolveExprDotLongIdent(FSharp.Compiler.NameResolution+NameResolver,FSharp.Compiler.Text.Range,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],FSharp.Compiler.NameResolution+TypeNameResolutionInfo,FSharp.Compiler.InfoReader+FindMemberFlag):System.Tuple`3[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.NameResolution+Item,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]] (FullOpts)
65 (5.35 % of base) : 32242.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
59 (3.31 % of base) : 22462.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (FullOpts)
54 (1.41 % of base) : 22536.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CoerceArguments[System.__Canon](Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.BoundExpression):this (FullOpts)
53 (0.66 % of base) : 17432.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
51 (1.25 % of base) : 9939.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2D_ExtractImplicitFieldAndMethodBindings$cont@2094(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTreeOps+DisplayEnv,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],FSharp.Compiler.TypedTree+EntityRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2C],Microsoft.FSharp.Core.Unit):System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreInitializationGraphEliminationBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding]] (FullOpts)
50 (6.20 % of base) : 757.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
49 (0.95 % of base) : 9955.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)
48 (1.79 % of base) : 23382.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertySymbol:GetAccessorDeclarations(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,byref,byref,byref,byref) (FullOpts)
46 (3.66 % of base) : 26448.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<Scan>g__enforceMemberNotNullWhenForPendingReturn|61_3(Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+PendingBranch[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalFunctionState],Microsoft.CodeAnalysis.CSharp.BoundReturnStatement):this (FullOpts)
43 (0.36 % of base) : 28192.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
40 (0.95 % of base) : 34583.dasm - System.Management.Automation.ScriptBlock:InvokeWithPipeImpl(int,ubyte,System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ScriptBlock],System.Collections.Generic.List`1[System.Management.Automation.PSVariable],int,System.Object,System.Object,System.Object,System.Management.Automation.Internal.Pipe,System.Management.Automation.InvocationInfo,System.Object[]):this (FullOpts)
Top method improvements (bytes):
-3102 (-1.88 % of base) : 4518.dasm - FSharp.Compiler.LexFilter+LexFilterImpl:hwTokenFetch(ubyte):FSharp.Compiler.Parser+token:this (Tier0-MinOpts)
-1502 (-32.31 % of base) : 4609.dasm - FSharp.Compiler.CompilerConfig+TcConfig:CloneToBuilder():FSharp.Compiler.CompilerConfig+TcConfigBuilder:this (FullOpts)
-1485 (-27.00 % of base) : 3150.dasm - FSharp.Compiler.CompilerConfig+TcConfig:.ctor(FSharp.Compiler.CompilerConfig+TcConfigBuilder,ubyte):this (FullOpts)
-1293 (-5.65 % of base) : 12508.dasm - FSharp.Compiler.CheckComputationExpressions+tryTrans@776-1:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynExpr]:this (FullOpts)
-300 (-0.91 % of base) : 13864.dasm - FSharp.Compiler.CompilerDiagnostics:OutputExceptionR@597(System.Text.StringBuilder,ubyte,System.Text.StringBuilder,System.Exception) (FullOpts)
-237 (-6.01 % of base) : 11754.dasm - FSharp.Compiler.CheckComputationExpressions:tryTcSequenceExprBody@1880(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,ubyte,ubyte,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynExpr):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]] (FullOpts)
-232 (-11.66 % of base) : 1671.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-220 (-1.92 % of base) : 14800.dasm - System.Reflection.Metadata.MetadataReader:InitializeTableReaders(System.Reflection.Internal.MemoryBlock,ubyte,int[],int[]):this (FullOpts)
-204 (-10.08 % of base) : 11819.dasm - FSharp.Compiler.Parser+_fsyacc_reductions@1858-366:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynMemberKind,FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]:this (FullOpts)
-158 (-6.81 % of base) : 12533.dasm - FSharp.Compiler.CheckComputationExpressions:transBind@1630(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.AccessibilityLogic+AccessorDomain,System.String,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+MethInfo],System.Collections.Generic.IDictionary`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`8[System.String,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[System.String],FSharp.Compiler.Infos+MethInfo]]]],System.Collections.Generic.IDictionary`2[System.String,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`8[System.String,ubyte,ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[System.String],FSharp.Compiler.Infos+MethInfo]]]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.Ident,ubyte],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.Ident,ubyte],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.Ident,ubyte],FSharp.Compiler.CheckExpressions+TcEnv,Internal.Utilities.Library.LazyWithContext`2[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+TcEnv],FSharp.Compiler.Text.Range],ubyte,FSharp.Compiler.CheckComputationExpressions+CustomOperationsMode,Internal.Utilities.Library.LazyWithContext`2[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.CheckExpressions+TcEnv],FSharp.Compiler.Text.Range],FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Syntax.SynExpr],System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.Syntax.SynPat,FSharp.Compiler.Syntax.SynExpr,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Syntax.SynExpr]):FSharp.Compiler.Syntax.SynExpr (FullOpts)
-146 (-1.52 % of base) : 34420.dasm - System.Management.Automation.Language.Tokenizer:NextToken():System.Management.Automation.Language.Token:this (FullOpts)
-144 (-5.11 % of base) : 9271.dasm - FSharp.Compiler.NameResolution:ResolveTypeLongIdentInModuleOrNamespace(FSharp.Compiler.NameResolution+TcResultsSink,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.NameResolution+NameResolver,FSharp.Compiler.NameResolution+TypeNameResolutionInfo,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.NameResolution+PermitDirectReferenceToGeneratedType,FSharp.Compiler.NameResolution+ResolutionInfo,int,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+EntityRef,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.Syntax.Ident,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident]):Internal.Utilities.Library.ResultOrException`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.NameResolution+ResolutionInfo,FSharp.Compiler.TypedTree+EntityRef]]] (FullOpts)
-137 (-1.79 % of base) : 10050.dasm - FSharp.Compiler.CheckExpressions:TcLookupThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.Ident],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem],FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-133 (-1.24 % of base) : 11340.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks:CheckExprOp(FSharp.Compiler.PostTypeCheckSemanticChecks+cenv,FSharp.Compiler.PostTypeCheckSemanticChecks+env,FSharp.Compiler.TypedTree+TOp,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.PostTypeCheckSemanticChecks+PermitByRefExpr,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.PostTypeCheckSemanticChecks+Limit (FullOpts)
-131 (-0.56 % of base) : 13062.dasm - FSharp.Compiler.QuotationTranslator:ConvExprCore(FSharp.Compiler.QuotationTranslator+QuotationGenerationScope,FSharp.Compiler.QuotationTranslator+QuotationTranslationEnv,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.QuotationPickler+ExprData (FullOpts)
-128 (-1.74 % of base) : 7862.dasm - FSharp.Compiler.CheckExpressions:TcTypeOrMeasure(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TyparKind],FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+ImplicitlyBoundTyparsAllowed,FSharp.Compiler.CheckExpressions+CheckConstraints,FSharp.Compiler.NameResolution+ItemOccurence,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.Syntax.SynType):System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-126 (-0.76 % of base) : 8718.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
-125 (-2.22 % of base) : 25424.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],ubyte,byref):int:this (FullOpts)
-113 (-1.83 % of base) : 22690.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
-112 (-0.96 % of base) : 14958.dasm - SixLabors.ImageSharp.Color:CreateWernerPalette():SixLabors.ImageSharp.Color[] (FullOpts)
Top method regressions (percentages):
117 (7.08 % of base) : 21181.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:GetCompilationReferences(System.__Canon,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref):this (FullOpts)
12 (6.49 % of base) : 26647.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:NormalizeTaskTypesInArray(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,byref):ubyte (FullOpts)
50 (6.20 % of base) : 757.dasm - System.Reflection.Emit.RuntimeILGenerator:Emit(System.Reflection.Emit.OpCode,int):this (FullOpts)
35 (5.99 % of base) : 25594.dasm - Microsoft.CodeAnalysis.MarshalAsAttributeDecoder`4[System.__Canon,System.__Canon,System.__Canon,short]:DecodeMarshalAsComInterface(byref,int,Microsoft.CodeAnalysis.CommonMessageProvider) (FullOpts)
31 (5.79 % of base) : 661.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
20 (5.49 % of base) : 30576.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
3 (5.36 % of base) : 6818.dasm - FSharp.Compiler.Parser+_fsyacc_reductions@4485-901:Invoke(FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):FSharp.Compiler.Syntax.SynExpr:this (FullOpts)
65 (5.35 % of base) : 32242.dasm - Microsoft.Cci.MetadataWriter:PopulateGenericParameters(System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IGenericParameter]):this (FullOpts)
20 (5.13 % of base) : 30447.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.MethodToClassRewriter:VisitCall(Microsoft.CodeAnalysis.CSharp.BoundCall):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
34 (4.66 % of base) : 31622.dasm - Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder+<GetTopLevelTypeDefinitionsCore>d__77:MoveNext():ubyte:this (FullOpts)
27 (4.35 % of base) : 17342.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
3 (4.29 % of base) : 25102.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceComplexParameterSymbolBase:EarlyDecodeWellKnownAttributeType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax):this (FullOpts)
21 (4.05 % of base) : 26899.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:EnforceParameterNotNullWhenOnExit(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState):this (FullOpts)
7 (3.93 % of base) : 13038.dasm - FSharp.Compiler.CheckExpressions+TcExprUndelayed@6040-36:Invoke(FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv]:this (FullOpts)
330 (3.66 % of base) : 2407.dasm - <StartupCode$FSharp-Compiler-Service>.$FSharp.Compiler.Features:.cctor() (FullOpts)
46 (3.66 % of base) : 26448.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<Scan>g__enforceMemberNotNullWhenForPendingReturn|61_3(Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2+PendingBranch[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState,Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalFunctionState],Microsoft.CodeAnalysis.CSharp.BoundReturnStatement):this (FullOpts)
5 (3.50 % of base) : 30344.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedMethodBaseSymbol:get_ReturnTypeWithAnnotations():Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations:this (FullOpts)
3 (3.49 % of base) : 2917.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Read(System.Span`1[ubyte]):int:this (FullOpts)
2 (3.45 % of base) : 280.dasm - System.Reflection.TypeNameParser+NamespaceTypeName:ResolveType(byref,System.String):System.Type:this (FullOpts)
15 (3.44 % of base) : 16504.dasm - Microsoft.ML.Data.Conversion.Conversions:TryGetStandardConversion(Microsoft.ML.Data.DataViewType,Microsoft.ML.Data.DataViewType,byref,byref):ubyte:this (FullOpts)
Top method improvements (percentages):
-1502 (-32.31 % of base) : 4609.dasm - FSharp.Compiler.CompilerConfig+TcConfig:CloneToBuilder():FSharp.Compiler.CompilerConfig+TcConfigBuilder:this (FullOpts)
-1485 (-27.00 % of base) : 3150.dasm - FSharp.Compiler.CompilerConfig+TcConfig:.ctor(FSharp.Compiler.CompilerConfig+TcConfigBuilder,ubyte):this (FullOpts)
-8 (-16.00 % of base) : 16801.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3+StandardArrayDualsTable[System.__Canon,System.__Canon,System.__Canon]:ApplyAt(long,Microsoft.ML.Trainers.SdcaTrainerBase`3+Visitor[System.__Canon,System.__Canon,System.__Canon]):this (FullOpts)
-79 (-14.13 % of base) : 31488.dasm - Microsoft.CodeAnalysis.Compilation:SerializePeToStream(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CommonMessageProvider,System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],System.Func`1[System.IO.Stream],Microsoft.Cci.PdbWriter,System.String,Microsoft.CodeAnalysis.RebuildData,ubyte,ubyte,ubyte,ubyte,System.Nullable`1[System.Security.Cryptography.RSAParameters],System.Threading.CancellationToken):ubyte (FullOpts)
-17 (-14.05 % of base) : 16617.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]):this (FullOpts)
-50 (-12.59 % of base) : 17615.dasm - System.Enum:TryParseByValueOrName[int,uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-17 (-12.50 % of base) : 2463.dasm - FSharp.Compiler.Features+LanguageVersion:.ctor(System.String):this (FullOpts)
-30 (-12.24 % of base) : 16610.dasm - Microsoft.ML.Transforms.ColumnSelectingTransformer+Mapper:.ctor(Microsoft.ML.Transforms.ColumnSelectingTransformer,Microsoft.ML.DataViewSchema):this (FullOpts)
-72 (-12.20 % of base) : 11909.dasm - (dynamicClass):IL_STUB_CallTailCallTarget(long,byref,long) (FullOpts)
-17 (-11.89 % of base) : 17401.dasm - Microsoft.ML.Internal.Utilities.HashArray`1[float]:.ctor():this (FullOpts)
-24 (-11.88 % of base) : 16616.dasm - Microsoft.ML.Transforms.ColumnSelectingTransformer+SelectColumnsDataTransform:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.ColumnSelectingTransformer,Microsoft.ML.Transforms.ColumnSelectingTransformer+Mapper,Microsoft.ML.IDataView):this (FullOpts)
-232 (-11.66 % of base) : 1671.dasm - System.Xml.XmlDocument:.ctor(System.Xml.XmlImplementation):this (FullOpts)
-25 (-11.06 % of base) : 26598.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:InitializeDependencies():this (FullOpts)
-17 (-10.37 % of base) : 16475.dasm - Microsoft.ML.Transforms.Text.NgramExtractingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractingEstimator+ColumnOptions[]):this (FullOpts)
-8 (-10.13 % of base) : 2293.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-204 (-10.08 % of base) : 11819.dasm - FSharp.Compiler.Parser+_fsyacc_reductions@1858-366:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynAccess],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Syntax.SynMemberKind,FSharp.Compiler.Syntax.SynMemberFlags],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttributeList],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynMemberDefn]:this (FullOpts)
-17 (-9.34 % of base) : 17636.dasm - Microsoft.ML.Transforms.Text.WordEmbeddingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,int,Microsoft.ML.Transforms.Text.WordEmbeddingEstimator+ColumnOptions[]):this (FullOpts)
-39 (-9.33 % of base) : 8898.dasm - FSharp.Compiler.CheckExpressions+postArgumentTypeCheckingCalledMethGroup@9656:Invoke(System.Tuple`4[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo],ubyte]):FSharp.Compiler.MethodCalls+CalledMeth`1[FSharp.Compiler.TypedTree+Expr]:this (FullOpts)
-17 (-9.29 % of base) : 15975.dasm - Microsoft.ML.Transforms.HashingEstimator:.ctor(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.HashingEstimator+ColumnOptions[]):this (FullOpts)
-42 (-9.27 % of base) : 10167.dasm - FSharp.Compiler.CheckDeclarations+TcRecdUnionAndEnumDeclarations:TcAnonFieldDecl(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.TypedTree+ParentRef,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,System.String,FSharp.Compiler.Syntax.SynField):FSharp.Compiler.TypedTree+RecdField (FullOpts)
smoke_tests.nativeaot.windows.x64.checked.mch
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 5092364 (overridden on cmd)
Total bytes of diff: 5092090 (overridden on cmd)
Total bytes of delta: -274 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
45 : 4797.dasm (6.08 % of base)
45 : 1327.dasm (6.11 % of base)
45 : 1322.dasm (6.08 % of base)
45 : 4802.dasm (6.11 % of base)
40 : 16555.dasm (5.39 % of base)
40 : 19202.dasm (5.39 % of base)
40 : 16560.dasm (5.41 % of base)
40 : 21792.dasm (5.39 % of base)
40 : 19207.dasm (5.41 % of base)
40 : 21818.dasm (5.41 % of base)
31 : 1325.dasm (5.62 % of base)
31 : 16558.dasm (5.60 % of base)
31 : 4800.dasm (5.62 % of base)
31 : 21806.dasm (5.60 % of base)
31 : 19205.dasm (5.60 % of base)
17 : 10603.dasm (0.42 % of base)
17 : 4661.dasm (0.42 % of base)
10 : 12791.dasm (0.58 % of base)
10 : 7191.dasm (0.58 % of base)
8 : 23379.dasm (2.34 % of base)
Top file improvements (bytes):
-61 : 4400.dasm (-6.09 % of base)
-46 : 7748.dasm (-3.57 % of base)
-24 : 14106.dasm (-1.46 % of base)
-24 : 15162.dasm (-1.46 % of base)
-24 : 8686.dasm (-1.46 % of base)
-20 : 7041.dasm (-2.44 % of base)
-20 : 10053.dasm (-9.30 % of base)
-20 : 2304.dasm (-2.44 % of base)
-19 : 11946.dasm (-0.35 % of base)
-19 : 14909.dasm (-0.35 % of base)
-19 : 6276.dasm (-0.34 % of base)
-17 : 23421.dasm (-10.62 % of base)
-16 : 19999.dasm (-1.97 % of base)
-15 : 21961.dasm (-2.33 % of base)
-15 : 4942.dasm (-2.30 % of base)
-15 : 7403.dasm (-2.11 % of base)
-15 : 1505.dasm (-2.19 % of base)
-15 : 1510.dasm (-2.33 % of base)
-15 : 16519.dasm (-2.19 % of base)
-15 : 4937.dasm (-2.17 % of base)
74 total files with Code Size differences (45 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
45 (6.11 % of base) : 1327.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
45 (6.11 % of base) : 4802.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
45 (6.08 % of base) : 4797.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
45 (6.08 % of base) : 1322.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.41 % of base) : 16560.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.41 % of base) : 19207.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.41 % of base) : 21818.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.39 % of base) : 16555.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.39 % of base) : 19202.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.39 % of base) : 21792.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.62 % of base) : 1325.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.60 % of base) : 16558.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.62 % of base) : 4800.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.60 % of base) : 21806.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.60 % of base) : 19205.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
17 (0.42 % of base) : 10603.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
17 (0.42 % of base) : 4661.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
10 (0.58 % of base) : 12791.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
10 (0.58 % of base) : 7191.dasm - Internal.Runtime.TypeLoader.TypeBuilder:FinishTypeAndMethodBuilding():this (FullOpts)
8 (2.34 % of base) : 23379.dasm - PInvokeTests.Program:InlineArrayTest(byref,byref):ubyte (FullOpts)
Top method improvements (bytes):
-61 (-6.09 % of base) : 4400.dasm - System.Text.Encoding:GetCharsWithFallback(ulong,int,ulong,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
-46 (-3.57 % of base) : 7748.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon],System.ValueTuple`2[System.__Canon,System.__Canon],System.Nullable`1[int],System.__Canon,ubyte,ubyte,byref):ubyte:this (FullOpts)
-24 (-1.46 % of base) : 14106.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
-24 (-1.46 % of base) : 15162.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
-24 (-1.46 % of base) : 8686.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
-20 (-9.30 % of base) : 10053.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-20 (-2.44 % of base) : 7041.dasm - System.Globalization.CultureData:InitIcuCultureDataCore():ubyte:this (FullOpts)
-20 (-2.44 % of base) : 2304.dasm - System.Globalization.CultureData:InitIcuCultureDataCore():ubyte:this (FullOpts)
-19 (-0.35 % of base) : 11946.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-19 (-0.35 % of base) : 14909.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-19 (-0.34 % of base) : 6276.dasm - System.DateTimeFormat:FormatCustomized[ushort](System.DateTime,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,System.TimeSpan,byref) (FullOpts)
-17 (-10.62 % of base) : 23421.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-16 (-1.97 % of base) : 19999.dasm - System.Globalization.CultureData:InitIcuCultureDataCore():ubyte:this (FullOpts)
-15 (-2.33 % of base) : 21961.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-15 (-2.30 % of base) : 4942.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-15 (-2.33 % of base) : 1510.dasm - System.Collections.Concurrent.ConcurrentUnifier`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-15 (-2.19 % of base) : 1505.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-15 (-2.19 % of base) : 16519.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-15 (-2.17 % of base) : 4937.dasm - System.Collections.Concurrent.ConcurrentUnifierW`2+Container[System.__Canon,System.__Canon]:VerifyUnifierConsistency():this (FullOpts)
-15 (-2.11 % of base) : 7403.dasm - System.Reflection.DynamicInvokeInfo:InvokeWithManyArguments(long,byref,byref,System.Object[],System.Reflection.BinderBundle,ubyte):byref:this (FullOpts)
Top method regressions (percentages):
45 (6.11 % of base) : 1327.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
45 (6.11 % of base) : 4802.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
45 (6.08 % of base) : 4797.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
45 (6.08 % of base) : 1322.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.62 % of base) : 1325.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.62 % of base) : 4800.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.60 % of base) : 16558.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.60 % of base) : 21806.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
31 (5.60 % of base) : 19205.dasm - System.Number:FormatNumber[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.41 % of base) : 16560.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.41 % of base) : 19207.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.41 % of base) : 21818.dasm - System.Number:FormatCurrency[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.39 % of base) : 16555.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.39 % of base) : 19202.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
40 (5.39 % of base) : 21792.dasm - System.Number:FormatPercent[ushort](byref,byref,int,System.Globalization.NumberFormatInfo) (FullOpts)
3 (5.17 % of base) : 12648.dasm - System.Linq.Expressions.Interpreter.FieldByRefUpdater:UndefineTemps(System.Linq.Expressions.Interpreter.InstructionList,System.Linq.Expressions.Interpreter.LocalVariables):this (FullOpts)
3 (5.17 % of base) : 12646.dasm - System.Linq.Expressions.Interpreter.PropertyByRefUpdater:UndefineTemps(System.Linq.Expressions.Interpreter.InstructionList,System.Linq.Expressions.Interpreter.LocalVariables):this (FullOpts)
4 (4.60 % of base) : 7773.dasm - System.Reflection.TypeNameParser+NestedNamespaceTypeName:ResolveType(byref,System.String):System.Type:this (FullOpts)
4 (4.60 % of base) : 13616.dasm - System.Reflection.TypeNameParser+NestedNamespaceTypeName:ResolveType(byref,System.String):System.Type:this (FullOpts)
3 (3.61 % of base) : 9867.dasm - System.IO.Strategies.BufferedFileStreamStrategy:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
Top method improvements (percentages):
-8 (-11.27 % of base) : 29972.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-8 (-11.27 % of base) : 8602.dasm - System.Threading.QueueUserWorkItemCallbackBase:Execute():this (FullOpts)
-17 (-10.62 % of base) : 23421.dasm - Internal.CompilerGenerated.<Module>:NativeToManaged__InlineArrayStruct(byref,byref) (FullOpts)
-20 (-9.30 % of base) : 10053.dasm - System.Collections.Generic.Stack`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-10 (-8.40 % of base) : 13046.dasm - Internal.Reflection.Execution.ConstraintValidator+InstantiatedTypeInfo:GetGenericArguments():System.Type[]:this (FullOpts)
-10 (-8.40 % of base) : 13026.dasm - Internal.Reflection.Execution.ConstraintValidator+InstantiatedTypeInfo:GetInterfaces():System.Type[]:this (FullOpts)
-10 (-7.94 % of base) : 7489.dasm - Internal.Reflection.Execution.ConstraintValidator+InstantiatedTypeInfo:GetGenericArguments():System.Type[]:this (FullOpts)
-10 (-7.94 % of base) : 7473.dasm - Internal.Reflection.Execution.ConstraintValidator+InstantiatedTypeInfo:GetInterfaces():System.Type[]:this (FullOpts)
-8 (-7.62 % of base) : 20220.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-7.62 % of base) : 22881.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-7.62 % of base) : 6573.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-7.62 % of base) : 2469.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-7.62 % of base) : 17573.dasm - System.Collections.Generic.List`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-8 (-7.62 % of base) : 10667.dasm - System.Collections.Generic.LowLevelListWithIList`1+Enumerator[System.__Canon]:MoveNext():ubyte:this (FullOpts)
-14 (-6.83 % of base) : 18397.dasm - System.Comparison`1[Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair]:InvokeMulticastThunk(Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair,Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair):int:this (FullOpts)
-14 (-6.83 % of base) : 21121.dasm - System.Comparison`1[Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair]:InvokeMulticastThunk(Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair,Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair):int:this (FullOpts)
-14 (-6.83 % of base) : 15889.dasm - System.Comparison`1[Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair]:InvokeMulticastThunk(Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair,Internal.Reflection.Execution.ExecutionEnvironmentImplementation+FunctionPointerOffsetPair):int:this (FullOpts)
-61 (-6.09 % of base) : 4400.dasm - System.Text.Encoding:GetCharsWithFallback(ulong,int,ulong,int,int,int,System.Text.DecoderNLS):int:this (FullOpts)
-14 (-6.09 % of base) : 3451.dasm - System.Buffers.SpanFunc`5[ushort,System.__Canon,ushort,int,int]:InvokeMulticastThunk(System.Span`1[ushort],System.__Canon,ushort,int):int:this (FullOpts)
-10 (-5.49 % of base) : 439.dasm - System.Buffers.SpanAction`2[ushort,long]:InvokeMulticastThunk(System.Span`1[ushort],long):this (FullOpts)