MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [EgorBo] JIT: Pass field's owner to getFieldType #216

Open MihuBot opened 5 months ago

MihuBot commented 5 months ago

Build completed in 1 hour 19 minutes. https://github.com/dotnet/runtime/pull/96794

CoreLib diffs

Found 2 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6780796
Total bytes of diff: 6780803
Total bytes of delta: 7 (0.00 % of base)
Total relative delta: 0.09
    diff is a regression.
    relative diff is a regression.

Top file regressions (bytes):
           7 : System.Private.CoreLib.dasm (0.00 % of base)

1 total files with Code Size differences (0 improved, 1 regressed), 0 unchanged.

Top method regressions (bytes):
          30 (3.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          28 (9.21 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          13 (1.21 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (bytes):
         -32 (-2.87 % of base) : System.Private.CoreLib.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts)
         -32 (-2.69 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts)

Top method regressions (percentages):
          28 (9.21 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          30 (3.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts)
          13 (1.21 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts)

Top method improvements (percentages):
         -32 (-2.87 % of base) : System.Private.CoreLib.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts)
         -32 (-2.69 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts)

5 total methods with Code Size differences (2 improved, 3 regressed), 55851 unchanged.

--------------------------------------------------------------------------------

Frameworks diffs

Diffs ``` Found 342 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 38070469 Total bytes of diff: 38071341 Total bytes of delta: 872 (0.00 % of base) Total relative delta: 2.00 diff is a regression. relative diff is a regression. Top file regressions (bytes): 676 : System.Collections.dasm (0.12 % of base) 392 : System.Text.RegularExpressions.dasm (0.05 % of base) 263 : System.Data.Common.dasm (0.02 % of base) 122 : System.Threading.RateLimiting.dasm (0.07 % of base) 89 : System.Private.Xml.dasm (0.00 % of base) 73 : System.Net.Security.dasm (0.03 % of base) 40 : System.Diagnostics.Process.dasm (0.04 % of base) 12 : Microsoft.Extensions.DependencyModel.dasm (0.01 % of base) 9 : System.Data.Odbc.dasm (0.00 % of base) 7 : System.Private.CoreLib.dasm (0.00 % of base) 6 : System.Configuration.ConfigurationManager.dasm (0.00 % of base) 2 : System.Diagnostics.TraceSource.dasm (0.00 % of base) Top file improvements (bytes): -358 : System.Composition.Convention.dasm (-0.30 % of base) -280 : System.ComponentModel.Composition.Registration.dasm (-0.28 % of base) -74 : System.ComponentModel.Composition.dasm (-0.02 % of base) -61 : Microsoft.Extensions.Options.DataAnnotations.dasm (-1.36 % of base) -39 : System.Threading.Tasks.Dataflow.dasm (-0.00 % of base) -7 : System.Net.HttpListener.dasm (-0.01 % of base) 18 total files with Code Size differences (6 improved, 12 regressed), 238 unchanged. Top method regressions (bytes): 78 (3.79 % of base) : System.Private.Xml.dasm - System.Xml.Schema.ParticleContentValidator:BuildTransitionTable(System.Xml.Schema.BitSet,System.Xml.Schema.BitSet[],int):int[][]:this (FullOpts) 74 (4.12 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:g__ReduceSingleLetterAndNestedAlternations|41_0():this (FullOpts) 74 (5.18 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts) 73 (2.74 % of base) : System.Net.Security.dasm - System.Net.Security.SslStreamCertificateContext+d__31:MoveNext():this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[double]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[double]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[int]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[int]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[long]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[long]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[short]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[short]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.Nullable`1[int]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Nullable`1[int]]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.Numerics.Vector`1[float]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Numerics.Vector`1[float]]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[ubyte]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[ubyte]):ubyte:this (FullOpts) 48 (9.86 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[int]):ubyte:this (FullOpts) 48 (9.82 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[long]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[long]):ubyte:this (FullOpts) 48 (9.72 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[short]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[short]):ubyte:this (FullOpts) 48 (9.82 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[System.Nullable`1[int]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Nullable`1[int]]):ubyte:this (FullOpts) 48 (9.72 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[ubyte]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[ubyte]):ubyte:this (FullOpts) 47 (9.31 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[double]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[double]):ubyte:this (FullOpts) 39 (7.10 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[System.Numerics.Vector`1[float]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Numerics.Vector`1[float]]):ubyte:this (FullOpts) 34 (2.72 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.FixedWindowRateLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 34 (2.74 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.SlidingWindowRateLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 30 (3.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts) 30 (1.41 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts) (2 methods) 28 (9.21 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts) 27 (2.19 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.ConcurrencyLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 27 (2.13 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.TokenBucketRateLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 22 (3.30 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.AsyncStreamReader:MoveLinesFromStringBuilderToMessageQueue():this (FullOpts) 18 (0.98 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.AsyncStreamReader+d__16:MoveNext():this (FullOpts) 17 (8.85 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this (FullOpts) 17 (1.57 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts) 13 (0.73 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (FullOpts) 13 (0.81 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte] (FullOpts) 13 (1.21 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts) 12 (0.62 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.Resolution.AppBaseCompilationAssemblyResolver:TryResolveAssemblyPaths(Microsoft.Extensions.DependencyModel.CompilationLibrary,System.Collections.Generic.List`1[System.String]):ubyte:this (FullOpts) 12 (0.90 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts) 11 (4.49 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:g__RemoveRedundantEmptiesAndNothings|41_2(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts) 11 (1.23 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XsltOld.TemplateAction:AnalyzePriority(System.Xml.Xsl.XsltOld.Compiler):this (FullOpts) 10 (0.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:FinalOptimize():System.Text.RegularExpressions.RegexNode:this (FullOpts) (2 methods) 9 (3.67 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcParameterCollection:Replace(int,System.Object):this (FullOpts) 8 (1.48 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceExpressionConditional():System.Text.RegularExpressions.RegexNode:this (FullOpts) 6 (1.31 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.SectionRecord:AddLocationInputImpl(System.Configuration.SectionInput,ubyte):this (FullOpts) 6 (0.45 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:g__ExtractCommonPrefixOneNotoneSet|41_1(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:Clone():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.52 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[System.__Canon]():System.Data.SortExpressionBuilder`1[System.__Canon]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:Clone():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.52 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[System.__Canon]():System.Data.SortExpressionBuilder`1[System.__Canon]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:Clone():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.52 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[System.__Canon]():System.Data.SortExpressionBuilder`1[System.__Canon]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:Clone():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.52 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[System.__Canon]():System.Data.SortExpressionBuilder`1[System.__Canon]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:Clone():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.52 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[System.__Canon]():System.Data.SortExpressionBuilder`1[System.__Canon]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:Clone():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) Top method improvements (bytes): -159 (-18.03 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.ExportBuilder:BuildAttributes(System.Type,byref):this (FullOpts) -116 (-15.16 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ExportConventionBuilder:BuildAttributes(System.Type,byref):this (FullOpts) -81 (-10.24 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ImportConventionBuilder:BuildAttributes(System.Type,byref):this (FullOpts) -75 (-10.62 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.PartBuilder:ConfigureConstructorAttributes(System.Reflection.ConstructorInfo,byref,System.Action`2[System.Reflection.ParameterInfo,System.ComponentModel.Composition.Registration.ImportBuilder]) (FullOpts) -74 (-6.18 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:DiffChanges(System.String[],System.String[],byref,byref):this (FullOpts) -72 (-9.96 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:ConfigureConstructorAttributes(System.Reflection.ConstructorInfo,byref,System.Action`2[System.Reflection.ParameterInfo,System.Composition.Convention.ImportConventionBuilder]) (FullOpts) -64 (-4.61 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts) -61 (-1.69 % of base) : Microsoft.Extensions.Options.DataAnnotations.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts) -50 (-4.24 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:BuildOnImportsSatisfiedNotification(System.Type,byref):this (FullOpts) -46 (-2.72 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.PartBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts) -39 (-2.10 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts) -39 (-12.38 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.Common:AddException(byref,System.Exception,ubyte) (FullOpts) -32 (-2.87 % of base) : System.Private.CoreLib.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts) -32 (-2.69 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts) -5 (-1.38 % of base) : System.Data.Common.dasm - System.Data.DataViewListener:UnregisterListChangedEvent():this (FullOpts) -4 (-2.25 % of base) : System.Data.Common.dasm - System.Data.Index:ListChangedRemove(System.Data.DataViewListener):this (FullOpts) -4 (-1.48 % of base) : System.Net.HttpListener.dasm - System.Net.HttpListener:GetContextFromQueue():System.Net.HttpListenerContext:this (FullOpts) -4 (-0.13 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:AssignNameSlots():this (FullOpts) (2 methods) -3 (-0.45 % of base) : System.Net.HttpListener.dasm - System.Net.HttpListener:RegisterContext(System.Net.HttpListenerContext):this (FullOpts) Top method regressions (percentages): 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[double]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[double]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[int]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[int]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[long]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[long]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[short]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[short]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.Nullable`1[int]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Nullable`1[int]]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[System.Numerics.Vector`1[float]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Numerics.Vector`1[float]]):ubyte:this (FullOpts) 50 (14.01 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[ubyte]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[ubyte]):ubyte:this (FullOpts) 48 (9.86 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[int]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[int]):ubyte:this (FullOpts) 48 (9.82 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[long]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[long]):ubyte:this (FullOpts) 48 (9.82 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[System.Nullable`1[int]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Nullable`1[int]]):ubyte:this (FullOpts) 48 (9.72 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[short]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[short]):ubyte:this (FullOpts) 48 (9.72 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[ubyte]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[ubyte]):ubyte:this (FullOpts) 47 (9.31 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[double]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[double]):ubyte:this (FullOpts) 28 (9.21 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts) 17 (8.85 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReplaceChild(int,System.Text.RegularExpressions.RegexNode):this (FullOpts) 39 (7.10 % of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1+TreeSubSet[System.Numerics.Vector`1[float]]:BreadthFirstTreeWalk(System.Collections.Generic.TreeWalkPredicate`1[System.Numerics.Vector`1[float]]):ubyte:this (FullOpts) 74 (5.18 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentStrings():this (FullOpts) 11 (4.49 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:g__RemoveRedundantEmptiesAndNothings|41_2(System.Text.RegularExpressions.RegexNode):System.Text.RegularExpressions.RegexNode (FullOpts) 74 (4.12 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:g__ReduceSingleLetterAndNestedAlternations|41_0():this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:this (FullOpts) 11 (3.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]:Alternate(System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts) 78 (3.79 % of base) : System.Private.Xml.dasm - System.Xml.Schema.ParticleContentValidator:BuildTransitionTable(System.Xml.Schema.BitSet,System.Xml.Schema.BitSet[],int):int[][]:this (FullOpts) 9 (3.67 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcParameterCollection:Replace(int,System.Object):this (FullOpts) 30 (3.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts) 22 (3.30 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.AsyncStreamReader:MoveLinesFromStringBuilderToMessageQueue():this (FullOpts) 73 (2.74 % of base) : System.Net.Security.dasm - System.Net.Security.SslStreamCertificateContext+d__31:MoveNext():this (FullOpts) 34 (2.74 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.SlidingWindowRateLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 34 (2.72 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.FixedWindowRateLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 27 (2.19 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.ConcurrencyLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 27 (2.13 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.TokenBucketRateLimiter:AcquireAsyncCore(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Threading.RateLimiting.RateLimitLease]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:this (FullOpts) 17 (1.58 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:this (FullOpts) 17 (1.57 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:StripEffects(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:this (FullOpts) 8 (1.48 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceExpressionConditional():System.Text.RegularExpressions.RegexNode:this (FullOpts) 30 (1.41 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:EliminateEndingBacktracking():this (FullOpts) (2 methods) 6 (1.31 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.SectionRecord:AddLocationInputImpl(System.Configuration.SectionInput,ubyte):this (FullOpts) 11 (1.23 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XsltOld.TemplateAction:AnalyzePriority(System.Xml.Xsl.XsltOld.Compiler):this (FullOpts) 13 (1.21 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueue:TimerThread() (FullOpts) 18 (0.98 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.AsyncStreamReader+d__16:MoveNext():this (FullOpts) 12 (0.90 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceAtomic():System.Text.RegularExpressions.RegexNode:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:Clone():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:Clone():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:Clone():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:Clone():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:Clone():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:Clone():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.85 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[ubyte]:Clone():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 13 (0.81 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[double],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[double] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[int],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[int] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[long],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[long] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ubyte],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ubyte] (FullOpts) 13 (0.80 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[short],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[short] (FullOpts) 13 (0.73 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexNode:ReduceConcatenationWithAdjacentLoops():this (FullOpts) 1 (0.69 % of base) : System.Data.Common.dasm - System.Data.Common.DataColumnMappingCollection:Replace(int,System.Data.Common.DataColumnMapping):this (FullOpts) 1 (0.69 % of base) : System.Data.Common.dasm - System.Data.Common.DataTableMappingCollection:Replace(int,System.Data.Common.DataTableMapping):this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[double]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[int]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[long]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[short]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[System.Numerics.Vector`1[float]]():System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:CloneCast[ubyte]():System.Data.SortExpressionBuilder`1[ubyte]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:CloneCast[double]():System.Data.SortExpressionBuilder`1[double]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:CloneCast[int]():System.Data.SortExpressionBuilder`1[int]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:CloneCast[long]():System.Data.SortExpressionBuilder`1[long]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:CloneCast[short]():System.Data.SortExpressionBuilder`1[short]:this (FullOpts) 4 (0.64 % of base) : System.Data.Common.dasm - System.Data.SortExpressionBuilder`1[System.Numerics.Vector`1[float]]:CloneCast[System.Nullable`1[int]]():System.Data.SortExpressionBuilder`1[System.Nullable`1[int]]:this (FullOpts) Top method improvements (percentages): -159 (-18.03 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.ExportBuilder:BuildAttributes(System.Type,byref):this (FullOpts) -116 (-15.16 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ExportConventionBuilder:BuildAttributes(System.Type,byref):this (FullOpts) -39 (-12.38 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.Common:AddException(byref,System.Exception,ubyte) (FullOpts) -75 (-10.62 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.PartBuilder:ConfigureConstructorAttributes(System.Reflection.ConstructorInfo,byref,System.Action`2[System.Reflection.ParameterInfo,System.ComponentModel.Composition.Registration.ImportBuilder]) (FullOpts) -81 (-10.24 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ImportConventionBuilder:BuildAttributes(System.Type,byref):this (FullOpts) -72 (-9.96 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:ConfigureConstructorAttributes(System.Reflection.ConstructorInfo,byref,System.Action`2[System.Reflection.ParameterInfo,System.Composition.Convention.ImportConventionBuilder]) (FullOpts) -74 (-6.18 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.DirectoryCatalog:DiffChanges(System.String[],System.String[],byref,byref):this (FullOpts) -64 (-4.61 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeConverter:g__Compute|5_0(System.String):System.Text.RegularExpressions.Symbolic.BDD:this (FullOpts) -50 (-4.24 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:BuildOnImportsSatisfiedNotification(System.Type,byref):this (FullOpts) -32 (-2.87 % of base) : System.Private.CoreLib.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts) -46 (-2.72 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.PartBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts) -32 (-2.69 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts) -4 (-2.25 % of base) : System.Data.Common.dasm - System.Data.Index:ListChangedRemove(System.Data.DataViewListener):this (FullOpts) -39 (-2.10 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:BuildPropertyAttributes(System.Type,byref):this (FullOpts) -61 (-1.69 % of base) : Microsoft.Extensions.Options.DataAnnotations.dasm - Microsoft.Extensions.Options.DataAnnotationValidateOptions`1[System.__Canon]:TryValidateOptions(System.Object,System.String,System.Collections.Generic.List`1[System.ComponentModel.DataAnnotations.ValidationResult],byref,byref):ubyte (FullOpts) -4 (-1.48 % of base) : System.Net.HttpListener.dasm - System.Net.HttpListener:GetContextFromQueue():System.Net.HttpListenerContext:this (FullOpts) -5 (-1.38 % of base) : System.Data.Common.dasm - System.Data.DataViewListener:UnregisterListChangedEvent():this (FullOpts) -3 (-0.45 % of base) : System.Net.HttpListener.dasm - System.Net.HttpListener:RegisterContext(System.Net.HttpListenerContext):this (FullOpts) -4 (-0.13 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:AssignNameSlots():this (FullOpts) (2 methods) 149 total methods with Code Size differences (19 improved, 130 regressed), 236593 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 5 months ago

Top method regressions

30 (3.65 % of base) - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) ```diff ; Assembly listing for method System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ; -; V00 arg0 [V00,T07] ( 22, 23 ) ref -> rbx class-hnd single-def +; V00 arg0 [V00,T07] ( 21, 22.50) ref -> rbx class-hnd single-def ; V01 loc0 [V01,T02] ( 13, 47.50) ref -> r15 class-hnd exact single-def -; V02 loc1 [V02 ] ( 19, 53.50) struct (16) [rbp-0x28] do-not-enreg[XS] must-init addr-exposed ld-addr-op +; V02 loc1 [V02 ] ( 19, 53.50) struct (16) [rbp-0x30] do-not-enreg[XS] must-init addr-exposed ld-addr-op ; V03 loc2 [V03,T00] ( 36,151.08) int -> rax -; V04 loc3 [V04,T20] ( 4, 2 ) int -> rcx +; V04 loc3 [V04,T22] ( 4, 2 ) int -> rcx ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref -; V06 loc5 [V06,T06] ( 9, 25.50) int -> r14 +; V06 loc5 [V06,T06] ( 10, 26 ) int -> r13 ;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V08 tmp1 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V09 tmp2 [V09,T04] ( 5, 28 ) ref -> rdi class-hnd exact "impAppendStmt" -; V10 tmp3 [V10,T24] ( 2, 2 ) long -> rax "Inlining Arg" -; V11 tmp4 [V11,T23] ( 2, 2 ) ref -> rdx class-hnd exact single-def "Inlining Arg" -; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> rsi class-hnd "Inlining Arg" +; V10 tmp3 [V10,T26] ( 2, 2 ) long -> rax "Inlining Arg" +; V11 tmp4 [V11,T25] ( 2, 2 ) ref -> rax class-hnd exact single-def "Inlining Arg" +; V12 tmp5 [V12,T05] ( 5, 28 ) ref -> rsi class-hnd exact "Inlining Arg" ; V13 tmp6 [V13,T14] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" ; V14 tmp7 [V14,T15] ( 2, 8 ) byref -> rdi "impAppendStmt" -; V15 tmp8 [V15,T25] ( 3, 1.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" -; V16 tmp9 [V16,T21] ( 4, 2 ) int -> rsi "Inline stloc first use temp" -; V17 tmp10 [V17 ] ( 10, 27 ) byref -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP -; V18 tmp11 [V18 ] ( 10, 27 ) int -> [rbp-0x20] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP +; V15 tmp8 [V15,T27] ( 3, 1.50) ref -> rdi class-hnd exact single-def "Inline stloc first use temp" +; V16 tmp9 [V16,T23] ( 4, 2 ) int -> rsi "Inline stloc first use temp" +; V17 tmp10 [V17 ] ( 10, 27 ) byref -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V02._reference (fldOffset=0x0)" P-DEP +; V18 tmp11 [V18 ] ( 10, 27 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V02._length (fldOffset=0x8)" P-DEP ;* V19 tmp12 [V19 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp13 [V20 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP -; V21 tmp14 [V21,T28] ( 2, 1 ) byref -> rax single-def "field V08._reference (fldOffset=0x0)" P-INDEP -; V22 tmp15 [V22,T29] ( 2, 1 ) int -> rcx "field V08._length (fldOffset=0x8)" P-INDEP +; V21 tmp14 [V21,T31] ( 2, 1 ) byref -> rax single-def "field V08._reference (fldOffset=0x0)" P-INDEP +; V22 tmp15 [V22,T32] ( 2, 1 ) int -> rcx "field V08._length (fldOffset=0x8)" P-INDEP ; V23 tmp16 [V23,T19] ( 3, 3 ) ref -> rax single-def "arr expr" -; V24 tmp17 [V24,T08] ( 3, 24 ) ref -> rdi "arr expr" -; V25 tmp18 [V25,T09] ( 2, 16 ) ref -> rsi "arr expr" -; V26 GsCookie [V26 ] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed "GSSecurityCookie" -; V27 cse0 [V27,T13] ( 3, 10 ) int -> rcx "CSE - moderate" -; V28 cse1 [V28,T30] ( 2, 1 ) int -> rax "CSE - moderate" -; V29 cse2 [V29,T11] ( 3, 12 ) int -> rdx "CSE - moderate" -; V30 cse3 [V30,T10] ( 3, 12 ) ref -> rsi "CSE - moderate" -; V31 cse4 [V31,T26] ( 3, 1.50) long -> rdx "CSE - moderate" -; V32 cse5 [V32,T03] ( 15, 30.54) int -> rdi "CSE - aggressive" -; V33 cse6 [V33,T16] ( 2, 8 ) int -> rax "CSE - moderate" -; V34 cse7 [V34,T12] ( 3, 11.88) int -> rcx "CSE - moderate" -; V35 cse8 [V35,T18] ( 7, 3.50) int -> rsi "CSE - moderate" -; V36 cse9 [V36,T17] ( 3, 6 ) int -> rdx "CSE - moderate" -; V37 cse10 [V37,T22] ( 4, 2 ) int -> rcx "CSE - moderate" -; V38 cse11 [V38,T27] ( 3, 1.50) int -> rax "CSE - moderate" -; V39 cse12 [V39,T01] ( 3, 48 ) long -> rdx "CSE - aggressive" +; V24 tmp17 [V24,T20] ( 3, 3 ) ref -> rdi single-def "arr expr" +; V25 tmp18 [V25,T08] ( 3, 24 ) ref -> rdi "arr expr" +; V26 tmp19 [V26,T09] ( 2, 16 ) ref -> rsi "arr expr" +; V27 tmp20 [V27,T21] ( 3, 3 ) ref -> rdi single-def "arr expr" +; V28 GsCookie [V28 ] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "GSSecurityCookie" +; V29 cse0 [V29,T13] ( 3, 10 ) int -> rcx "CSE - moderate" +; V30 cse1 [V30,T33] ( 2, 1 ) int -> rax "CSE - moderate" +; V31 cse2 [V31,T11] ( 3, 12 ) int -> rdx "CSE - moderate" +; V32 cse3 [V32,T10] ( 3, 12 ) ref -> rsi "CSE - moderate" +; V33 cse4 [V33,T28] ( 3, 1.50) long -> rdx "CSE - moderate" +; V34 cse5 [V34,T29] ( 3, 1.50) int -> r14 "CSE - moderate" +; V35 cse6 [V35,T03] ( 15, 30.54) int -> rdi "CSE - aggressive" +; V36 cse7 [V36,T16] ( 2, 8 ) int -> rax "CSE - moderate" +; V37 cse8 [V37,T12] ( 3, 11.88) int -> rcx "CSE - moderate" +; V38 cse9 [V38,T18] ( 7, 3.50) int -> rsi "CSE - moderate" +; V39 cse10 [V39,T17] ( 3, 6 ) int -> rdx "CSE - moderate" +; V40 cse11 [V40,T24] ( 4, 2 ) int -> rcx "CSE - moderate" +; V41 cse12 [V41,T30] ( 3, 1.50) int -> rax "CSE - moderate" +; V42 cse13 [V42,T01] ( 3, 48 ) long -> rdx "CSE - aggressive" ; -; Lcl frame size = 24 +; Lcl frame size = 32 G_M28069_IG01: push rbp push r15 push r14 + push r13 push rbx - sub rsp, 24 - lea rbp, [rsp+0x30] + sub rsp, 32 + lea rbp, [rsp+0x40] xor eax, eax - mov qword ptr [rbp-0x28], rax - mov qword ptr [rbp-0x30], 0xD1FFAB1E + mov qword ptr [rbp-0x30], rax + mov qword ptr [rbp-0x38], 0xD1FFAB1E mov rbx, rdi - ;; size=32 bbWeight=1 PerfScore 7.25 + ;; size=34 bbWeight=1 PerfScore 8.25 G_M28069_IG02: cmp dword ptr [rbx+0x10], 0 je G_M28069_IG26 ;; size=10 bbWeight=1 PerfScore 4.00 G_M28069_IG03: mov rax, gword ptr [rbx+0x08] cmp dword ptr [rax+0x08], 0 jbe G_M28069_IG30 mov r15, gword ptr [rax+0x10] mov edi, dword ptr [r15+0x08] cmp edi, 100 jg G_M28069_IG26 lea ecx, [rdi+0x02] mov eax, ecx mov esi, 2 mul rdx:rax, rsi jb G_M28069_IG29 test rax, rax je SHORT G_M28069_IG05 mov rdx, rax add rdx, 15 and rdx, -16 neg rdx add rdx, rsp jb SHORT G_M28069_IG04 xor edx, edx ;; size=76 bbWeight=0.50 PerfScore 10.00 G_M28069_IG04: test dword ptr [rsp], esp sub rsp, 0x1000 cmp rsp, rdx jae SHORT G_M28069_IG04 mov rsp, rdx lea rax, [rsp] ;; size=22 bbWeight=0.50 PerfScore 2.62 G_M28069_IG05: test ecx, ecx jl G_M28069_IG31 - mov bword ptr [rbp-0x28], rax - mov dword ptr [rbp-0x20], ecx + mov bword ptr [rbp-0x30], rax + mov dword ptr [rbp-0x28], ecx xor eax, eax test edi, edi jle G_M28069_IG14 ;; size=25 bbWeight=0.50 PerfScore 2.38 G_M28069_IG06: mov ecx, eax movzx rcx, word ptr [r15+2*rcx+0x0C] cmp ecx, 39 jne SHORT G_M28069_IG10 jmp SHORT G_M28069_IG07 align [0 bytes for IG07] ;; size=15 bbWeight=4 PerfScore 22.00 G_M28069_IG07: - cmp eax, dword ptr [rbp-0x20] + cmp eax, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] mov edx, eax movzx rsi, word ptr [r15+2*rdx+0x0C] mov word ptr [rcx+2*rdx], si inc eax cmp edi, eax jle SHORT G_M28069_IG08 mov ecx, eax cmp word ptr [r15+2*rcx+0x0C], 39 jne SHORT G_M28069_IG07 ;; size=42 bbWeight=16 PerfScore 208.00 G_M28069_IG08: cmp edi, eax jg SHORT G_M28069_IG11 ;; size=4 bbWeight=2 PerfScore 2.50 G_M28069_IG09: jmp G_M28069_IG26 align [0 bytes for IG16] ;; size=5 bbWeight=0.50 PerfScore 1.00 G_M28069_IG10: cmp ecx, 121 je SHORT G_M28069_IG13 ;; size=5 bbWeight=2 PerfScore 2.50 G_M28069_IG11: - cmp eax, dword ptr [rbp-0x20] + cmp eax, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] mov edx, eax mov esi, eax movzx rsi, word ptr [r15+2*rsi+0x0C] mov word ptr [rcx+2*rdx], si inc eax cmp edi, eax jg SHORT G_M28069_IG06 ;; size=33 bbWeight=4 PerfScore 36.00 G_M28069_IG12: jmp SHORT G_M28069_IG14 ;; size=2 bbWeight=0.50 PerfScore 1.00 G_M28069_IG13: - cmp eax, dword ptr [rbp-0x20] + cmp eax, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] mov edx, eax mov word ptr [rcx+2*rdx], 121 ;; size=21 bbWeight=0.50 PerfScore 2.62 G_M28069_IG14: lea ecx, [rdi-0x01] cmp ecx, eax jle G_M28069_IG26 lea ecx, [rax+0x01] cmp ecx, edi jae G_M28069_IG30 mov edx, ecx cmp word ptr [r15+2*rdx+0x0C], 121 jne G_M28069_IG26 lea esi, [rax+0x02] cmp edi, esi jle SHORT G_M28069_IG15 cmp esi, edi jae G_M28069_IG30 mov r8d, esi cmp word ptr [r15+2*r8+0x0C], 121 je G_M28069_IG26 ;; size=68 bbWeight=0.50 PerfScore 7.50 G_M28069_IG15: - cmp ecx, dword ptr [rbp-0x20] + cmp ecx, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] mov word ptr [rcx+2*rdx], 121 - cmp esi, dword ptr [rbp-0x20] + cmp esi, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] mov edx, esi mov word ptr [rcx+2*rdx], 121 add eax, 3 - cmp eax, dword ptr [rbp-0x20] + cmp eax, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] mov word ptr [rcx+2*rax], 121 mov eax, esi cmp edi, eax jle SHORT G_M28069_IG19 test eax, eax jl SHORT G_M28069_IG18 ;; size=72 bbWeight=0.50 PerfScore 9.12 G_M28069_IG16: lea ecx, [rax+0x02] - cmp ecx, dword ptr [rbp-0x20] + cmp ecx, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rdx, bword ptr [rbp-0x28] + mov rdx, bword ptr [rbp-0x30] mov esi, eax movzx rsi, word ptr [r15+2*rsi+0x0C] mov word ptr [rdx+2*rcx], si inc eax cmp edi, eax jg SHORT G_M28069_IG16 ;; size=34 bbWeight=3.96 PerfScore 36.63 G_M28069_IG17: jmp SHORT G_M28069_IG19 ;; size=2 bbWeight=0.50 PerfScore 1.00 G_M28069_IG18: lea ecx, [rax+0x02] - cmp ecx, dword ptr [rbp-0x20] + cmp ecx, dword ptr [rbp-0x28] jae G_M28069_IG30 - mov rcx, bword ptr [rbp-0x28] + mov rcx, bword ptr [rbp-0x30] lea edx, [rax+0x02] cmp eax, edi jae G_M28069_IG30 mov esi, eax movzx rsi, word ptr [r15+2*rsi+0x0C] mov word ptr [rcx+2*rdx], si inc eax cmp edi, eax jg SHORT G_M28069_IG18 ;; size=45 bbWeight=0.04 PerfScore 0.44 G_M28069_IG19: - lea rdi, [rbp-0x28] + lea rdi, [rbp-0x30] mov rax, 0xD1FFAB1E ; code for System.Span`1[ushort]:ToString():System.String:this call [rax]System.Span`1[ushort]:ToString():System.String:this - mov rdx, rax - cmp dword ptr [rbx+0x10], 0 + mov r14d, dword ptr [rbx+0x10] + test r14d, r14d je G_M28069_IG32 mov rdi, gword ptr [rbx+0x08] - xor esi, esi - call CORINFO_HELP_ARRADDR_ST + cmp dword ptr [rdi+0x08], 0 + jbe G_M28069_IG30 + lea rdi, bword ptr [rdi+0x10] + mov rsi, rax + call CORINFO_HELP_ASSIGN_REF inc dword ptr [rbx+0x14] - mov r14d, 1 - cmp dword ptr [rbx+0x10], 1 + mov r13d, 1 + cmp r14d, 1 jle SHORT G_M28069_IG23 - ;; size=55 bbWeight=0.50 PerfScore 9.25 + ;; size=70 bbWeight=0.50 PerfScore 9.62 G_M28069_IG20: mov edx, dword ptr [rbx+0x10] - cmp r14d, edx + cmp r13d, edx jae G_M28069_IG32 mov rsi, gword ptr [rbx+0x08] mov rdi, rsi mov eax, dword ptr [rdi+0x08] - cmp r14d, eax + cmp r13d, eax jae G_M28069_IG30 - mov eax, r14d + mov eax, r13d mov rdi, gword ptr [rdi+8*rax+0x10] test edx, edx je G_M28069_IG32 mov rsi, gword ptr [rsi+0x10] cmp rdi, rsi je SHORT G_M28069_IG24 ;; size=56 bbWeight=4 PerfScore 62.00 G_M28069_IG21: test rdi, rdi je SHORT G_M28069_IG22 test rsi, rsi je SHORT G_M28069_IG22 mov edx, dword ptr [rdi+0x08] cmp edx, dword ptr [rsi+0x08] jne SHORT G_M28069_IG22 add rdi, 12 add edx, edx add rsi, 12 mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte test eax, eax jne SHORT G_M28069_IG24 ;; size=44 bbWeight=2 PerfScore 27.50 G_M28069_IG22: - inc r14d - cmp r14d, dword ptr [rbx+0x10] + inc r13d + cmp r13d, dword ptr [rbx+0x10] jl SHORT G_M28069_IG20 ;; size=9 bbWeight=4 PerfScore 17.00 G_M28069_IG23: inc dword ptr [rbx+0x14] mov rdi, gword ptr [rbx+0x08] mov esi, dword ptr [rbx+0x10] mov eax, dword ptr [rdi+0x08] cmp eax, esi jbe SHORT G_M28069_IG25 lea eax, [rsi+0x01] mov dword ptr [rbx+0x10], eax lea rdi, bword ptr [rdi+8*rsi+0x10] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF jmp SHORT G_M28069_IG26 ;; size=38 bbWeight=0.50 PerfScore 8.00 G_M28069_IG24: - cmp r14d, dword ptr [rbx+0x10] + cmp r13d, dword ptr [rbx+0x10] jae SHORT G_M28069_IG32 mov rdi, gword ptr [rbx+0x08] - movsxd rsi, r14d - mov rdx, r15 - call CORINFO_HELP_ARRADDR_ST + cmp r13d, dword ptr [rdi+0x08] + jae SHORT G_M28069_IG30 + mov esi, r13d + lea rdi, bword ptr [rdi+8*rsi+0x10] + mov rsi, r15 + call CORINFO_HELP_ASSIGN_REF inc dword ptr [rbx+0x14] jmp SHORT G_M28069_IG26 - ;; size=26 bbWeight=0.50 PerfScore 6.25 + ;; size=37 bbWeight=0.50 PerfScore 8.75 G_M28069_IG25: mov rdi, rbx mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this call [rax]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this ;; size=18 bbWeight=0.50 PerfScore 1.88 G_M28069_IG26: - cmp qword ptr [rbp-0x30], 0xD1FFAB1E + cmp qword ptr [rbp-0x38], 0xD1FFAB1E je SHORT G_M28069_IG27 call CORINFO_HELP_FAIL_FAST ;; size=15 bbWeight=1 PerfScore 4.00 G_M28069_IG27: nop ;; size=1 bbWeight=1 PerfScore 0.25 G_M28069_IG28: - lea rsp, [rbp-0x18] + lea rsp, [rbp-0x20] pop rbx + pop r13 pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.50 + ;; size=13 bbWeight=1 PerfScore 4.00 G_M28069_IG29: call CORINFO_HELP_OVERFLOW ;; size=5 bbWeight=0 PerfScore 0.00 G_M28069_IG30: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M28069_IG31: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28069_IG32: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 822, prolog size 32, PerfScore 578.80, instruction count 233, allocated bytes for code 826 (MethodHash=bd52925a) for method System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts) +; Total bytes of code 852, prolog size 34, PerfScore 586.17, instruction count 241, allocated bytes for code 856 (MethodHash=bd52925a) for method System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (FullOpts) ```
28 (9.21 % of base) - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte ```diff ; Assembly listing for method System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 5 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; -; V00 arg0 [V00,T07] ( 3, 3 ) ref -> r14 class-hnd single-def -; V01 arg1 [V01,T08] ( 3, 3 ) ushort -> r13 single-def -; V02 arg2 [V02,T06] ( 4, 3.50) int -> r15 single-def -; V03 arg3 [V03,T05] ( 4, 3.50) byref -> rbx single-def +; V00 arg0 [V00,T10] ( 3, 3 ) ref -> r14 class-hnd single-def +; V01 arg1 [V01,T11] ( 3, 3 ) ushort -> r13 single-def +; V02 arg2 [V02,T09] ( 4, 3.50) int -> r15 single-def +; V03 arg3 [V03,T08] ( 4, 3.50) byref -> rbx single-def ; V04 loc0 [V04 ] ( 5, 4.50) struct (16) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op -; V05 loc1 [V05,T09] ( 3, 3 ) ubyte -> r14 -; V06 loc2 [V06,T01] ( 11, 30 ) ref -> r13 class-hnd single-def +; V05 loc1 [V05,T12] ( 3, 3 ) ubyte -> r14 +; V06 loc2 [V06,T01] ( 10, 26 ) ref -> r13 class-hnd single-def ; V07 loc3 [V07,T00] ( 9, 32.50) int -> r12 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V09 tmp1 [V09,T04] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" +; V09 tmp1 [V09,T07] ( 3, 6 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" ;* V10 tmp2 [V10 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -; V11 tmp3 [V11,T03] ( 2, 16 ) ref -> rdx class-hnd exact "Inlining Arg" +; V11 tmp3 [V11,T04] ( 2, 16 ) ref -> rax class-hnd exact "Inlining Arg" ; V12 tmp4 [V12 ] ( 4, 3.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V04.Results (fldOffset=0x0)" P-DEP ; V13 tmp5 [V13 ] ( 3, 3 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V04.DisallowDuplicates (fldOffset=0x8)" P-DEP ; V14 tmp6 [V14,T02] ( 3, 24 ) ref -> rdi "arr expr" +; V15 tmp7 [V15,T03] ( 3, 24 ) ref -> rdi "arr expr" +; V16 cse0 [V16,T05] ( 3, 12 ) int -> [rbp-0x3C] spill-single-def "CSE - aggressive" +; V17 cse1 [V17,T06] ( 3, 12 ) long -> [rbp-0x48] spill-single-def "CSE - aggressive" ; -; Lcl frame size = 24 +; Lcl frame size = 40 G_M35446_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 24 + sub rsp, 40 vzeroupper - lea rbp, [rsp+0x40] + lea rbp, [rsp+0x50] mov r14, rdi mov r13d, esi mov r15d, edx mov rbx, rcx ;; size=34 bbWeight=1 PerfScore 8.75 G_M35446_IG02: xor rdi, rdi mov gword ptr [rbx], rdi vxorps xmm0, xmm0, xmm0 vmovdqu xmmword ptr [rbp-0x38], xmm0 mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.String] call CORINFO_HELP_NEWSFAST mov rdx, 0xD1FFAB1E ; 'System.String[]' mov gword ptr [rax+0x08], rdx mov gword ptr [rbp-0x38], rax mov byte ptr [rbp-0x30], 1 movzx rdx, r13w lea r8, [rbp-0x38] mov rsi, r14 mov ecx, r15d mov rdi, 0xD1FFAB1E ; code for System.Globalization.CalendarData:EnumCalendarInfoCallback(ulong,long) mov rax, 0xD1FFAB1E ; code for Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte call [rax]Interop+Globalization:EnumCalendarInfo(long,System.String,ushort,int,long):ubyte mov r14d, eax test r14d, r14d je G_M35446_IG07 ;; size=99 bbWeight=1 PerfScore 13.33 G_M35446_IG03: mov r13, gword ptr [rbp-0x38] xor r12d, r12d cmp dword ptr [r13+0x10], 0 jle SHORT G_M35446_IG05 ;; size=14 bbWeight=0.50 PerfScore 2.62 G_M35446_IG04: cmp r12d, dword ptr [r13+0x10] jae G_M35446_IG10 mov rdi, gword ptr [r13+0x08] cmp r12d, dword ptr [rdi+0x08] - jae SHORT G_M35446_IG09 + jae G_M35446_IG09 mov eax, r12d + mov qword ptr [rbp-0x48], rax mov rdi, gword ptr [rdi+8*rax+0x10] - mov rax, 0xD1FFAB1E ; code for System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String - call [rax]System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String - mov rdx, rax - cmp r12d, dword ptr [r13+0x10] + mov rcx, 0xD1FFAB1E ; code for System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String + call [rcx]System.Globalization.CalendarData:NormalizeDatePattern(System.String):System.String + mov ecx, dword ptr [r13+0x10] + mov dword ptr [rbp-0x3C], ecx + cmp r12d, ecx jae SHORT G_M35446_IG10 mov rdi, gword ptr [r13+0x08] - movsxd rsi, r12d - call CORINFO_HELP_ARRADDR_ST + cmp r12d, dword ptr [rdi+0x08] + jae SHORT G_M35446_IG09 + mov rsi, qword ptr [rbp-0x48] + lea rdi, bword ptr [rdi+8*rsi+0x10] + mov rsi, rax + call CORINFO_HELP_ASSIGN_REF inc dword ptr [r13+0x14] inc r12d - cmp r12d, dword ptr [r13+0x10] + mov edi, dword ptr [rbp-0x3C] + cmp r12d, edi jl SHORT G_M35446_IG04 - ;; size=74 bbWeight=4 PerfScore 121.00 + ;; size=102 bbWeight=4 PerfScore 142.00 G_M35446_IG05: cmp r15d, 3 jne SHORT G_M35446_IG06 mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) call [rax]System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) ;; size=21 bbWeight=0.50 PerfScore 2.38 G_M35446_IG06: mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this mov rsi, rax mov rdi, rbx call CORINFO_HELP_CHECKED_ASSIGN_REF ;; size=26 bbWeight=0.50 PerfScore 2.50 G_M35446_IG07: mov eax, r14d ;; size=3 bbWeight=1 PerfScore 0.25 G_M35446_IG08: - add rsp, 24 + add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M35446_IG09: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M35446_IG10: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 304, prolog size 22, PerfScore 185.48, instruction count 80, allocated bytes for code 304 (MethodHash=99757589) for method System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts) +; Total bytes of code 332, prolog size 22, PerfScore 209.28, instruction count 87, allocated bytes for code 332 (MethodHash=99757589) for method System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts) ```
13 (1.21 % of base) - System.Threading.TimerQueue:TimerThread() ```diff ; Assembly listing for method System.Threading.TimerQueue:TimerThread() (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 17 single block inlinees; 15 inlinees without PGO data ; Final local variable assignments ; -; V00 loc0 [V00,T21] ( 7, 196 ) ref -> rbx class-hnd exact single-def +; V00 loc0 [V00,T22] ( 7, 196 ) ref -> rbx class-hnd exact single-def ; V01 loc1 [V01,T00] ( 16,1249 ) ref -> r15 class-hnd single-def ; V02 loc2 [V02,T05] ( 9, 641 ) ref -> r14 class-hnd single-def ; V03 loc3 [V03,T11] ( 8, 392 ) int -> registers -; V04 loc4 [V04,T35] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact EH-live single-def +; V04 loc4 [V04,T37] ( 2, 0 ) ref -> [rbp-0x50] class-hnd exact EH-live single-def ; V05 loc5 [V05 ] ( 5, 4 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op -; V06 loc6 [V06,T25] ( 2, 192 ) long -> r13 -; V07 loc7 [V07,T28] ( 3, 80 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd exact EH-live +; V06 loc6 [V06,T27] ( 2, 192 ) long -> r13 +; V07 loc7 [V07,T30] ( 3, 80 ) ref -> [rbp-0x58] do-not-enreg[Z] class-hnd exact EH-live ; V08 loc8 [V08 ] ( 5, 256 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op -; V09 loc9 [V09,T01] ( 11,1088 ) int -> [rbp-0x3C] +; V09 loc9 [V09,T01] ( 12,1152 ) int -> [rbp-0x3C] ; V10 loc10 [V10,T09] ( 5, 448 ) ref -> rsi class-hnd exact ; V11 loc11 [V11,T13] ( 4, 384 ) long -> rcx ; V12 loc12 [V12,T12] ( 6, 384 ) int -> [rbp-0x40] spill-single-def ;* V13 loc13 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op ;* V14 loc14 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V16 tmp1 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op "Inlining Arg" -;* V17 tmp2 [V17,T29] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V18 tmp3 [V18,T22] ( 3, 192 ) ref -> rdi class-hnd "Inline stloc first use temp" +;* V17 tmp2 [V17,T31] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V18 tmp3 [V18,T23] ( 3, 192 ) ref -> rdi class-hnd exact "Inline stloc first use temp" ; V19 tmp4 [V19,T17] ( 4, 256 ) int -> rcx "Inline stloc first use temp" -; V20 tmp5 [V20,T19] ( 2, 256 ) ref -> rdx class-hnd "Inlining Arg" +; V20 tmp5 [V20,T19] ( 2, 256 ) ref -> rdx class-hnd exact "Inlining Arg" ;* V21 tmp6 [V21 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" ; V22 tmp7 [V22,T06] ( 5, 640 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "Inlining Arg" ;* V23 tmp8 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V24 tmp9 [V24,T14] ( 3, 384 ) ref -> [rbp-0x68] class-hnd spill-single-def "Inlining Arg" ; V25 tmp10 [V25,T07] ( 5, 640 ) ref -> [rbp-0x70] class-hnd exact "Inlining Arg" ;* V26 tmp11 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V27 tmp12 [V27 ] ( 0, 0 ) int -> zero-ref "impAppendStmt" -;* V28 tmp13 [V28,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V28 tmp13 [V28,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V29 tmp14 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" ; V30 tmp15 [V30,T16] ( 3, 272 ) int -> rdx "Inline stloc first use temp" -;* V31 tmp16 [V31,T32] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP +;* V31 tmp16 [V31,T34] ( 0, 0 ) ref -> zero-ref "field V13._list (fldOffset=0x0)" P-INDEP ; V32 tmp17 [V32,T10] ( 4, 320 ) ref -> [rbp-0x78] spill-single-def "field V13._current (fldOffset=0x8)" P-INDEP ; V33 tmp18 [V33,T02] ( 6, 656 ) int -> [rbp-0x44] "field V13._index (fldOffset=0x10)" P-INDEP -; V34 tmp19 [V34,T26] ( 2, 144 ) int -> r13 "field V13._version (fldOffset=0x14)" P-INDEP -; V35 tmp20 [V35,T30] ( 2, 32 ) ref -> rdi "field V21._list (fldOffset=0x0)" P-INDEP +; V34 tmp19 [V34,T28] ( 2, 144 ) int -> r13 "field V13._version (fldOffset=0x14)" P-INDEP +; V35 tmp20 [V35,T32] ( 2, 32 ) ref -> rdi "field V21._list (fldOffset=0x0)" P-INDEP ;* V36 tmp21 [V36 ] ( 0, 0 ) ref -> zero-ref "field V21._current (fldOffset=0x8)" P-INDEP -;* V37 tmp22 [V37,T33] ( 0, 0 ) int -> zero-ref "field V21._index (fldOffset=0x10)" P-INDEP -; V38 tmp23 [V38,T31] ( 2, 32 ) int -> r13 "field V21._version (fldOffset=0x14)" P-INDEP -; V39 tmp24 [V39,T36] ( 2, 0 ) ref -> rdx "argument with side effect" +;* V37 tmp22 [V37,T35] ( 0, 0 ) int -> zero-ref "field V21._index (fldOffset=0x10)" P-INDEP +; V38 tmp23 [V38,T33] ( 2, 32 ) int -> r13 "field V21._version (fldOffset=0x14)" P-INDEP +; V39 tmp24 [V39,T38] ( 2, 0 ) ref -> rdx "argument with side effect" ; V40 tmp25 [V40,T03] ( 3, 768 ) ref -> rdi "arr expr" ; V41 tmp26 [V41,T15] ( 3, 384 ) ref -> rdx "arr expr" -; V42 tmp27 [V42,T04] ( 3, 768 ) ref -> rsi "arr expr" -; V43 PSPSym [V43,T34] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym" -; V44 cse0 [V44,T23] ( 3, 192 ) ref -> rsi "CSE - moderate" -; V45 cse1 [V45,T08] ( 3, 384 ) int -> rdx "CSE - moderate" -; V46 cse2 [V46,T18] ( 4, 256 ) int -> rdi "CSE - moderate" -; V47 cse3 [V47,T24] ( 3, 192 ) ref -> rsi "CSE - moderate" -; V48 cse4 [V48,T27] ( 2, 128 ) int -> rdx "CSE - moderate" +; V42 tmp27 [V42,T20] ( 2, 256 ) ref -> rsi "arr expr" +; V43 tmp28 [V43,T04] ( 3, 768 ) ref -> rsi "arr expr" +; V44 PSPSym [V44,T36] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym" +; V45 cse0 [V45,T24] ( 3, 192 ) ref -> rsi "CSE - moderate" +; V46 cse1 [V46,T08] ( 3, 384 ) int -> rdx "CSE - moderate" +; V47 cse2 [V47,T18] ( 4, 256 ) int -> rdi "CSE - moderate" +; V48 cse3 [V48,T25] ( 3, 192 ) ref -> rsi "CSE - moderate" +; V49 cse4 [V49,T29] ( 2, 128 ) int -> rdx "CSE - moderate" +; V50 cse5 [V50,T26] ( 3, 192 ) int -> r8 "CSE - moderate" ; ; Lcl frame size = 88 G_M45973_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 88 lea rbp, [rsp+0x80] mov qword ptr [rbp-0x80], rsp ;; size=26 bbWeight=1 PerfScore 7.75 G_M45973_IG02: mov rsi, 0xD1FFAB1E ; const ptr mov rbx, gword ptr [rsi] mov rsi, 0xD1FFAB1E ; data for System.Threading.TimerQueue:s_scheduledTimersToFire mov r15, gword ptr [rsi] mov gword ptr [rbp-0x50], rbx xor esi, esi mov dword ptr [rbp-0x30], esi ;; size=35 bbWeight=1 PerfScore 6.75 G_M45973_IG03: cmp byte ptr [rbp-0x30], 0 jne SHORT G_M45973_IG04 lea rsi, [rbp-0x30] mov rdi, rbx call System.Threading.Monitor:ReliableEnter(System.Object,byref) mov rdi, 0xD1FFAB1E ; data for System.Threading.TimerQueue:s_scheduledTimers mov r14, gword ptr [rdi] jmp SHORT G_M45973_IG05 ;; size=33 bbWeight=1 PerfScore 9.00 G_M45973_IG04: mov rax, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() call [rax]System.Threading.Monitor:ThrowLockTakenException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M45973_IG05: cmp byte ptr [rbp-0x30], 0 je SHORT G_M45973_IG06 mov rdi, rbx call System.Threading.Monitor:Exit(System.Object) ;; size=14 bbWeight=1 PerfScore 4.25 G_M45973_IG06: mov r13d, -1 ;; size=6 bbWeight=8 PerfScore 2.00 G_M45973_IG07: cmp r13d, -1 jl G_M45973_IG37 mov rdi, rbx mov esi, r13d xor rdx, rdx xor ecx, ecx mov rax, 0xD1FFAB1E ; code for System.Threading.WaitHandle:WaitOneNoCheck(int,System.Object,ubyte):ubyte:this call [rax]System.Threading.WaitHandle:WaitOneNoCheck(int,System.Object,ubyte):ubyte:this call System.Environment:get_TickCount64():long mov r13, rax mov r12d, 0xD1FFAB1E mov gword ptr [rbp-0x58], rbx xor esi, esi mov dword ptr [rbp-0x38], esi ;; size=55 bbWeight=64 PerfScore 592.00 G_M45973_IG08: cmp byte ptr [rbp-0x38], 0 jne G_M45973_IG20 lea rsi, [rbp-0x38] mov rdi, rbx call System.Threading.Monitor:ReliableEnter(System.Object,byref) mov eax, dword ptr [r14+0x10] dec eax js G_M45973_IG21 ;; size=34 bbWeight=64 PerfScore 512.00 G_M45973_IG09: cmp eax, dword ptr [r14+0x10] jae G_M45973_IG16 mov rdi, gword ptr [r14+0x08] cmp eax, dword ptr [rdi+0x08] jae G_M45973_IG19 mov dword ptr [rbp-0x3C], eax mov esi, eax mov rsi, gword ptr [rdi+8*rsi+0x10] mov rcx, qword ptr [rsi+0x30] sub rcx, r13 test rcx, rcx jg G_M45973_IG18 ;; size=49 bbWeight=128 PerfScore 2144.00 G_M45973_IG10: mov byte ptr [rsi+0x3D], 0 inc dword ptr [r15+0x14] mov rdi, gword ptr [r15+0x08] mov ecx, dword ptr [r15+0x10] mov edx, dword ptr [rdi+0x08] cmp edx, ecx jbe G_M45973_IG17 lea edx, [rcx+0x01] mov dword ptr [r15+0x10], edx lea rdi, bword ptr [rdi+8*rcx+0x10] call CORINFO_HELP_ASSIGN_REF ;; size=44 bbWeight=64 PerfScore 944.00 G_M45973_IG11: mov edi, dword ptr [r14+0x10] lea eax, [rdi-0x01] mov dword ptr [rbp-0x40], eax mov ecx, dword ptr [rbp-0x3C] cmp ecx, eax je SHORT G_M45973_IG15 cmp eax, edi jae SHORT G_M45973_IG16 mov rsi, gword ptr [r14+0x08] mov rdx, rsi - cmp eax, dword ptr [rdx+0x08] + mov r8d, dword ptr [rdx+0x08] + cmp eax, r8d jae SHORT G_M45973_IG19 - mov r8d, eax - mov rdx, gword ptr [rdx+8*r8+0x10] + mov r9d, eax + mov rdx, gword ptr [rdx+8*r9+0x10] cmp ecx, edi jae SHORT G_M45973_IG16 - mov rdi, rsi + cmp ecx, r8d + jae SHORT G_M45973_IG19 mov dword ptr [rbp-0x3C], ecx - movsxd rsi, ecx - call CORINFO_HELP_ARRADDR_ST + mov edi, ecx + lea rdi, bword ptr [rsi+8*rdi+0x10] + mov rsi, rdx + call CORINFO_HELP_ASSIGN_REF inc dword ptr [r14+0x14] mov eax, dword ptr [rbp-0x40] - ;; size=66 bbWeight=64 PerfScore 1488.00 + ;; size=79 bbWeight=64 PerfScore 1584.00 G_M45973_IG12: mov rdi, r14 mov esi, eax mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this call [rax]System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this ;; size=17 bbWeight=64 PerfScore 240.00 G_M45973_IG13: mov eax, dword ptr [rbp-0x3C] dec eax jns G_M45973_IG09 ;; size=11 bbWeight=128 PerfScore 288.00 G_M45973_IG14: jmp SHORT G_M45973_IG21 ;; size=2 bbWeight=16 PerfScore 32.00 G_M45973_IG15: mov dword ptr [rbp-0x3C], ecx jmp SHORT G_M45973_IG12 ;; size=5 bbWeight=32 PerfScore 96.00 G_M45973_IG16: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M45973_IG17: mov rdi, r15 mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this call [rcx]System.Collections.Generic.List`1[System.__Canon]:AddWithResize(System.__Canon):this jmp G_M45973_IG11 ;; size=20 bbWeight=64 PerfScore 352.00 G_M45973_IG18: movsxd rdi, r12d cmp rcx, rdi jge SHORT G_M45973_IG13 mov r12d, ecx jmp SHORT G_M45973_IG13 ;; size=13 bbWeight=64 PerfScore 240.00 G_M45973_IG19: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M45973_IG20: mov rax, 0xD1FFAB1E ; code for System.Threading.Monitor:ThrowLockTakenException() call [rax]System.Threading.Monitor:ThrowLockTakenException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M45973_IG21: cmp byte ptr [rbp-0x38], 0 je SHORT G_M45973_IG23 ;; size=6 bbWeight=64 PerfScore 192.00 G_M45973_IG22: mov rdi, gword ptr [rbp-0x58] call System.Threading.Monitor:Exit(System.Object) ;; size=9 bbWeight=16 PerfScore 32.00 G_M45973_IG23: cmp dword ptr [r15+0x10], 0 jle G_M45973_IG33 ;; size=11 bbWeight=64 PerfScore 256.00 G_M45973_IG24: mov rdi, r15 mov r13d, dword ptr [rdi+0x14] xor edi, edi jmp G_M45973_IG29 ;; size=14 bbWeight=16 PerfScore 72.00 G_M45973_IG25: mov rsi, 0xD1FFAB1E ; const ptr mov rcx, gword ptr [rsi] mov gword ptr [rbp-0x60], rcx cmp byte ptr [rcx+0x34], 0 je SHORT G_M45973_IG26 mov rsi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rsi] cmp byte ptr [rsi+0x9D], 0 je SHORT G_M45973_IG26 mov rdi, rsi mov rsi, rax mov rdx, 0xD1FFAB1E ; code for System.Diagnostics.Tracing.FrameworkEventSource:ThreadPoolEnqueueWorkObject(System.Object):this call [rdx]System.Diagnostics.Tracing.FrameworkEventSource:ThreadPoolEnqueueWorkObject(System.Object):this mov rax, gword ptr [rbp-0x78] ;; size=67 bbWeight=64 PerfScore 1168.00 G_M45973_IG26: mov rcx, gword ptr [rbp-0x60] mov rdx, gword ptr [rcx+0x10] mov gword ptr [rbp-0x68], rdx mov rdi, gword ptr [rdx+0x10] mov rsi, rax mov r8, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this cmp dword ptr [rdi], edi call [r8]System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryEnqueue(System.__Canon):ubyte:this test eax, eax jne SHORT G_M45973_IG27 mov rdi, gword ptr [rbp-0x68] mov rsi, gword ptr [rbp-0x78] mov rax, 0xD1FFAB1E ; code for System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:EnqueueSlow(System.__Canon):this call [rax]System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:EnqueueSlow(System.__Canon):this ;; size=58 bbWeight=64 PerfScore 1216.00 G_M45973_IG27: mov rdi, gword ptr [rbp-0x60] mov dword ptr [rdi+0x30], 1 add rdi, 116 mov ecx, 1 xor eax, eax lock cmpxchg dword ptr [rdi], ecx test eax, eax mov edi, dword ptr [rbp-0x44] jne SHORT G_M45973_IG29 mov rax, 0xD1FFAB1E ; global ptr test byte ptr [rax], 1 mov dword ptr [rbp-0x44], edi je G_M45973_IG36 ;; size=55 bbWeight=64 PerfScore 1808.00 G_M45973_IG28: mov rax, 0xD1FFAB1E ; data for System.Threading.PortableThreadPool:ThreadPoolInstance mov rax, gword ptr [rax] lea rcx, bword ptr [rax+0x160] lock inc dword ptr [rcx] mov gword ptr [rbp-0x70], rax mov rdi, rax mov rcx, 0xD1FFAB1E ; code for System.Threading.PortableThreadPool+WorkerThread:MaybeAddWorkingWorker(System.Threading.PortableThreadPool) call [rcx]System.Threading.PortableThreadPool+WorkerThread:MaybeAddWorkingWorker(System.Threading.PortableThreadPool) mov rax, gword ptr [rbp-0x70] cmp dword ptr [rax+0x164], 6 je SHORT G_M45973_IG30 mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Threading.PortableThreadPool+GateThread:EnsureRunningSlow(System.Threading.PortableThreadPool) call [rax]System.Threading.PortableThreadPool+GateThread:EnsureRunningSlow(System.Threading.PortableThreadPool) mov edi, dword ptr [rbp-0x44] ;; size=73 bbWeight=64 PerfScore 2096.00 G_M45973_IG29: cmp r13d, dword ptr [r15+0x14] jne G_M45973_IG38 mov edx, dword ptr [r15+0x10] cmp edi, edx jae SHORT G_M45973_IG31 mov rsi, gword ptr [r15+0x08] cmp edi, dword ptr [rsi+0x08] jae SHORT G_M45973_IG35 mov eax, edi mov rax, gword ptr [rsi+8*rax+0x10] mov gword ptr [rbp-0x78], rax inc edi mov dword ptr [rbp-0x44], edi jmp G_M45973_IG25 ;; size=48 bbWeight=128 PerfScore 2528.00 G_M45973_IG30: mov edi, dword ptr [rbp-0x44] jmp SHORT G_M45973_IG29 ;; size=5 bbWeight=32 PerfScore 96.00 G_M45973_IG31: inc dword ptr [r15+0x14] xor edi, edi mov dword ptr [r15+0x10], edi test edx, edx jle SHORT G_M45973_IG33 ;; size=14 bbWeight=128 PerfScore 704.00 G_M45973_IG32: mov rdi, gword ptr [r15+0x08] xor esi, esi mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array,int,int) call [rax]System.Array:Clear(System.Array,int,int) ;; size=18 bbWeight=16 PerfScore 88.00 G_M45973_IG33: cmp r12d, 0xD1FFAB1E mov r13d, r12d jne G_M45973_IG07 ;; size=16 bbWeight=64 PerfScore 96.00 G_M45973_IG34: jmp G_M45973_IG06 ;; size=5 bbWeight=8 PerfScore 16.00 G_M45973_IG35: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M45973_IG36: mov rdi, 0xD1FFAB1E mov esi, 902 call CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE jmp G_M45973_IG28 ;; size=25 bbWeight=0 PerfScore 0.00 G_M45973_IG37: mov edi, 0x961 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov edi, r13d mov esi, -1 mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String) call [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String) int3 ;; size=44 bbWeight=0 PerfScore 0.00 G_M45973_IG38: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() call [rax]System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M45973_IG39: push rbp push r15 push r14 push r13 push r12 push rbx push rax mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x80] ;; size=25 bbWeight=0 PerfScore 0.00 G_M45973_IG40: cmp byte ptr [rbp-0x30], 0 je SHORT G_M45973_IG41 mov rdi, gword ptr [rbp-0x50] call System.Threading.Monitor:Exit(System.Object) ;; size=15 bbWeight=0 PerfScore 0.00 G_M45973_IG41: nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M45973_IG42: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00 G_M45973_IG43: push rbp push r15 push r14 push r13 push r12 push rbx push rax mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x80] ;; size=25 bbWeight=0 PerfScore 0.00 G_M45973_IG44: cmp byte ptr [rbp-0x38], 0 je SHORT G_M45973_IG45 mov rdi, gword ptr [rbp-0x58] call System.Threading.Monitor:Exit(System.Object) ;; size=15 bbWeight=0 PerfScore 0.00 G_M45973_IG45: nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M45973_IG46: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1072, prolog size 26, PerfScore 17432.95, instruction count 285, allocated bytes for code 1072 (MethodHash=b6f44c6a) for method System.Threading.TimerQueue:TimerThread() (FullOpts) +; Total bytes of code 1085, prolog size 26, PerfScore 17530.25, instruction count 289, allocated bytes for code 1085 (MethodHash=b6f44c6a) for method System.Threading.TimerQueue:TimerThread() (FullOpts) ```
MihuBot commented 5 months ago

Top method improvements

-32 (-2.87 % of base) - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String ```diff ; Assembly listing for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 12 single block inlinees; 19 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 12, 15 ) ref -> rbx class-hnd single-def ; V01 arg1 [V01,T17] ( 5, 4 ) ref -> r15 class-hnd single-def ; V02 loc0 [V02,T25] ( 4, 3 ) ref -> rax class-hnd single-def ; V03 loc1 [V03,T28] ( 5, 2.25) ref -> rdi class-hnd exact ; V04 loc2 [V04,T04] ( 9, 10 ) ref -> [rbp-0x50] class-hnd EH-live single-def ; V05 loc3 [V05,T24] ( 6, 3 ) ref -> r13 class-hnd single-def ; V06 loc4 [V06 ] ( 33, 49.50) struct (32) [rbp-0x48] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ; V07 loc5 [V07,T29] ( 4, 2 ) ref -> r13 class-hnd ;* V08 loc6 [V08 ] ( 0, 0 ) struct (16) zero-ref ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V10 tmp1 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V12 tmp3 [V12,T26] ( 5, 2.50) ref -> r13 ;* V13 tmp4 [V13 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" ;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" ;* V16 tmp7 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V17 tmp8 [V17 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V18 tmp9 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V19 tmp10 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V20 tmp11 [V20,T30] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" ; V21 tmp12 [V21,T32] ( 2, 2 ) int -> r14 "Inlining Arg" ;* V22 tmp13 [V22 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V23 tmp14 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V24 tmp15 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V25 tmp16 [V25,T22] ( 5, 5 ) ref -> rdx class-hnd single-def "Inlining Arg" +; V25 tmp16 [V25,T22] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" ; V26 tmp17 [V26,T23] ( 4, 4 ) int -> rcx "Inlining Arg" ;* V27 tmp18 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V28 tmp19 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V29 tmp20 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V30 tmp21 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V31 tmp22 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V32 tmp23 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V33 tmp24 [V33,T31] ( 2, 2 ) byref -> rsi single-def "Inlining Arg" ; V34 tmp25 [V34,T33] ( 2, 2 ) int -> rdx "Inlining Arg" ; V35 tmp26 [V35,T34] ( 2, 2 ) long -> rdi "Inlining Arg" ; V36 tmp27 [V36,T27] ( 5, 2.50) int -> rdi "Inline stloc first use temp" ; V37 tmp28 [V37,T05] ( 5, 10 ) int -> rsi "Inline stloc first use temp" ; V38 tmp29 [V38,T06] ( 5, 10 ) int -> r13 "Inline stloc first use temp" ;* V39 tmp30 [V39 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V40 tmp31 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V41 tmp32 [V41,T09] ( 2, 8 ) byref -> rdi "Inlining Arg" ; V42 tmp33 [V42,T13] ( 2, 8 ) int -> rdx "Inlining Arg" ;* V43 tmp34 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V44 tmp35 [V44 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V45 tmp36 [V45,T10] ( 2, 8 ) byref -> rsi "Inlining Arg" ; V46 tmp37 [V46,T14] ( 2, 8 ) long -> rdx "Inlining Arg" ;* V47 tmp38 [V47 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V48 tmp39 [V48,T00] ( 5, 28 ) ref -> r14 class-hnd "Inlining Arg" ; V49 tmp40 [V49,T07] ( 5, 10 ) int -> rsi "Inline stloc first use temp" ; V50 tmp41 [V50,T08] ( 5, 10 ) int -> r13 "Inline stloc first use temp" ;* V51 tmp42 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V52 tmp43 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V53 tmp44 [V53,T11] ( 2, 8 ) byref -> rdi "Inlining Arg" ; V54 tmp45 [V54,T15] ( 2, 8 ) int -> rdx "Inlining Arg" ;* V55 tmp46 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V56 tmp47 [V56 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V57 tmp48 [V57,T12] ( 2, 8 ) byref -> rsi "Inlining Arg" ; V58 tmp49 [V58,T16] ( 2, 8 ) long -> rdx "Inlining Arg" ;* V59 tmp50 [V59 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V60 tmp51 [V60 ] ( 0, 0 ) byref -> zero-ref single-def "field V08._reference (fldOffset=0x0)" P-INDEP ;* V61 tmp52 [V61 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ; V62 tmp53 [V62,T41] ( 2, 1 ) byref -> rdi single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp54 [V63,T53] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP ; V64 tmp55 [V64,T42] ( 2, 1 ) byref -> rcx single-def "field V13._reference (fldOffset=0x0)" P-INDEP ; V65 tmp56 [V65,T47] ( 2, 1 ) int -> rax "field V13._length (fldOffset=0x8)" P-INDEP ; V66 tmp57 [V66,T35] ( 3, 1.50) byref -> rsi "field V14._reference (fldOffset=0x0)" P-INDEP ; V67 tmp58 [V67,T38] ( 3, 1.50) int -> rdx "field V14._length (fldOffset=0x8)" P-INDEP ; V68 tmp59 [V68,T36] ( 3, 1.50) byref -> rdi "field V15._reference (fldOffset=0x0)" P-INDEP ; V69 tmp60 [V69,T39] ( 3, 1.50) int -> rsi "field V15._length (fldOffset=0x8)" P-INDEP ;* V70 tmp61 [V70 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V71 tmp62 [V71 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP ;* V72 tmp63 [V72 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP ;* V73 tmp64 [V73 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP ; V74 tmp65 [V74,T43] ( 2, 1 ) byref -> rdi single-def "field V18._reference (fldOffset=0x0)" P-INDEP ; V75 tmp66 [V75,T48] ( 2, 1 ) int -> rsi "field V18._length (fldOffset=0x8)" P-INDEP ;* V76 tmp67 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V19._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp68 [V77 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP ; V78 tmp69 [V78,T44] ( 2, 1 ) byref -> rdx single-def "field V22._reference (fldOffset=0x0)" P-INDEP ; V79 tmp70 [V79,T49] ( 2, 1 ) int -> rcx "field V22._length (fldOffset=0x8)" P-INDEP ;* V80 tmp71 [V80 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP ;* V81 tmp72 [V81 ] ( 0, 0 ) int -> zero-ref "field V23._length (fldOffset=0x8)" P-INDEP ; V82 tmp73 [V82,T37] ( 3, 1.50) byref -> rdx "field V24._reference (fldOffset=0x0)" P-INDEP ; V83 tmp74 [V83,T40] ( 3, 1.50) int -> rcx "field V24._length (fldOffset=0x8)" P-INDEP ;* V84 tmp75 [V84 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP ;* V85 tmp76 [V85 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP ; V86 tmp77 [V86,T45] ( 2, 1 ) byref -> rdx single-def "field V28._reference (fldOffset=0x0)" P-INDEP ; V87 tmp78 [V87,T50] ( 2, 1 ) int -> rcx "field V28._length (fldOffset=0x8)" P-INDEP ; V88 tmp79 [V88,T46] ( 2, 1 ) byref -> rsi single-def "field V31._reference (fldOffset=0x0)" P-INDEP ; V89 tmp80 [V89,T51] ( 2, 1 ) int -> rdx "field V31._length (fldOffset=0x8)" P-INDEP ;* V90 tmp81 [V90 ] ( 0, 0 ) byref -> zero-ref single-def "field V32._reference (fldOffset=0x0)" P-INDEP ;* V91 tmp82 [V91 ] ( 0, 0 ) int -> zero-ref "field V32._length (fldOffset=0x8)" P-INDEP ;* V92 tmp83 [V92 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP ;* V93 tmp84 [V93 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP ;* V94 tmp85 [V94 ] ( 0, 0 ) byref -> zero-ref "field V40._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp86 [V95 ] ( 0, 0 ) int -> zero-ref "field V40._length (fldOffset=0x8)" P-INDEP ;* V96 tmp87 [V96 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP ;* V97 tmp88 [V97 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ;* V98 tmp89 [V98 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp90 [V99 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V100 tmp91 [V100 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp92 [V101 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP ;* V102 tmp93 [V102 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp94 [V103 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP ; V104 GsCookie [V104 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V105 PSPSym [V105,T52] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym" ; V106 cse0 [V106,T03] ( 7, 14 ) int -> r12 "CSE - aggressive" ; V107 cse1 [V107,T02] ( 11, 16 ) int -> r14 multi-def "CSE - aggressive" ; V108 cse2 [V108,T18] ( 3, 6 ) int -> r13 "CSE - moderate" ; V109 cse3 [V109,T19] ( 3, 6 ) int -> rdx "CSE - moderate" ; V110 cse4 [V110,T20] ( 3, 6 ) int -> r13 "CSE - moderate" ; V111 cse5 [V111,T21] ( 3, 6 ) int -> rdx "CSE - moderate" ; ; Lcl frame size = 56 G_M8186_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 56 lea rbp, [rsp+0x60] xor eax, eax mov qword ptr [rbp-0x48], rax vxorps xmm8, xmm8, xmm8 vmovdqa xmmword ptr [rbp-0x40], xmm8 mov qword ptr [rbp-0x30], rax mov qword ptr [rbp-0x60], rsp mov qword ptr [rbp-0x58], 0xD1FFAB1E mov rbx, rdi mov r15, rsi ;; size=57 bbWeight=1 PerfScore 13.83 G_M8186_IG02: mov rsi, r15 mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.String] call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M8186_IG10 ;; size=23 bbWeight=1 PerfScore 2.75 G_M8186_IG03: test rbx, rbx jne SHORT G_M8186_IG04 xor rdi, rdi xor esi, esi jmp SHORT G_M8186_IG05 ;; size=11 bbWeight=0.50 PerfScore 1.88 G_M8186_IG04: lea rdi, bword ptr [rbx+0x0C] mov r14d, dword ptr [rbx+0x08] mov esi, r14d ;; size=11 bbWeight=0.50 PerfScore 1.38 G_M8186_IG05: mov rdx, gword ptr [rax+0x08] mov ecx, dword ptr [rax+0x10] test rdx, rdx jne SHORT G_M8186_IG06 test ecx, ecx - jne G_M8186_IG40 + jne G_M8186_IG39 xor rdx, rdx xor ecx, ecx jmp SHORT G_M8186_IG07 ;; size=26 bbWeight=0.50 PerfScore 4.50 G_M8186_IG06: - mov rax, 0xD1FFAB1E ; System.String[] - cmp qword ptr [rdx], rax - jne G_M8186_IG39 cmp dword ptr [rdx+0x08], ecx - jb G_M8186_IG40 + jb G_M8186_IG39 add rdx, 16 - ;; size=32 bbWeight=0.50 PerfScore 4.25 + ;; size=13 bbWeight=0.50 PerfScore 2.12 G_M8186_IG07: mov rax, 0xD1FFAB1E ; code for System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String call [rax]System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String cmp qword ptr [rbp-0x58], 0xD1FFAB1E je SHORT G_M8186_IG08 call CORINFO_HELP_FAIL_FAST ;; size=27 bbWeight=0.50 PerfScore 3.62 G_M8186_IG08: nop ;; size=1 bbWeight=0.50 PerfScore 0.12 G_M8186_IG09: lea rsp, [rbp-0x28] pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M8186_IG10: mov rdi, r15 test rdi, rdi - je G_M8186_IG41 + je G_M8186_IG40 ;; size=12 bbWeight=0.50 PerfScore 0.75 G_M8186_IG11: mov rsi, 0xD1FFAB1E ; System.String[] cmp qword ptr [rdi], rsi jne SHORT G_M8186_IG17 ;; size=15 bbWeight=0.25 PerfScore 1.06 G_M8186_IG12: test rbx, rbx jne SHORT G_M8186_IG13 xor rsi, rsi xor edx, edx jmp SHORT G_M8186_IG14 ;; size=11 bbWeight=0.50 PerfScore 1.88 G_M8186_IG13: lea rsi, bword ptr [rbx+0x0C] mov r14d, dword ptr [rbx+0x08] mov edx, r14d ;; size=11 bbWeight=0.50 PerfScore 1.38 G_M8186_IG14: lea rcx, bword ptr [rdi+0x10] mov eax, dword ptr [rdi+0x08] mov rdi, rsi mov esi, edx mov rdx, rcx mov ecx, eax mov rax, 0xD1FFAB1E ; code for System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String call [rax]System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String cmp qword ptr [rbp-0x58], 0xD1FFAB1E je SHORT G_M8186_IG15 call CORINFO_HELP_FAIL_FAST ;; size=44 bbWeight=0.50 PerfScore 5.38 G_M8186_IG15: nop ;; size=1 bbWeight=0.50 PerfScore 0.12 G_M8186_IG16: lea rsp, [rbp-0x28] pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M8186_IG17: mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this call [r11]System.Collections.Generic.IEnumerable`1[System.__Canon]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.__Canon]:this mov r15, rax mov gword ptr [rbp-0x50], r15 ;; size=23 bbWeight=0.50 PerfScore 2.38 G_M8186_IG18: mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne SHORT G_M8186_IG19 mov r13, 0xD1FFAB1E ; '' jmp G_M8186_IG36 ;; size=35 bbWeight=0.50 PerfScore 3.50 G_M8186_IG19: mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this call [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this mov r13, rax mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne SHORT G_M8186_IG20 mov rdi, 0xD1FFAB1E ; '' test r13, r13 cmove r13, rdi jmp G_M8186_IG36 ;; size=61 bbWeight=0.50 PerfScore 5.62 G_M8186_IG20: test dword ptr [rsp], esp sub rsp, 512 lea rdi, [rsp] xor rsi, rsi mov gword ptr [rbp-0x48], rsi mov bword ptr [rbp-0x38], rdi mov dword ptr [rbp-0x30], 256 ;; size=31 bbWeight=0.50 PerfScore 3.50 G_M8186_IG21: mov dword ptr [rbp-0x40], esi test r13, r13 je SHORT G_M8186_IG22 mov edi, dword ptr [rbp-0x40] cmp dword ptr [r13+0x08], 1 jne G_M8186_IG31 cmp edi, dword ptr [rbp-0x30] jae G_M8186_IG31 cmp edi, dword ptr [rbp-0x30] jae G_M8186_IG28 mov rsi, bword ptr [rbp-0x38] mov eax, edi movzx rcx, word ptr [r13+0x0C] mov word ptr [rsi+2*rax], cx inc edi mov dword ptr [rbp-0x40], edi ;; size=60 bbWeight=0.50 PerfScore 9.38 G_M8186_IG22: test rbx, rbx je SHORT G_M8186_IG24 ;; size=5 bbWeight=4 PerfScore 5.00 G_M8186_IG23: mov r13d, dword ptr [rbp-0x40] mov esi, r13d mov r14d, dword ptr [rbx+0x08] cmp r14d, 1 jne G_M8186_IG32 cmp esi, dword ptr [rbp-0x30] jae G_M8186_IG32 cmp esi, dword ptr [rbp-0x30] jae G_M8186_IG28 mov rdi, bword ptr [rbp-0x38] mov eax, esi movzx rcx, word ptr [rbx+0x0C] mov word ptr [rdi+2*rax], cx inc esi mov dword ptr [rbp-0x40], esi ;; size=58 bbWeight=2 PerfScore 32.00 G_M8186_IG24: mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this call [r11]System.Collections.Generic.IEnumerator`1[System.__Canon]:get_Current():System.__Canon:this mov r14, rax test r14, r14 je SHORT G_M8186_IG26 ;; size=24 bbWeight=4 PerfScore 20.00 G_M8186_IG25: mov r13d, dword ptr [rbp-0x40] mov esi, r13d mov r12d, dword ptr [r14+0x08] cmp r12d, 1 jne G_M8186_IG34 cmp esi, dword ptr [rbp-0x30] jae G_M8186_IG34 cmp esi, dword ptr [rbp-0x30] jae SHORT G_M8186_IG28 mov rdi, bword ptr [rbp-0x38] mov eax, esi movzx rcx, word ptr [r14+0x0C] mov word ptr [rdi+2*rax], cx inc esi mov dword ptr [rbp-0x40], esi ;; size=55 bbWeight=2 PerfScore 32.00 G_M8186_IG26: mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne G_M8186_IG22 ;; size=24 bbWeight=4 PerfScore 19.00 G_M8186_IG27: lea rdi, [rbp-0x48] mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:ToString():System.String:this call [rax]System.Text.ValueStringBuilder:ToString():System.String:this mov r13, rax jmp G_M8186_IG36 ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M8186_IG28: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M8186_IG29: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort() call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M8186_IG30: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M8186_IG31: lea rdi, [rbp-0x48] mov rsi, r13 mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:AppendSlow(System.String):this call [rax]System.Text.ValueStringBuilder:AppendSlow(System.String):this jmp G_M8186_IG22 ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M8186_IG32: mov esi, dword ptr [rbp-0x30] sub esi, r14d cmp esi, r13d jge SHORT G_M8186_IG33 mov esi, r14d lea rdi, [rbp-0x48] mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this call [rax]System.Text.ValueStringBuilder:Grow(int):this ;; size=30 bbWeight=2 PerfScore 13.00 G_M8186_IG33: mov edx, dword ptr [rbp-0x30] cmp r13d, edx ja SHORT G_M8186_IG30 mov rdi, bword ptr [rbp-0x38] mov esi, r13d lea rdi, bword ptr [rdi+2*rsi] sub edx, r13d cmp r14d, edx ja SHORT G_M8186_IG29 lea rsi, bword ptr [rbx+0x0C] mov edx, r14d add rdx, rdx mov rax, 0xD1FFAB1E ; code for System.Buffer:Memmove(byref,byref,ulong) call [rax]System.Buffer:Memmove(byref,byref,ulong) mov edi, r14d add edi, dword ptr [rbp-0x40] mov dword ptr [rbp-0x40], edi jmp G_M8186_IG24 ;; size=63 bbWeight=2 PerfScore 30.00 G_M8186_IG34: mov esi, dword ptr [rbp-0x30] sub esi, r12d cmp esi, r13d jge SHORT G_M8186_IG35 mov esi, r12d lea rdi, [rbp-0x48] mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this call [rax]System.Text.ValueStringBuilder:Grow(int):this ;; size=30 bbWeight=2 PerfScore 13.00 G_M8186_IG35: mov edx, dword ptr [rbp-0x30] cmp r13d, edx ja G_M8186_IG30 mov rdi, bword ptr [rbp-0x38] mov esi, r13d lea rdi, bword ptr [rdi+2*rsi] sub edx, r13d cmp r12d, edx ja G_M8186_IG29 lea rsi, bword ptr [r14+0x0C] mov edx, r12d add rdx, rdx mov rax, 0xD1FFAB1E ; code for System.Buffer:Memmove(byref,byref,ulong) call [rax]System.Buffer:Memmove(byref,byref,ulong) add r12d, dword ptr [rbp-0x40] mov dword ptr [rbp-0x40], r12d jmp G_M8186_IG26 ;; size=70 bbWeight=2 PerfScore 29.50 G_M8186_IG36: mov rdi, r15 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this mov rax, r13 cmp qword ptr [rbp-0x58], 0xD1FFAB1E je SHORT G_M8186_IG37 call CORINFO_HELP_FAIL_FAST ;; size=34 bbWeight=0.50 PerfScore 3.88 G_M8186_IG37: nop ;; size=1 bbWeight=0.50 PerfScore 0.12 G_M8186_IG38: lea rsp, [rbp-0x28] pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M8186_IG39: - mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException() - call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M8186_IG40: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M8186_IG41: +G_M8186_IG40: mov edi, 6 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int) call [rax]System.ThrowHelper:ThrowArgumentNullException(int) int3 ;; size=18 bbWeight=0 PerfScore 0.00 -G_M8186_IG42: +G_M8186_IG41: push rbp push r15 push r14 push r13 push r12 push rbx push rax mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x60] ;; size=22 bbWeight=0 PerfScore 0.00 -G_M8186_IG43: +G_M8186_IG42: cmp gword ptr [rbp-0x50], 0 - je SHORT G_M8186_IG44 + je SHORT G_M8186_IG43 mov rdi, gword ptr [rbp-0x50] mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this ;; size=24 bbWeight=0 PerfScore 0.00 -G_M8186_IG44: +G_M8186_IG43: nop ;; size=1 bbWeight=0 PerfScore 0.00 -G_M8186_IG45: +G_M8186_IG44: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1116, prolog size 57, PerfScore 389.12, instruction count 302, allocated bytes for code 1116 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts) +; Total bytes of code 1084, prolog size 57, PerfScore 383.80, instruction count 296, allocated bytes for code 1084 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (FullOpts) ```
-32 (-2.69 % of base) - System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String ```diff ; Assembly listing for method System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 9 single block inlinees; 16 inlinees without PGO data ; Final local variable assignments ; ; V00 TypeCtx [V00,T19] ( 8, 5.20) long -> r15 single-def ;* V01 arg0 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def ; V02 arg1 [V02,T20] ( 6, 4 ) ref -> r14 class-hnd single-def ; V03 loc0 [V03,T38] ( 4, 2 ) ref -> rax class-hnd single-def ; V04 loc1 [V04,T37] ( 5, 2.25) ref -> rdi class-hnd exact ; V05 loc2 [V05,T09] ( 9, 10 ) ref -> [rbp-0x68] class-hnd EH-live spill-single-def ; V06 loc3 [V06,T39] ( 4, 2 ) ref -> r14 class-hnd ;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V08 loc5 [V08 ] ( 0, 0 ) ushort -> zero-ref ;* V09 loc6 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[S] ld-addr-op ;* V10 loc7 [V10 ] ( 0, 0 ) struct (16) zero-ref ; V11 loc8 [V11 ] ( 6, 13.50) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd ;* V12 loc9 [V12 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd ;* V13 loc10 [V13 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[S] ld-addr-op ;* V14 loc11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V15 loc12 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ; V16 loc13 [V16 ] ( 20, 25.50) struct (32) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed ld-addr-op ;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V18 tmp1 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V19 tmp2 [V19,T30] ( 4, 3 ) long -> r11 "VirtualCall with runtime lookup" ;* V20 tmp3 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V21 tmp4 [V21,T32] ( 3, 3 ) long -> r11 "VirtualCall with runtime lookup" ; V22 tmp5 [V22,T44] ( 2, 1 ) byref -> rdi single-def ; V23 tmp6 [V23,T29] ( 7, 3.50) ref -> r15 ;* V24 tmp7 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V25 tmp8 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V26 tmp9 [V26,T00] ( 3, 24 ) long -> r11 "VirtualCall with runtime lookup" ; V27 tmp10 [V27,T01] ( 10, 22 ) byref -> r14 ; V28 tmp11 [V28,T25] ( 2, 6 ) byref -> r15 ;* V29 tmp12 [V29 ] ( 0, 0 ) byref -> zero-ref ; V30 tmp13 [V30,T05] ( 5, 10 ) ref -> r15 ; V31 tmp14 [V31,T35] ( 5, 2.50) ref -> r15 ;* V32 tmp15 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" ;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V34 tmp17 [V34 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" ;* V35 tmp18 [V35 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" ;* V36 tmp19 [V36 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V37 tmp20 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V38 tmp21 [V38 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ;* V39 tmp22 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V40 tmp23 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V41 tmp24 [V41,T26] ( 5, 5 ) ref -> rdx class-hnd single-def "Inlining Arg" +; V41 tmp24 [V41,T27] ( 4, 4 ) ref -> rdx class-hnd exact single-def "Inlining Arg" ; V42 tmp25 [V42,T28] ( 4, 4 ) int -> rcx "Inlining Arg" ;* V43 tmp26 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V44 tmp27 [V44 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V45 tmp28 [V45 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V46 tmp29 [V46 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V47 tmp30 [V47,T41] ( 2, 2 ) long -> rdi "Inlining Arg" ; V48 tmp31 [V48,T36] ( 5, 2.50) int -> rdi "Inline stloc first use temp" ;* V49 tmp32 [V49 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V50 tmp33 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V51 tmp34 [V51 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V52 tmp35 [V52,T03] ( 4, 16 ) int -> rdx "Inlining Arg" ;* V53 tmp36 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V54 tmp37 [V54,T12] ( 2, 8 ) byref -> rsi "Inlining Arg" ; V55 tmp38 [V55,T15] ( 2, 8 ) int -> rdi "Inlining Arg" ;* V56 tmp39 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V57 tmp40 [V57 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V59 tmp42 [V59,T16] ( 2, 8 ) long -> rdx "Inlining Arg" ;* V60 tmp43 [V60 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V61 tmp44 [V61,T10] ( 5, 10 ) int -> rsi "Inline stloc first use temp" ; V62 tmp45 [V62,T06] ( 3, 12 ) byref -> rax "Span.get_Item ptrToSpan" ; V63 tmp46 [V63,T11] ( 5, 10 ) int -> [rbp-0x5C] spill-single-def "Inline stloc first use temp" ;* V64 tmp47 [V64 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V65 tmp48 [V65,T07] ( 3, 12 ) byref -> rdx "Inlining Arg" ;* V66 tmp49 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V67 tmp50 [V67,T13] ( 2, 8 ) byref -> rsi "Inlining Arg" ; V68 tmp51 [V68,T17] ( 2, 8 ) int -> rdi "Inlining Arg" ;* V69 tmp52 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V70 tmp53 [V70 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V71 tmp54 [V71,T14] ( 2, 8 ) byref -> r15 "Inlining Arg" ; V72 tmp55 [V72,T18] ( 2, 8 ) long -> rdx "Inlining Arg" ;* V73 tmp56 [V73 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V74 tmp57 [V74,T21] ( 4, 4 ) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V75 tmp58 [V75,T02] ( 9, 16 ) int -> rbx single-def "field V01._length (fldOffset=0x8)" P-INDEP ;* V76 tmp59 [V76 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp60 [V77 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP ; V78 tmp61 [V78,T45] ( 2, 1 ) byref -> rdi single-def "field V24._reference (fldOffset=0x0)" P-INDEP ;* V79 tmp62 [V79,T57] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP ; V80 tmp63 [V80,T46] ( 2, 1 ) byref -> rcx single-def "field V33._reference (fldOffset=0x0)" P-INDEP ; V81 tmp64 [V81,T51] ( 2, 1 ) int -> rax "field V33._length (fldOffset=0x8)" P-INDEP ; V82 tmp65 [V82,T47] ( 2, 1 ) byref -> rsi single-def "field V34._reference (fldOffset=0x0)" P-INDEP ; V83 tmp66 [V83,T52] ( 2, 1 ) int -> rdx "field V34._length (fldOffset=0x8)" P-INDEP ; V84 tmp67 [V84,T48] ( 2, 1 ) byref -> rdi single-def "field V35._reference (fldOffset=0x0)" P-INDEP ; V85 tmp68 [V85,T53] ( 2, 1 ) int -> rsi "field V35._length (fldOffset=0x8)" P-INDEP ;* V86 tmp69 [V86 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP ;* V87 tmp70 [V87 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP ;* V88 tmp71 [V88 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V89 tmp72 [V89 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP ; V90 tmp73 [V90,T49] ( 2, 1 ) byref -> rdx single-def "field V38._reference (fldOffset=0x0)" P-INDEP ; V91 tmp74 [V91,T54] ( 2, 1 ) int -> rcx "field V38._length (fldOffset=0x8)" P-INDEP ;* V92 tmp75 [V92 ] ( 0, 0 ) byref -> zero-ref "field V39._reference (fldOffset=0x0)" P-INDEP ;* V93 tmp76 [V93 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0x8)" P-INDEP ; V94 tmp77 [V94,T42] ( 3, 1.50) byref -> rdx "field V40._reference (fldOffset=0x0)" P-INDEP ; V95 tmp78 [V95,T43] ( 3, 1.50) int -> rcx "field V40._length (fldOffset=0x8)" P-INDEP ;* V96 tmp79 [V96 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V97 tmp80 [V97 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP ; V98 tmp81 [V98,T50] ( 2, 1 ) byref -> rdx single-def "field V44._reference (fldOffset=0x0)" P-INDEP ; V99 tmp82 [V99,T55] ( 2, 1 ) int -> rcx "field V44._length (fldOffset=0x8)" P-INDEP ;* V100 tmp83 [V100 ] ( 0, 0 ) byref -> zero-ref "field V50._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp84 [V101 ] ( 0, 0 ) int -> zero-ref "field V50._length (fldOffset=0x8)" P-INDEP ;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP ;* V103 tmp86 [V103 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V104 tmp87 [V104 ] ( 0, 0 ) byref -> zero-ref "field V53._reference (fldOffset=0x0)" P-INDEP ;* V105 tmp88 [V105 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP ;* V106 tmp89 [V106 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V107 tmp90 [V107 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP ;* V108 tmp91 [V108 ] ( 0, 0 ) byref -> zero-ref "field V64._reference (fldOffset=0x0)" P-INDEP ;* V109 tmp92 [V109 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0x8)" P-INDEP ;* V110 tmp93 [V110 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V111 tmp94 [V111 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP ;* V112 tmp95 [V112 ] ( 0, 0 ) byref -> zero-ref "field V69._reference (fldOffset=0x0)" P-INDEP ;* V113 tmp96 [V113 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP ; V114 tmp97 [V114,T31] ( 3, 3 ) ref -> rdi single-def "argument with side effect" ; V115 tmp98 [V115,T08] ( 3, 12 ) ref -> rdi "argument with side effect" ; V116 GsCookie [V116 ] ( 1, 1 ) long -> [rbp-0x70] do-not-enreg[X] addr-exposed "GSSecurityCookie" ; V117 PSPSym [V117,T56] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym" -; V118 cse0 [V118,T27] ( 3, 5 ) long -> r12 "CSE - moderate" +; V118 cse0 [V118,T26] ( 3, 5 ) long -> r12 "CSE - moderate" ; V119 cse1 [V119,T22] ( 3, 6 ) int -> rax "CSE - moderate" ; V120 cse2 [V120,T23] ( 3, 6 ) int -> rdi "CSE - moderate" ; V121 cse3 [V121,T04] ( 7, 14 ) int -> [rbp-0x60] spill-single-def "CSE - moderate" ; V122 cse4 [V122,T24] ( 3, 6 ) int -> rdi "CSE - moderate" ; V123 rat0 [V123,T33] ( 3, 2.80) long -> r11 "fgMakeTemp is creating a new local variable" ; V124 rat1 [V124,T40] ( 3, 2 ) long -> r12 "runtime lookup" ; V125 rat2 [V125,T34] ( 3, 2.80) long -> r12 "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 88 G_M1718_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 88 lea rbp, [rsp+0x80] xor eax, eax mov qword ptr [rbp-0x58], rax vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x50], ymm8 mov qword ptr [rbp-0x80], rsp mov qword ptr [rbp-0x30], rdi mov qword ptr [rbp-0x70], 0xD1FFAB1E mov r15, rdi mov r13, rsi mov ebx, edx mov r14, rcx ;; size=65 bbWeight=1 PerfScore 14.33 G_M1718_IG02: mov rsi, qword ptr [r15+0x10] mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rdi jne G_M1718_IG10 ;; size=23 bbWeight=1 PerfScore 6.25 G_M1718_IG03: mov rsi, r14 mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.String] call CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax je SHORT G_M1718_IG08 mov rdi, r13 mov esi, ebx mov rdx, gword ptr [rax+0x08] mov ecx, dword ptr [rax+0x10] test rdx, rdx jne SHORT G_M1718_IG04 test ecx, ecx - jne G_M1718_IG42 + jne G_M1718_IG41 xor rdx, rdx xor ecx, ecx jmp SHORT G_M1718_IG05 ;; size=54 bbWeight=0.50 PerfScore 6.12 G_M1718_IG04: - mov rax, 0xD1FFAB1E ; System.String[] - cmp qword ptr [rdx], rax - jne G_M1718_IG41 cmp dword ptr [rdx+0x08], ecx - jb G_M1718_IG42 + jb G_M1718_IG41 add rdx, 16 - ;; size=32 bbWeight=0.50 PerfScore 4.25 + ;; size=13 bbWeight=0.50 PerfScore 2.12 G_M1718_IG05: mov rax, 0xD1FFAB1E ; code for System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String call [rax]System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String cmp qword ptr [rbp-0x70], 0xD1FFAB1E je SHORT G_M1718_IG06 call CORINFO_HELP_FAIL_FAST ;; size=27 bbWeight=0.50 PerfScore 3.62 G_M1718_IG06: nop ;; size=1 bbWeight=0.50 PerfScore 0.12 G_M1718_IG07: lea rsp, [rbp-0x28] pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M1718_IG08: mov rdi, r14 test rdi, rdi je SHORT G_M1718_IG10 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M1718_IG09: mov rsi, 0xD1FFAB1E ; System.String[] cmp qword ptr [rdi], rsi je SHORT G_M1718_IG12 ;; size=15 bbWeight=0.25 PerfScore 1.06 G_M1718_IG10: test r14, r14 - je G_M1718_IG43 + je G_M1718_IG42 mov rdi, qword ptr [r15+0x10] mov r11, qword ptr [rdi+0x10] test r11, r11 je SHORT G_M1718_IG15 ;; size=22 bbWeight=0.50 PerfScore 3.25 G_M1718_IG11: mov rdi, r14 call [r11] mov gword ptr [rbp-0x68], rax jmp SHORT G_M1718_IG16 ;; size=12 bbWeight=0.50 PerfScore 3.12 G_M1718_IG12: mov rsi, r13 mov edx, ebx lea rcx, bword ptr [rdi+0x10] mov eax, dword ptr [rdi+0x08] mov rdi, rsi mov esi, edx mov rdx, rcx mov ecx, eax mov rax, 0xD1FFAB1E ; code for System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String call [rax]System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String cmp qword ptr [rbp-0x70], 0xD1FFAB1E je SHORT G_M1718_IG13 call CORINFO_HELP_FAIL_FAST ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M1718_IG13: nop ;; size=1 bbWeight=0.50 PerfScore 0.12 G_M1718_IG14: lea rsp, [rbp-0x28] pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M1718_IG15: mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r11, rax jmp SHORT G_M1718_IG11 ;; size=23 bbWeight=0.10 PerfScore 0.38 G_M1718_IG16: mov rdi, rax mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne SHORT G_M1718_IG17 mov r14, 0xD1FFAB1E ; '' jmp G_M1718_IG38 ;; size=35 bbWeight=0.50 PerfScore 3.50 G_M1718_IG17: mov rdi, qword ptr [r15+0x10] mov r12, qword ptr [rdi+0x18] test r12, r12 je SHORT G_M1718_IG19 ;; size=13 bbWeight=0.50 PerfScore 2.62 G_M1718_IG18: jmp SHORT G_M1718_IG20 ;; size=2 bbWeight=0.40 PerfScore 0.80 G_M1718_IG19: mov rdi, r15 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov r12, rax ;; size=21 bbWeight=0.10 PerfScore 0.18 G_M1718_IG20: mov r11, r12 mov rdi, gword ptr [rbp-0x68] call [r11] mov gword ptr [rbp-0x38], rax lea rdi, bword ptr [rbp-0x38] cmp gword ptr [rbp-0x38], 0 jne SHORT G_M1718_IG21 xor r15, r15 jmp SHORT G_M1718_IG22 ;; size=30 bbWeight=0.50 PerfScore 5.50 G_M1718_IG21: mov rdi, gword ptr [rdi] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x08]System.Object:ToString():System.String:this mov r15, rax ;; size=16 bbWeight=0.50 PerfScore 4.62 G_M1718_IG22: mov rdi, gword ptr [rbp-0x68] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne SHORT G_M1718_IG23 mov rdi, 0xD1FFAB1E ; '' test r15, r15 cmove r15, rdi mov r14, r15 jmp G_M1718_IG38 ;; size=46 bbWeight=0.50 PerfScore 4.25 G_M1718_IG23: test dword ptr [rsp], esp sub rsp, 512 lea rdi, [rsp] xor rsi, rsi mov gword ptr [rbp-0x58], rsi mov bword ptr [rbp-0x48], rdi mov dword ptr [rbp-0x40], 256 ;; size=31 bbWeight=0.50 PerfScore 3.50 G_M1718_IG24: mov dword ptr [rbp-0x50], esi test r15, r15 je SHORT G_M1718_IG25 mov edi, dword ptr [rbp-0x50] cmp dword ptr [r15+0x08], 1 jne G_M1718_IG34 cmp edi, dword ptr [rbp-0x40] jae G_M1718_IG34 cmp edi, dword ptr [rbp-0x40] jae G_M1718_IG31 mov rsi, bword ptr [rbp-0x48] mov eax, edi movzx rcx, word ptr [r15+0x0C] mov word ptr [rsi+2*rax], cx inc edi mov dword ptr [rbp-0x50], edi ;; size=60 bbWeight=0.50 PerfScore 9.38 G_M1718_IG25: test ebx, ebx je SHORT G_M1718_IG28 ;; size=4 bbWeight=4 PerfScore 5.00 G_M1718_IG26: mov edi, dword ptr [rbp-0x40] sub edi, ebx cmp dword ptr [rbp-0x50], edi jle SHORT G_M1718_IG27 lea rdi, [rbp-0x58] mov esi, ebx mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this call [rax]System.Text.ValueStringBuilder:Grow(int):this ;; size=28 bbWeight=2 PerfScore 16.50 G_M1718_IG27: mov edx, dword ptr [rbp-0x50] mov edi, dword ptr [rbp-0x40] cmp edx, edi ja G_M1718_IG33 mov rsi, bword ptr [rbp-0x48] mov eax, edx lea rsi, bword ptr [rsi+2*rax] sub edi, edx cmp ebx, edi ja SHORT G_M1718_IG32 mov edx, ebx add rdx, rdx mov rdi, rsi mov rsi, r13 mov rax, 0xD1FFAB1E ; code for System.Buffer:Memmove(byref,byref,ulong) call [rax]System.Buffer:Memmove(byref,byref,ulong) mov edi, ebx add edi, dword ptr [rbp-0x50] mov dword ptr [rbp-0x50], edi ;; size=61 bbWeight=2 PerfScore 28.00 G_M1718_IG28: mov r11, r12 mov rdi, gword ptr [rbp-0x68] call [r11] mov gword ptr [rbp-0x38], rax lea r14, bword ptr [rbp-0x58] lea r15, bword ptr [rbp-0x38] cmp gword ptr [rbp-0x38], 0 jne SHORT G_M1718_IG35 ;; size=29 bbWeight=4 PerfScore 37.00 G_M1718_IG29: mov rdi, gword ptr [rbp-0x68] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax jne G_M1718_IG25 ;; size=25 bbWeight=4 PerfScore 22.00 G_M1718_IG30: lea rdi, [rbp-0x58] mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:ToString():System.String:this call [rax]System.Text.ValueStringBuilder:ToString():System.String:this mov r14, rax jmp G_M1718_IG38 ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M1718_IG31: call CORINFO_HELP_RNGCHKFAIL ;; size=5 bbWeight=0 PerfScore 0.00 G_M1718_IG32: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentException_DestinationTooShort() call [rax]System.ThrowHelper:ThrowArgumentException_DestinationTooShort() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M1718_IG33: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M1718_IG34: lea rdi, [rbp-0x58] mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:AppendSlow(System.String):this call [rax]System.Text.ValueStringBuilder:AppendSlow(System.String):this jmp G_M1718_IG25 ;; size=24 bbWeight=0.50 PerfScore 3.00 G_M1718_IG35: mov rdi, gword ptr [r15] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x08]System.Object:ToString():System.String:this mov r15, rax test r15, r15 je SHORT G_M1718_IG29 mov eax, dword ptr [r14+0x08] mov esi, eax mov ecx, dword ptr [r15+0x08] mov dword ptr [rbp-0x60], ecx cmp ecx, 1 jne SHORT G_M1718_IG36 cmp esi, dword ptr [r14+0x18] jae SHORT G_M1718_IG36 lea rax, bword ptr [r14+0x10] cmp esi, dword ptr [rax+0x08] jae SHORT G_M1718_IG31 mov rcx, bword ptr [rax] mov edi, esi movzx rax, word ptr [r15+0x0C] mov word ptr [rcx+2*rdi], ax inc esi mov dword ptr [r14+0x08], esi jmp G_M1718_IG29 ;; size=79 bbWeight=2 PerfScore 68.00 G_M1718_IG36: mov dword ptr [rbp-0x5C], eax mov esi, dword ptr [r14+0x18] sub esi, ecx cmp esi, eax jge SHORT G_M1718_IG37 mov esi, ecx mov rdi, r14 mov rdx, 0xD1FFAB1E ; code for System.Text.ValueStringBuilder:Grow(int):this call [rdx]System.Text.ValueStringBuilder:Grow(int):this mov ecx, dword ptr [rbp-0x60] ;; size=33 bbWeight=2 PerfScore 18.50 G_M1718_IG37: lea rdx, bword ptr [r14+0x10] mov edi, dword ptr [rdx+0x08] mov eax, dword ptr [rbp-0x5C] cmp eax, edi ja G_M1718_IG33 mov rdx, bword ptr [rdx] mov esi, eax lea rsi, bword ptr [rdx+2*rsi] sub edi, eax cmp ecx, edi ja G_M1718_IG32 add r15, 12 mov edx, ecx add rdx, rdx mov rdi, rsi mov rsi, r15 mov rax, 0xD1FFAB1E ; code for System.Buffer:Memmove(byref,byref,ulong) call [rax]System.Buffer:Memmove(byref,byref,ulong) mov r15d, dword ptr [rbp-0x60] add dword ptr [r14+0x08], r15d jmp G_M1718_IG29 ;; size=77 bbWeight=2 PerfScore 39.00 G_M1718_IG38: mov rdi, gword ptr [rbp-0x68] mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this mov rax, r14 cmp qword ptr [rbp-0x70], 0xD1FFAB1E je SHORT G_M1718_IG39 call CORINFO_HELP_FAIL_FAST ;; size=35 bbWeight=0.50 PerfScore 4.25 G_M1718_IG39: nop ;; size=1 bbWeight=0.50 PerfScore 0.12 G_M1718_IG40: lea rsp, [rbp-0x28] pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M1718_IG41: - mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException() - call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M1718_IG42: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M1718_IG43: +G_M1718_IG42: mov edi, 6 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentNullException(int) call [rax]System.ThrowHelper:ThrowArgumentNullException(int) int3 ;; size=18 bbWeight=0 PerfScore 0.00 -G_M1718_IG44: +G_M1718_IG43: push rbp push r15 push r14 push r13 push r12 push rbx push rax mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0x80] ;; size=25 bbWeight=0 PerfScore 0.00 -G_M1718_IG45: +G_M1718_IG44: cmp gword ptr [rbp-0x68], 0 - je SHORT G_M1718_IG46 + je SHORT G_M1718_IG45 mov rdi, gword ptr [rbp-0x68] mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this ;; size=24 bbWeight=0 PerfScore 0.00 -G_M1718_IG46: +G_M1718_IG45: nop ;; size=1 bbWeight=0 PerfScore 0.00 -G_M1718_IG47: +G_M1718_IG46: add rsp, 8 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1191, prolog size 65, PerfScore 453.60, instruction count 330, allocated bytes for code 1191 (MethodHash=18d2f949) for method System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts) +; Total bytes of code 1159, prolog size 65, PerfScore 448.27, instruction count 324, allocated bytes for code 1159 (MethodHash=18d2f949) for method System.String:JoinCore[System.__Canon](System.ReadOnlySpan`1[ushort],System.Collections.Generic.IEnumerable`1[System.__Canon]):System.String (FullOpts) ```
MihuBot commented 5 months ago

@EgorBo