Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix the EH-write thru scenario #45248

Merged
merged 3 commits into from
Dec 2, 2020
Merged

Conversation

kunalspathak
Copy link
Member

Fix the scenario for EH-Writethru case that was broken with my #44977 change. Below diffs compare the master (before my changes in #44977) vs. PR.

Code size diffs:

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 51297868
Total bytes of diff: 51312150
Total bytes of delta: 14282 (0.03% of base)
    diff is a regression.

Top file regressions (bytes):
        2561 : System.Private.CoreLib.dasm (0.05% of base)
        1453 : System.Linq.Parallel.dasm (0.09% of base)
        1443 : System.Linq.dasm (0.16% of base)
        1219 : System.Collections.Immutable.dasm (0.11% of base)
         884 : FSharp.Core.dasm (0.03% of base)
         719 : System.Collections.dasm (0.16% of base)
         568 : Microsoft.CodeAnalysis.dasm (0.03% of base)
         532 : Newtonsoft.Json.dasm (0.06% of base)
         522 : System.Numerics.Tensors.dasm (0.16% of base)
         498 : System.Threading.Tasks.Dataflow.dasm (0.06% of base)
         473 : CommandLine.dasm (0.11% of base)
         340 : System.Threading.Channels.dasm (0.19% of base)
         319 : System.Private.Xml.dasm (0.01% of base)
         250 : System.Data.Common.dasm (0.02% of base)
         223 : System.Collections.Concurrent.dasm (0.07% of base)
         219 : System.Linq.Expressions.dasm (0.03% of base)
         201 : System.ComponentModel.Composition.dasm (0.06% of base)
         175 : Microsoft.Diagnostics.FastSerialization.dasm (0.18% of base)
         169 : Microsoft.Diagnostics.Tracing.TraceEvent.dasm (0.01% of base)
         140 : System.Net.Http.dasm (0.02% of base)

Top file improvements (bytes):
        -109 : System.Security.Cryptography.Primitives.dasm (-0.31% of base)
         -75 : System.Security.Cryptography.Pkcs.dasm (-0.02% of base)
         -72 : System.Net.Connections.dasm (-0.23% of base)
         -47 : System.Security.Cryptography.Algorithms.dasm (-0.01% of base)
         -45 : System.Net.Primitives.dasm (-0.07% of base)
         -43 : System.IO.Pipelines.dasm (-0.06% of base)
         -14 : System.Net.WebClient.dasm (-0.03% of base)
         -13 : Microsoft.VisualBasic.Core.dasm (-0.00% of base)
         -11 : System.ServiceProcess.ServiceController.dasm (-0.04% of base)
         -10 : System.Security.Cryptography.Cng.dasm (-0.01% of base)
          -8 : System.Net.Quic.dasm (-0.01% of base)
          -8 : System.Transactions.Local.dasm (-0.01% of base)
          -6 : System.Net.Requests.dasm (-0.01% of base)
          -4 : xunit.runner.reporters.netcoreapp10.dasm (-0.01% of base)
          -3 : Microsoft.Extensions.Hosting.Abstractions.dasm (-0.04% of base)
          -2 : System.Data.Odbc.dasm (-0.00% of base)
          -2 : System.Net.Http.WinHttpHandler.dasm (-0.00% of base)
          -2 : System.Resources.Extensions.dasm (-0.01% of base)
          -1 : System.Text.Encoding.CodePages.dasm (-0.00% of base)
          -1 : System.Threading.dasm (-0.01% of base)

125 total files with Code Size differences (21 improved, 104 regressed), 143 unchanged.

Top method regressions (bytes):
         204 (11.14% of base) : CommandLine.dasm - <>c__DisplayClass0_2`1[__Canon][System.__Canon]:<Build>b__15():System.__Canon:this
         161 (14.22% of base) : System.Linq.Parallel.dasm - OrderedExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         143 (28.66% of base) : System.Linq.Parallel.dasm - ExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         143 (19.78% of base) : System.Linq.Parallel.dasm - OrderedIntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         128 (26.07% of base) : System.Linq.Parallel.dasm - IntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         112 (10.10% of base) : CommandLine.dasm - <>c__DisplayClass0_2`1[__Canon][System.__Canon]:<Build>b__23():System.__Canon:this
         109 (19.19% of base) : System.Linq.Parallel.dasm - OrderedDistinctQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         106 (12.90% of base) : Microsoft.CodeAnalysis.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[__Canon,__Canon][System.__Canon,System.__Canon]:GetTypeSymbol(AssemblyQualifiedTypeName,byref):System.__Canon:this
          97 ( 6.88% of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1[__Canon][System.__Canon]:GetLinqDataView():System.Data.LinqDataView:this
          95 (16.90% of base) : System.Linq.Parallel.dasm - ReverseQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
          95 (10.87% of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[__Canon][System.__Canon]:GetArrayString(bool):System.String:this
          89 (10.81% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,ResourceLocator][System.__Canon,System.Resources.ResourceLocator]:Resize(int,bool):this
          84 ( 2.05% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - StateMachineMethodToClassRewriter[__Canon][System.__Canon]:VisitTryStatement(Microsoft.CodeAnalysis.VisualBasic.BoundTryStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
          83 ( 5.67% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,__Canon][System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):bool:this
          80 (10.18% of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.DefaultMergeHelper`2[__Canon,Int64][System.__Canon,System.Int64]:.ctor(System.Linq.Parallel.PartitionedStream`2[__Canon,Int64],bool,int,System.Threading.Tasks.TaskScheduler,System.Linq.Parallel.CancellationState,int):this
          79 (13.72% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[__Canon][System.__Canon]:SetOrAdd(int,System.__Canon,System.Collections.Generic.IEqualityComparer`1[__Canon],bool,byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[__Canon]:this
          79 ( 5.49% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,IntPtr][System.__Canon,System.IntPtr]:TryInsert(System.__Canon,long,ubyte):bool:this
          79 ( 5.44% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Int64][System.__Canon,System.Int64]:TryInsert(System.__Canon,long,ubyte):bool:this
          78 ( 5.76% of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[__Canon][System.__Canon]:RemoveAt(int,int):this
          78 ( 5.42% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Int32][System.__Canon,System.Int32]:TryInsert(System.__Canon,int,ubyte):bool:this

Top method improvements (bytes):
         -95 (-2.03% of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSite`1[__Canon][System.__Canon]:CreateCustomUpdateDelegate(System.Reflection.MethodInfo):System.__Canon:this
         -76 (-2.67% of base) : System.IO.Pipelines.dasm - <ReadAsyncInternal>d__27:MoveNext():this
         -76 (-2.59% of base) : System.Net.Connections.dasm - <ReadAsync>d__20:MoveNext():this
         -65 (-1.42% of base) : System.Private.CoreLib.dasm - ReferenceTypeHelper`1[__Canon][System.__Canon]:GetPropertyGetter(System.Reflection.PropertyInfo):System.Func`2[PropertyValue,PropertyValue]:this
         -57 (-3.93% of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(System.Security.Cryptography.SymmetricAlgorithm,System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
         -47 (-1.33% of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:AgeCookies(System.String):bool:this
         -46 (-1.00% of base) : System.DirectoryServices.AccountManagement.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:GetGroupsMemberOf(System.DirectoryServices.AccountManagement.Principal):System.DirectoryServices.AccountManagement.ResultSet:this
         -46 (-1.58% of base) : System.Net.Http.dasm - <GetStringAsyncCore>d__41:MoveNext():this
         -46 (-0.94% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):System.Byte[]
         -40 (-1.09% of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation:Save():this
         -34 (-4.77% of base) : FSharp.Core.dasm - Parallel@1229-3[__Canon][System.__Canon]:Invoke(int,Microsoft.FSharp.Control.FSharpAsync`1[__Canon]):Microsoft.FSharp.Core.Unit:this
         -30 (-0.66% of base) : Microsoft.CodeAnalysis.dasm - Microsoft.CodeAnalysis.CommonCompiler:RunCore(System.IO.TextWriter,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken):int:this
         -23 (-1.53% of base) : System.Private.Xml.Linq.dasm - <LoadAsyncInternal>d__57:MoveNext():this
         -22 (-1.01% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[ClosureDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,bool):Microsoft.CodeAnalysis.CodeGen.MethodBody
         -20 (-1.11% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:EnsureNonTypeMemberNamesAreLoaded():this
         -20 (-1.07% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:EnsureNonTypeMemberNamesAreLoaded():this
         -20 (-1.88% of base) : System.Private.Xml.dasm - <ReadContentAsAsync>d__185:MoveNext():this
         -19 (-1.70% of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBaseReader:ReadBytes(System.Text.Encoding,int,int,System.Byte[],int,int,bool):int:this
         -18 (-2.28% of base) : Microsoft.CodeAnalysis.dasm - Microsoft.CodeAnalysis.TypeNameDecoder`2[__Canon,__Canon][System.__Canon,System.__Canon]:ResolveTypeArguments(Microsoft.CodeAnalysis.MetadataHelpers+AssemblyQualifiedTypeName[],byref):System.Collections.Immutable.ImmutableArray`1[KeyValuePair`2]:this
         -18 (-4.50% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this

Top method regressions (percentages):
         143 (28.66% of base) : System.Linq.Parallel.dasm - ExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         128 (26.07% of base) : System.Linq.Parallel.dasm - IntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
          73 (20.68% of base) : Newtonsoft.Json.dasm - <Annotations>d__182`1[__Canon][System.__Canon]:MoveNext():bool:this
         143 (19.78% of base) : System.Linq.Parallel.dasm - OrderedIntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
         109 (19.19% of base) : System.Linq.Parallel.dasm - OrderedDistinctQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
          21 (17.80% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:InsertRange(int,System.Collections.Generic.IEnumerable`1[__Canon]):this
          38 (17.51% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[__Canon][System.__Canon]:FindAll(System.Predicate`1[__Canon]):System.Collections.Generic.List`1[__Canon]:this
          60 (17.19% of base) : System.Linq.Parallel.dasm - OrderedPipeliningMergeEnumerator[__Canon,Int64][System.__Canon,System.Int64]:MoveNext():bool:this
          95 (16.90% of base) : System.Linq.Parallel.dasm - ReverseQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
          68 (16.39% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Boolean][System.__Canon,System.Boolean]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
          68 (16.39% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,IntPtr][System.__Canon,System.IntPtr]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
          68 (16.39% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Int32][System.__Canon,System.Int32]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
          68 (16.39% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,ResourceLocator][System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
          68 (16.39% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Int64][System.__Canon,System.Int64]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
          39 (15.79% of base) : System.Linq.Parallel.dasm - DistinctQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
          25 (15.15% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[__Canon]):this
          35 (15.09% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[__Canon][System.__Canon]:RemoveAll(System.Predicate`1[__Canon]):int:this
          55 (14.99% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:set_KeyComparer(System.Collections.Generic.IEqualityComparer`1[__Canon]):this
          76 (14.93% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:IndexOf(System.__Canon,int,int,System.Collections.Generic.IEqualityComparer`1[__Canon]):int:this (2 methods)
         161 (14.22% of base) : System.Linq.Parallel.dasm - OrderedExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this

Top method improvements (percentages):
         -13 (-8.67% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:CopyToPairs(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Int64][],int):this
         -11 (-6.01% of base) : Microsoft.CodeAnalysis.dasm - Roslyn.Utilities.TextKeyedCache`1[__Canon][System.__Canon]:AddSharedEntry(int,SharedEntryValue[__Canon]):this
          -7 (-5.83% of base) : System.ServiceProcess.ServiceController.dasm - System.ServiceProcess.ServiceBase:DeferredSessionChange(int,int):this
          -3 (-5.36% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[__Canon]):System.Collections.Immutable.ImmutableHashSet`1[__Canon]:this
          -3 (-5.36% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:AddRange(System.Collections.Generic.IEnumerable`1[KeyValuePair`2]):System.Collections.Immutable.ImmutableDictionary`2[__Canon,Int64]:this
          -3 (-5.08% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:AddRange(System.Collections.Generic.IEnumerable`1[KeyValuePair`2]):System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64]:this
          -3 (-4.84% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:FindIndex(System.Predicate`1[__Canon]):int:this
          -3 (-4.84% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:SetItems(System.Collections.Generic.IEnumerable`1[KeyValuePair`2]):System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64]:this
         -34 (-4.77% of base) : FSharp.Core.dasm - Parallel@1229-3[__Canon][System.__Canon]:Invoke(int,Microsoft.FSharp.Control.FSharpAsync`1[__Canon]):Microsoft.FSharp.Core.Unit:this
         -13 (-4.64% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:SetEquals(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
         -12 (-4.63% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsProperSubsetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
         -12 (-4.63% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
         -12 (-4.63% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsSubsetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
         -12 (-4.63% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
         -12 (-4.63% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
          -3 (-4.62% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IComparer`1[__Canon]):bool:this
         -18 (-4.50% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
          -6 (-4.38% of base) : System.Net.Quic.dasm - System.Net.Quic.Implementations.MsQuic.Internal.ResettableCompletionSource`1[Vector`1][System.Numerics.Vector`1[System.Single]]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
          -4 (-4.35% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:FindLastIndex(System.Predicate`1[__Canon]):int:this
          -6 (-4.14% of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlSchemaException:CreateMessage(System.String,System.String[]):System.String

2817 total methods with Code Size differences (747 improved, 2070 regressed), 337810 unchanged.

Perfscore diffs:

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 277538757.02999824
Total PerfScoreUnits of diff: 277662479.10999805
Total PerfScoreUnits of delta: 123722.08 (0.04% of base)
    diff is a regression.

Top file regressions (PerfScoreUnits):
    120733.29 : System.Linq.Parallel.dasm (4.86% of base)
     1681.25 : System.Linq.dasm (0.36% of base)
      855.33 : System.Private.CoreLib.dasm (0.03% of base)
      632.32 : System.Private.Xml.dasm (0.04% of base)
      505.60 : System.Collections.Concurrent.dasm (0.18% of base)
      502.31 : FSharp.Core.dasm (0.03% of base)
      472.19 : System.Collections.Immutable.dasm (0.12% of base)
      416.94 : System.Linq.Expressions.dasm (0.15% of base)
      413.35 : Microsoft.CodeAnalysis.dasm (0.02% of base)
      399.74 : System.Collections.dasm (0.26% of base)
      279.17 : Microsoft.CodeAnalysis.CSharp.dasm (0.01% of base)
      235.95 : System.Threading.Tasks.Parallel.dasm (0.29% of base)
      226.93 : System.Data.Common.dasm (0.00% of base)
      219.89 : Newtonsoft.Json.dasm (0.00% of base)
      214.16 : System.ComponentModel.Composition.dasm (0.16% of base)
      198.85 : System.Configuration.ConfigurationManager.dasm (0.11% of base)
      191.41 : System.Threading.Tasks.Dataflow.dasm (0.06% of base)
      184.52 : System.Private.Xml.Linq.dasm (0.26% of base)
      141.10 : System.Numerics.Tensors.dasm (0.11% of base)
      137.52 : CommandLine.dasm (0.12% of base)

Top file improvements (PerfScoreUnits):
    -6964.66 : System.DirectoryServices.dasm (-3.50% of base)
      -39.75 : Microsoft.CSharp.dasm (-0.03% of base)
      -36.90 : System.Security.Cryptography.Primitives.dasm (-0.22% of base)
      -20.10 : System.Net.Primitives.dasm (-0.05% of base)
      -14.38 : System.Security.Cryptography.Pkcs.dasm (-0.01% of base)
       -8.82 : System.Security.Cryptography.Algorithms.dasm (-0.01% of base)
       -8.53 : System.Net.Connections.dasm (-0.11% of base)
       -1.78 : System.Net.WebClient.dasm (-0.01% of base)
       -1.60 : System.ServiceProcess.ServiceController.dasm (-0.02% of base)
       -1.30 : System.Transactions.Local.dasm (-0.00% of base)
       -1.25 : System.Security.Cryptography.Cng.dasm (-0.00% of base)
       -1.09 : Microsoft.Extensions.Hosting.dasm (-0.01% of base)
       -0.67 : System.Net.Quic.dasm (-0.00% of base)
       -0.55 : Microsoft.Extensions.Hosting.Abstractions.dasm (-0.03% of base)
       -0.45 : System.Resources.Extensions.dasm (-0.00% of base)
       -0.35 : System.Text.Encoding.CodePages.dasm (-0.00% of base)
       -0.35 : xunit.performance.core.dasm (-0.01% of base)
       -0.15 : xunit.runner.reporters.netcoreapp10.dasm (-0.00% of base)

129 total files with Perf Score differences (18 improved, 111 regressed), 139 unchanged.

Top method regressions (PerfScoreUnits):
    84585.84 ( 7.58% of base) : System.Linq.Parallel.dasm - OrderedExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
    31904.63 ( 9.60% of base) : System.Linq.Parallel.dasm - OrderedIntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
     2768.98 (11.16% of base) : System.Linq.Parallel.dasm - OrderedDistinctQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
      402.53 ( 6.53% of base) : System.Linq.Parallel.dasm - ReverseQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
      257.20 ( 4.05% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Double,Int64][System.Double,System.Int64]:TryAddInternal(double,System.Nullable`1[Int32],long,bool,bool,byref):bool:this
      257.10 ( 3.07% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Vector`1,Int64][System.Numerics.Vector`1[System.Single],System.Int64]:TryAddInternal(System.Numerics.Vector`1[Single],System.Nullable`1[Int32],long,bool,bool,byref):bool:this
      237.93 (13.01% of base) : System.Linq.Parallel.dasm - ExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
      228.18 ( 5.25% of base) : System.Private.Xml.dasm - System.Xml.Xsl.XPath.XPathParser`1[__Canon][System.__Canon]:ParseSubExpr(int):System.__Canon:this
      220.43 (12.16% of base) : System.Linq.Parallel.dasm - IntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
      218.05 ( 4.40% of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[__Canon,Int64][System.__Canon,System.Int64]:MergeSortCooperatively():this
       65.40 ( 3.19% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForAttributeWithArrayArgumentInternal(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
       65.25 ( 4.32% of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[__Canon][System.__Canon]:GetArrayString(bool):System.String:this
       64.70 ( 6.63% of base) : Microsoft.Extensions.Options.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[__Canon][System.__Canon]:.ctor(Microsoft.Extensions.Options.IOptionsFactory`1[__Canon],System.Collections.Generic.IEnumerable`1[__Canon],Microsoft.Extensions.Options.IOptionsMonitorCache`1[__Canon]):this
       64.25 ( 3.68% of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Linq.Expressions.Expression, System.Linq.Expressions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]:this
       56.50 ( 3.30% of base) : System.Threading.Tasks.Parallel.dasm - <>c__DisplayClass44_0`2[Double,Int64][System.Double,System.Int64]:<PartitionerForEachWorker>b__1(byref,int,byref):this
       50.85 ( 5.26% of base) : System.Private.Xml.Linq.dasm - XHashtableState[__Canon][System.__Canon]:Resize():XHashtableState[__Canon]:this
       48.80 ( 0.43% of base) : xunit.execution.dotnet.dasm - <AfterTestCaseStartingAsync>d__9:MoveNext():this
       43.10 ( 0.13% of base) : Microsoft.Diagnostics.FastSerialization.dasm - System.Collections.Generic.SegmentedList`1[__Canon][System.__Canon]:QuickSort(int,int,System.Collections.Generic.IComparer`1[__Canon]):this
       39.05 ( 0.29% of base) : System.Net.HttpListener.dasm - <Process>d__19:MoveNext():this
       36.83 ( 8.46% of base) : CommandLine.dasm - <>c__DisplayClass0_2`1[__Canon][System.__Canon]:<Build>b__15():System.__Canon:this

Top method improvements (PerfScoreUnits):
    -7040.00 (-12.20% of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation:Save():this
      -96.15 (-0.82% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Key,__Canon][System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(Key,System.Nullable`1[Int32],System.__Canon,bool,bool,byref):bool:this
      -47.90 (-3.26% of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:ChooseArrayIndexType(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this
      -39.55 (-4.41% of base) : System.Private.CoreLib.dasm - MemberInfoCache`1[__Canon][System.__Canon]:MergeWithGlobalList(System.__Canon[]):this
      -36.80 (-0.34% of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:AgeCookies(System.String):bool:this
      -32.55 (-9.44% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:CopyToPairs(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Int64][],int):this
      -29.20 (-0.59% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:TryRemoveInternal(System.__Canon,byref,bool,long):bool:this
      -26.60 (-0.50% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):System.Byte[]
      -24.22 (-2.87% of base) : FSharp.Core.dasm - Parallel@1178-1[__Canon][System.__Canon]:Invoke(Microsoft.FSharp.Control.AsyncActivation`1[__Canon]):Microsoft.FSharp.Control.AsyncReturn:this
      -19.92 (-1.75% of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSite`1[__Canon][System.__Canon]:CreateCustomUpdateDelegate(System.Reflection.MethodInfo):System.__Canon:this
      -17.71 (-2.54% of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.CompressedSparseTensor`1[__Canon][System.__Canon]:Reshape(System.ReadOnlySpan`1[Int32]):System.Numerics.Tensors.Tensor`1[__Canon]:this
      -15.60 (-1.02% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Vector`1,Int64][System.Numerics.Vector`1[System.Single],System.Int64]:TryUpdateInternal(System.Numerics.Vector`1[Single],System.Nullable`1[Int32],long,long):bool:this
      -14.20 (-3.36% of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(System.Security.Cryptography.SymmetricAlgorithm,System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
      -10.80 (-6.14% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
      -10.45 (-1.25% of base) : System.Net.Http.dasm - <GetStringAsyncCore>d__41:MoveNext():this
      -10.00 (-4.04% of base) : System.Private.Xml.dasm - System.Xml.Serialization.SoapReflectionImporter:ImportMembersMapping(System.Xml.Serialization.XmlReflectionMember[],System.String,bool,bool,bool,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.MembersMapping:this
       -9.93 (-1.49% of base) : System.IO.Pipelines.dasm - <ReadAsyncInternal>d__27:MoveNext():this
       -9.93 (-1.47% of base) : System.Net.Connections.dasm - <ReadAsync>d__20:MoveNext():this
       -8.40 (-0.76% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Int16,Int64][System.Int16,System.Int64]:TryUpdateInternal(short,System.Nullable`1[Int32],long,long):bool:this
       -8.40 (-0.77% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Int32,Int64][System.Int32,System.Int64]:TryUpdateInternal(int,System.Nullable`1[Int32],long,long):bool:this

Top method regressions (percentages):
        5.85 (16.93% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:InsertRange(int,System.Collections.Generic.IEnumerable`1[__Canon]):this
       13.05 (13.83% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Boolean][System.__Canon,System.Boolean]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
       13.05 (13.83% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,IntPtr][System.__Canon,System.IntPtr]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
       13.05 (13.83% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Int32][System.__Canon,System.Int32]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
       13.05 (13.83% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,ResourceLocator][System.__Canon,System.Resources.ResourceLocator]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
       13.05 (13.83% of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[__Canon,Int64][System.__Canon,System.Int64]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[__Canon]):this
      237.93 (13.01% of base) : System.Linq.Parallel.dasm - ExceptQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
        6.75 (12.47% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[__Canon]):this
       13.40 (12.25% of base) : System.Private.Xml.dasm - <GetActiveRecords>d__34[__Canon][System.__Canon]:MoveNext():bool:this
      220.43 (12.16% of base) : System.Linq.Parallel.dasm - IntersectQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
        9.75 (12.13% of base) : System.Collections.Immutable.dasm - Builder[__Canon,Int64][System.__Canon,System.Int64]:.ctor(System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64]):this
        2.45 (11.95% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:ContainsKey(System.__Canon):bool:this
        2.45 (11.95% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:ValueRef(System.__Canon):byref:this
        2.45 (11.95% of base) : System.Collections.Immutable.dasm - Builder[__Canon,Int64][System.__Canon,System.Int64]:ValueRef(System.__Canon):byref:this
        2.45 (11.64% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:TryGetValue(System.__Canon,byref):bool:this
        2.45 (11.64% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:TryGetKey(System.__Canon,byref):bool:this
       18.61 (11.56% of base) : Newtonsoft.Json.dasm - <Annotations>d__182`1[__Canon][System.__Canon]:MoveNext():bool:this
       11.70 (11.33% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:.ctor(System.__Canon,Node[__Canon],Node[__Canon],bool):this (2 methods)
     2768.98 (11.16% of base) : System.Linq.Parallel.dasm - OrderedDistinctQueryOperatorEnumerator`1[__Canon,Int64][System.__Canon,System.Int64]:MoveNext(byref,byref):bool:this
        6.75 (10.84% of base) : System.Collections.Immutable.dasm - Builder[__Canon][System.__Canon]:.ctor(System.Collections.Immutable.ImmutableSortedSet`1[__Canon]):this

Top method improvements (percentages):
    -7040.00 (-12.20% of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation:Save():this
      -32.55 (-9.44% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:CopyToPairs(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Int64][],int):this
       -1.30 (-8.90% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:Union(System.Collections.Generic.IEnumerable`1[__Canon]):System.Collections.Immutable.ImmutableHashSet`1[__Canon]:this
       -1.30 (-8.90% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:AddRange(System.Collections.Generic.IEnumerable`1[KeyValuePair`2]):System.Collections.Immutable.ImmutableDictionary`2[__Canon,Int64]:this
       -1.30 (-8.58% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:AddRange(System.Collections.Generic.IEnumerable`1[KeyValuePair`2]):System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64]:this
       -1.30 (-8.41% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:SetItems(System.Collections.Generic.IEnumerable`1[KeyValuePair`2]):System.Collections.Immutable.ImmutableSortedDictionary`2[__Canon,Int64]:this
       -1.30 (-7.45% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:FindIndex(System.Predicate`1[__Canon]):int:this
       -1.30 (-7.34% of base) : System.Collections.Immutable.dasm - Node[__Canon,Int64][System.__Canon,System.Int64]:Remove(System.__Canon,System.Collections.Generic.IComparer`1[__Canon],byref):Node[__Canon,Int64]:this
       -1.30 (-7.03% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:Contains(System.__Canon,System.Collections.Generic.IComparer`1[__Canon]):bool:this
      -10.80 (-6.14% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
       -1.30 (-5.87% of base) : System.Collections.Immutable.dasm - Node[__Canon,Int64][System.__Canon,System.Int64]:ContainsKey(System.__Canon,System.Collections.Generic.IComparer`1[__Canon]):bool:this
       -1.30 (-5.83% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.SortedInt32KeyNode`1[__Canon][System.__Canon]:SetItem(int,System.__Canon,System.Collections.Generic.IEqualityComparer`1[__Canon],byref,byref):System.Collections.Immutable.SortedInt32KeyNode`1[__Canon]:this
       -3.61 (-5.82% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:SetEquals(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
       -1.28 (-5.49% of base) : System.Collections.Immutable.dasm - Node[__Canon][System.__Canon]:FindLastIndex(System.Predicate`1[__Canon]):int:this
       -3.64 (-5.45% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsProperSubsetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
       -3.64 (-5.45% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsProperSupersetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
       -3.64 (-5.45% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsSubsetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
       -3.64 (-5.45% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
       -3.64 (-5.45% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet`1[__Canon][System.__Canon]:Overlaps(System.Collections.Generic.IEnumerable`1[__Canon]):bool:this
       -0.75 (-5.05% of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.DictionaryEnumerator`2[__Canon,Int64][System.__Canon,System.Int64]:.ctor(System.Collections.Generic.IEnumerator`1[KeyValuePair`2]):this

2877 total methods with Perf Score differences (810 improved, 2067 regressed), 337750 unchanged.

@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Nov 26, 2020
@kunalspathak
Copy link
Member Author

@dotnet/jit-contrib

@CarolEidt
Copy link
Contributor

Have you analyzed any of the diffs to see where they're coming from? I'm surprised that there would be so many diffs, and I'm wondering if there's some unexpected impact from setting the throw blocks as having an EH boundary out.

@kunalspathak
Copy link
Member Author

Have you analyzed any of the diffs to see where they're coming from? I'm surprised that there would be so many diffs, and I'm wondering if there's some unexpected impact from setting the throw blocks as having an EH boundary out.

Not really. That is on my TODO list before I merge the changes.

@AndyAyersMS
Copy link
Member

Shouldn't we also check if the throw is within a try?

@kunalspathak
Copy link
Member Author

Have you analyzed any of the diffs to see where they're coming from? I'm surprised that there would be so many diffs, and I'm wondering if there's some unexpected impact from setting the throw blocks as having an EH boundary out.

Not really. That is on my TODO list before I merge the changes.

So I performed some analysis on the regression. Majority of the regression we see comes because of add a condition for BBJ_THROW inside hasEHBoundaryOut(). It might be because it needs a further check to make sure that the throw is within a try as @AndyAyersMS pointed out. After adding that check inside hasEHBoundaryOut() (I hope that is the right way to check if throw is inside a try/handler region), I see fewer regression:

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 51297868
Total bytes of diff: 51302109
Total bytes of delta: 4241 (0.01% of base)
    diff is a regression.

Top file regressions (bytes):
        1134 : System.Linq.dasm (0.12% of base)
         348 : FSharp.Core.dasm (0.01% of base)
         335 : System.Private.CoreLib.dasm (0.01% of base)
         296 : Microsoft.CodeAnalysis.dasm (0.02% of base)
         230 : System.Linq.Expressions.dasm (0.03% of base)
         190 : System.ComponentModel.Composition.dasm (0.06% of base)
         178 : System.Collections.dasm (0.04% of base)
         153 : System.Threading.Channels.dasm (0.09% of base)
         152 : System.Collections.Immutable.dasm (0.01% of base)
         130 : System.Collections.Concurrent.dasm (0.04% of base)
         114 : Newtonsoft.Json.dasm (0.01% of base)
         104 : System.Data.Common.dasm (0.01% of base)
          98 : Microsoft.Diagnostics.Tracing.TraceEvent.dasm (0.00% of base)
          96 : System.Configuration.ConfigurationManager.dasm (0.03% of base)
          93 : System.Linq.Parallel.dasm (0.01% of base)
          91 : System.Net.Http.dasm (0.01% of base)
          77 : Microsoft.CodeAnalysis.CSharp.dasm (0.00% of base)
          71 : CommandLine.dasm (0.02% of base)
          66 : System.ComponentModel.TypeConverter.dasm (0.02% of base)
          58 : System.Private.Xml.dasm (0.00% of base)

Top file improvements (bytes):
        -109 : System.Security.Cryptography.Primitives.dasm (-0.31% of base)
         -75 : System.Security.Cryptography.Pkcs.dasm (-0.02% of base)
         -72 : System.Net.Connections.dasm (-0.23% of base)
         -47 : System.Security.Cryptography.Algorithms.dasm (-0.01% of base)
         -45 : System.Net.Primitives.dasm (-0.07% of base)
         -43 : System.IO.Pipelines.dasm (-0.06% of base)
         -37 : System.Threading.Tasks.Dataflow.dasm (-0.00% of base)
         -30 : System.Private.DataContractSerialization.dasm (-0.00% of base)
         -23 : System.Numerics.Tensors.dasm (-0.01% of base)
         -21 : System.IO.FileSystem.dasm (-0.02% of base)
         -19 : System.DirectoryServices.AccountManagement.dasm (-0.01% of base)
         -14 : System.Net.WebClient.dasm (-0.03% of base)
         -13 : Microsoft.VisualBasic.Core.dasm (-0.00% of base)
         -11 : System.ServiceProcess.ServiceController.dasm (-0.04% of base)
         -10 : System.Security.Cryptography.Cng.dasm (-0.01% of base)
          -9 : Microsoft.Extensions.Hosting.dasm (-0.03% of base)
          -8 : System.Net.Quic.dasm (-0.01% of base)
          -8 : System.Transactions.Local.dasm (-0.01% of base)
          -7 : System.Text.Json.dasm (-0.00% of base)
          -6 : System.Net.Requests.dasm (-0.01% of base)

119 total files with Code Size differences (29 improved, 90 regressed), 149 unchanged.
Details
Top method regressions (bytes):
          29 ( 0.75% of base) : System.Diagnostics.Process.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):bool:this
          29 ( 1.52% of base) : System.Linq.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[Vector`1],System.Func`2[Vector`1,Nullable`1]):System.Nullable`1[Double] (3 methods)
          25 ( 0.67% of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:SendRequestHelper(System.DirectoryServices.Protocols.DirectoryRequest,byref):int:this
          22 ( 1.49% of base) : System.Threading.Channels.dasm - BoundedChannelWriter[Vector`1][System.Numerics.Vector`1[System.Single]]:WriteAsync(System.Numerics.Vector`1[Single],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
          21 ( 3.23% of base) : Microsoft.CodeAnalysis.dasm - Roslyn.Utilities.EnumerableExtensions:SequenceEqual(System.Collections.Generic.IEnumerable`1[Vector`1],System.Collections.Generic.IEnumerable`1[Vector`1],System.Func`3[Vector`1,Vector`1,Boolean]):bool
          16 ( 1.85% of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.ExportProvider:GetExportsCore(System.String):System.Collections.Generic.IEnumerable`1[__Canon]:this (2 methods)
          16 ( 1.88% of base) : System.Private.Xml.dasm - System.Xml.Schema.XdrValidator:CheckDefaultValue(System.String,System.Xml.Schema.SchemaAttDef,System.Xml.Schema.SchemaInfo,System.Xml.XmlNamespaceManager,System.Xml.XmlNameTable,System.Object,System.Xml.Schema.ValidationEventHandler,System.String,int,int)
          16 ( 1.47% of base) : System.Private.Xml.dasm - System.Xml.Xsl.Qil.QilScopedVisitor:BeforeVisit(System.Xml.Xsl.Qil.QilNode):this
          16 ( 1.47% of base) : System.Private.Xml.dasm - System.Xml.Xsl.Qil.QilScopedVisitor:AfterVisit(System.Xml.Xsl.Qil.QilNode):this
          15 ( 2.27% of base) : System.Linq.dasm - System.Linq.Enumerable:Min(System.Collections.Generic.IEnumerable`1[Vector`1],System.Func`2[Vector`1,Nullable`1]):System.Nullable`1[Double]
          14 ( 1.26% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForAttributeWithArrayArgumentInternal(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
          14 ( 0.47% of base) : Newtonsoft.Json.dasm - Newtonsoft.Json.Schema.JsonSchemaWriter:WriteSchema(Newtonsoft.Json.Schema.JsonSchema):this
          14 ( 2.60% of base) : System.Collections.Immutable.dasm - System.Linq.ImmutableArrayExtensions:SequenceEqual(System.Collections.Immutable.ImmutableArray`1[Vector`1],System.Collections.Generic.IEnumerable`1[Vector`1],System.Collections.Generic.IEqualityComparer`1[Vector`1]):bool
          14 ( 1.19% of base) : System.Linq.dasm - System.Linq.Enumerable:SequenceEqual(System.Collections.Generic.IEnumerable`1[Vector`1],System.Collections.Generic.IEnumerable`1[Vector`1],System.Collections.Generic.IEqualityComparer`1[Vector`1]):bool
          14 ( 0.34% of base) : System.Private.CoreLib.dasm - <AsyncModeCopyToAsync>d__129:MoveNext():this
          13 ( 0.52% of base) : System.Text.Json.dasm - <ReadAsync>d__19`1[__Canon][System.__Canon]:MoveNext():this
          13 ( 1.34% of base) : System.Threading.Channels.dasm - BoundedChannelWriter[__Canon][System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
          13 ( 1.42% of base) : System.Threading.Channels.dasm - BoundedChannelWriter[Byte][System.Byte]:WriteAsync(ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
          13 ( 1.42% of base) : System.Threading.Channels.dasm - BoundedChannelWriter[Int16][System.Int16]:WriteAsync(short,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
          13 ( 1.44% of base) : System.Threading.Channels.dasm - BoundedChannelWriter[Int32][System.Int32]:WriteAsync(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this

Top method improvements (bytes):
         -76 (-2.67% of base) : System.IO.Pipelines.dasm - <ReadAsyncInternal>d__27:MoveNext():this
         -76 (-2.59% of base) : System.Net.Connections.dasm - <ReadAsync>d__20:MoveNext():this
         -57 (-3.93% of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(System.Security.Cryptography.SymmetricAlgorithm,System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
         -47 (-1.33% of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:AgeCookies(System.String):bool:this
         -46 (-1.00% of base) : System.DirectoryServices.AccountManagement.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:GetGroupsMemberOf(System.DirectoryServices.AccountManagement.Principal):System.DirectoryServices.AccountManagement.ResultSet:this
         -46 (-1.58% of base) : System.Net.Http.dasm - <GetStringAsyncCore>d__41:MoveNext():this
         -46 (-0.94% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):System.Byte[]
         -40 (-1.09% of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation:Save():this
         -30 (-0.66% of base) : Microsoft.CodeAnalysis.dasm - Microsoft.CodeAnalysis.CommonCompiler:RunCore(System.IO.TextWriter,Microsoft.CodeAnalysis.ErrorLogger,System.Threading.CancellationToken):int:this
         -23 (-1.53% of base) : System.Private.Xml.Linq.dasm - <LoadAsyncInternal>d__57:MoveNext():this
         -22 (-1.01% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,int,Microsoft.CodeAnalysis.CSharp.BoundStatement,System.Collections.Immutable.ImmutableArray`1[LambdaDebugInfo],System.Collections.Immutable.ImmutableArray`1[ClosureDebugInfo],Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,Microsoft.CodeAnalysis.CSharp.ImportChain,bool):Microsoft.CodeAnalysis.CodeGen.MethodBody
         -20 (-1.11% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol:EnsureNonTypeMemberNamesAreLoaded():this
         -20 (-1.07% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PENamedTypeSymbol:EnsureNonTypeMemberNamesAreLoaded():this
         -20 (-1.88% of base) : System.Private.Xml.dasm - <ReadContentAsAsync>d__185:MoveNext():this
         -19 (-1.70% of base) : System.Private.DataContractSerialization.dasm - System.Xml.XmlBaseReader:ReadBytes(System.Text.Encoding,int,int,System.Byte[],int,int,bool):int:this
         -18 (-4.50% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
         -17 (-2.88% of base) : System.Security.Cryptography.Primitives.dasm - System.Security.Cryptography.AsymmetricAlgorithm:ExportArray(System.ReadOnlySpan`1[Byte],System.Security.Cryptography.PbeParameters,TryExportPbe`1[Byte]):System.Byte[]
         -17 (-2.88% of base) : System.Security.Cryptography.Primitives.dasm - System.Security.Cryptography.AsymmetricAlgorithm:ExportArray(System.ReadOnlySpan`1[Int16],System.Security.Cryptography.PbeParameters,TryExportPbe`1[Int16]):System.Byte[]
         -17 (-2.88% of base) : System.Security.Cryptography.Primitives.dasm - System.Security.Cryptography.AsymmetricAlgorithm:ExportArray(System.ReadOnlySpan`1[Int32],System.Security.Cryptography.PbeParameters,TryExportPbe`1[Int32]):System.Byte[]
         -17 (-2.88% of base) : System.Security.Cryptography.Primitives.dasm - System.Security.Cryptography.AsymmetricAlgorithm:ExportArray(System.ReadOnlySpan`1[Double],System.Security.Cryptography.PbeParameters,TryExportPbe`1[Double]):System.Byte[]

Top method regressions (percentages):
          11 ( 4.35% of base) : FSharp.Core.dasm - Take@686[Double][System.Double]:Close():this
          11 ( 4.01% of base) : FSharp.Core.dasm - Take@686[Vector`1][System.Numerics.Vector`1[System.Single]]:Close():this
          21 ( 3.23% of base) : Microsoft.CodeAnalysis.dasm - Roslyn.Utilities.EnumerableExtensions:SequenceEqual(System.Collections.Generic.IEnumerable`1[Vector`1],System.Collections.Generic.IEnumerable`1[Vector`1],System.Func`3[Vector`1,Vector`1,Boolean]):bool
           8 ( 2.63% of base) : System.Collections.dasm - System.Collections.Generic.SortedSet`1[Vector`1][System.Numerics.Vector`1[System.Single]]:AddAllElements(System.Collections.Generic.IEnumerable`1[Vector`1]):this
          14 ( 2.60% of base) : System.Collections.Immutable.dasm - System.Linq.ImmutableArrayExtensions:SequenceEqual(System.Collections.Immutable.ImmutableArray`1[Vector`1],System.Collections.Generic.IEnumerable`1[Vector`1],System.Collections.Generic.IEqualityComparer`1[Vector`1]):bool
           7 ( 2.60% of base) : System.Security.Cryptography.X509Certificates.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
           7 ( 2.60% of base) : System.Security.Cryptography.X509Certificates.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:RemoveRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
           8 ( 2.29% of base) : Microsoft.Diagnostics.FastSerialization.dasm - System.Collections.Generic.GrowableArray`1[__Canon][System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[__Canon]):this
          15 ( 2.27% of base) : System.Linq.dasm - System.Linq.Enumerable:Min(System.Collections.Generic.IEnumerable`1[Vector`1],System.Func`2[Vector`1,Nullable`1]):System.Nullable`1[Double]
           8 ( 2.22% of base) : Microsoft.CodeAnalysis.dasm - Microsoft.Cci.MetadataWriter:PopulateTypeSpecTableRows():this
           8 ( 2.16% of base) : System.Linq.dasm - WhereEnumerableIterator`1[Int16][System.Int16]:ToList():System.Collections.Generic.List`1[Int16]:this
           8 ( 2.13% of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitBlock(System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression:this
           8 ( 2.12% of base) : System.Linq.dasm - SelectManySingleSelectorIterator`2[__Canon,Int64][System.__Canon,System.Int64]:ToList():System.Collections.Generic.List`1[Int64]:this
           8 ( 2.11% of base) : Microsoft.CodeAnalysis.dasm - Roslyn.Utilities.ObjectWriterData:.ctor(System.Collections.Generic.IEnumerable`1[[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]):this
           8 ( 2.11% of base) : Microsoft.CodeAnalysis.dasm - Roslyn.Utilities.SpecializedCollections:ReadOnlySet(System.Collections.Generic.IEnumerable`1[Vector`1]):System.Collections.Generic.ISet`1[Vector`1]
           8 ( 2.11% of base) : System.Linq.dasm - WhereEnumerableIterator`1[Byte][System.Byte]:ToArray():System.Byte[]:this
           8 ( 2.11% of base) : System.Linq.dasm - WhereEnumerableIterator`1[Int32][System.Int32]:ToArray():System.Int32[]:this
           8 ( 2.10% of base) : System.Linq.dasm - WhereEnumerableIterator`1[Int16][System.Int16]:ToArray():System.Int16[]:this
           4 ( 2.07% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Keys@716[Byte,Int64][System.Byte,System.Int64]:Close():this
           4 ( 2.07% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Values@720[Byte,Int64][System.Byte,System.Int64]:Close():this

Top method improvements (percentages):
          -7 (-5.83% of base) : System.ServiceProcess.ServiceController.dasm - System.ServiceProcess.ServiceBase:DeferredSessionChange(int,int):this
         -18 (-4.50% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
          -6 (-4.38% of base) : System.Net.Quic.dasm - System.Net.Quic.Implementations.MsQuic.Internal.ResettableCompletionSource`1[Vector`1][System.Numerics.Vector`1[System.Single]]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
          -6 (-4.14% of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlSchemaException:CreateMessage(System.String,System.String[]):System.String
         -57 (-3.93% of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(System.Security.Cryptography.SymmetricAlgorithm,System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
         -11 (-3.91% of base) : System.Collections.Immutable.dasm - <get_Keys>d__25[__Canon,Int64][System.__Canon,System.Int64]:System.IDisposable.Dispose():this
         -11 (-3.91% of base) : System.Collections.Immutable.dasm - <get_Values>d__27[__Canon,Int64][System.__Canon,System.Int64]:System.IDisposable.Dispose():this
          -3 (-3.90% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:Flush():this
         -12 (-3.85% of base) : System.Transactions.Local.dasm - System.Transactions.TransactionScope:Timeout():this
         -11 (-3.53% of base) : Microsoft.CodeAnalysis.dasm - <TransposeInternal>d__3`1[__Canon][System.__Canon]:<>m__Finally1():this
         -14 (-3.15% of base) : System.Data.Common.dasm - <>c__DisplayClass16_0[__Canon][System.__Canon]:<GetLinqDataView>b__0(System.Data.DataRow):bool:this
          -3 (-3.06% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:WriteValue(int):this
          -3 (-3.03% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:WriteValue(System.DateTimeOffset):this
         -10 (-3.00% of base) : System.Private.CoreLib.dasm - <>c[Vector`1][System.Numerics.Vector`1[System.Single]]:<.cctor>b__4_0(System.Object):this
          -3 (-3.00% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:WriteValue(long):this
          -3 (-3.00% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:WriteValue(bool):this
          -3 (-3.00% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:WriteValue(System.DateTime):this
          -3 (-3.00% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:WriteValue(System.Decimal):this
         -14 (-2.92% of base) : System.Private.Xml.dasm - System.Xml.Xsl.XsltOld.CompiledAction:CompileAttributes(System.Xml.Xsl.XsltOld.Compiler):this
          -3 (-2.91% of base) : System.Net.Requests.dasm - System.Net.FtpDataStream:Seek(long,int):long:this

2178 total methods with Code Size differences (639 improved, 1539 regressed), 338449 unchanged.

4 files had text diffs but no metric diffs.
xunit.core.dasm had 50 diffs
xunit.performance.execution.dasm had 16 diffs
Microsoft.Extensions.Primitives.dasm had 4 diffs
System.Drawing.Primitives.dasm had 4 diffs

Summary of Perf Score diffs:
(Lower is better)

Total PerfScoreUnits of base: 277538757.02999824
Total PerfScoreUnits of diff: 277539995.25999814
Total PerfScoreUnits of delta: 1238.23 (0.00% of base)
    diff is a regression.

Top file regressions (PerfScoreUnits):
     1573.05 : System.Linq.dasm (0.34% of base)
      608.40 : System.Private.CoreLib.dasm (0.02% of base)
      507.14 : System.Collections.Concurrent.dasm (0.18% of base)
      423.38 : System.Linq.Expressions.dasm (0.15% of base)
      422.01 : FSharp.Core.dasm (0.02% of base)
      359.02 : Microsoft.CodeAnalysis.dasm (0.01% of base)
      340.85 : System.Private.Xml.dasm (0.02% of base)
      283.26 : System.Collections.Immutable.dasm (0.07% of base)
      281.07 : Microsoft.CodeAnalysis.CSharp.dasm (0.01% of base)
      264.77 : System.Collections.dasm (0.17% of base)
      235.95 : System.Threading.Tasks.Parallel.dasm (0.29% of base)
      212.75 : System.ComponentModel.Composition.dasm (0.16% of base)
      198.85 : System.Configuration.ConfigurationManager.dasm (0.11% of base)
      183.27 : System.Data.Common.dasm (0.00% of base)
      181.52 : System.Linq.Parallel.dasm (0.01% of base)
      145.25 : Newtonsoft.Json.dasm (0.00% of base)
      121.75 : System.Private.Xml.Linq.dasm (0.17% of base)
      111.67 : Microsoft.Diagnostics.Tracing.TraceEvent.dasm (0.01% of base)
      106.25 : System.Net.Http.dasm (0.04% of base)
       88.20 : xunit.assert.dasm (0.27% of base)

Top file improvements (PerfScoreUnits):
    -6964.66 : System.DirectoryServices.dasm (-3.50% of base)
      -39.75 : Microsoft.CSharp.dasm (-0.03% of base)
      -36.90 : System.Security.Cryptography.Primitives.dasm (-0.22% of base)
      -20.10 : System.Net.Primitives.dasm (-0.05% of base)
      -14.38 : System.Security.Cryptography.Pkcs.dasm (-0.01% of base)
       -8.82 : System.Security.Cryptography.Algorithms.dasm (-0.01% of base)
       -8.53 : System.Net.Connections.dasm (-0.11% of base)
       -5.60 : System.IO.FileSystem.dasm (-0.01% of base)
       -1.78 : System.Net.WebClient.dasm (-0.01% of base)
       -1.65 : Microsoft.Extensions.Hosting.dasm (-0.02% of base)
       -1.60 : System.ServiceProcess.ServiceController.dasm (-0.02% of base)
       -1.30 : System.Transactions.Local.dasm (-0.00% of base)
       -1.25 : System.Security.Cryptography.Cng.dasm (-0.00% of base)
       -0.67 : System.Net.Quic.dasm (-0.00% of base)
       -0.55 : Microsoft.Extensions.Hosting.Abstractions.dasm (-0.03% of base)
       -0.55 : System.ObjectModel.dasm (-0.00% of base)
       -0.45 : System.Resources.Extensions.dasm (-0.00% of base)
       -0.35 : System.Text.Encoding.CodePages.dasm (-0.00% of base)
       -0.35 : xunit.performance.core.dasm (-0.01% of base)
       -0.15 : xunit.runner.reporters.netcoreapp10.dasm (-0.00% of base)

123 total files with Perf Score differences (20 improved, 103 regressed), 145 unchanged.
Details
Top method regressions (PerfScoreUnits):
      257.20 ( 4.05% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Double,Int64][System.Double,System.Int64]:TryAddInternal(double,System.Nullable`1[Int32],long,bool,bool,byref):bool:this
      257.10 ( 3.07% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Vector`1,Int64][System.Numerics.Vector`1[System.Single],System.Int64]:TryAddInternal(System.Numerics.Vector`1[Single],System.Nullable`1[Int32],long,bool,bool,byref):bool:this
       65.40 ( 3.19% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:CheckForAttributeWithArrayArgumentInternal(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
       64.70 ( 6.63% of base) : Microsoft.Extensions.Options.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[__Canon][System.__Canon]:.ctor(Microsoft.Extensions.Options.IOptionsFactory`1[__Canon],System.Collections.Generic.IEnumerable`1[__Canon],Microsoft.Extensions.Options.IOptionsMonitorCache`1[__Canon]):this
       64.25 ( 3.68% of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.VariableBinder:MergeScopes(System.Linq.Expressions.Expression):System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Linq.Expressions.Expression, System.Linq.Expressions, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]:this
       56.50 ( 3.30% of base) : System.Threading.Tasks.Parallel.dasm - <>c__DisplayClass44_0`2[Double,Int64][System.Double,System.Int64]:<PartitionerForEachWorker>b__1(byref,int,byref):this
       48.80 ( 0.43% of base) : xunit.execution.dotnet.dasm - <AfterTestCaseStartingAsync>d__9:MoveNext():this
       39.05 ( 0.29% of base) : System.Net.HttpListener.dasm - <Process>d__19:MoveNext():this
       32.40 ( 1.02% of base) : System.Private.CoreLib.dasm - WorkerThread:WorkerThreadStart()
       32.40 ( 3.72% of base) : System.IO.Ports.dasm - System.IO.Ports.SerialPort:ReadTo(System.String):System.String:this
       32.40 ( 4.41% of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:FindGenericType(System.Type,System.Type):System.Type
       32.40 ( 3.27% of base) : System.Threading.Tasks.Parallel.dasm - <>c__DisplayClass4_0:<Invoke>b__0(byref,int,byref):this
       32.40 ( 0.53% of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.BaseConfigurationRecord:ScanSectionsRecursive(System.Configuration.XmlUtil,System.String,bool,System.String,System.Configuration.OverrideModeSetting,bool):this
       32.40 ( 0.37% of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.BaseConfigurationRecord:ScanFactoriesRecursive(System.Configuration.XmlUtil,System.String,System.Collections.Hashtable):this
       32.05 ( 2.26% of base) : System.Composition.Convention.dasm - System.Composition.Convention.ConventionBuilder:IsGenericDescendentOf(System.Reflection.TypeInfo,System.Reflection.TypeInfo):bool
       32.05 ( 3.67% of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.BaseConfigurationRecord:HlNeedsChildFor(System.String):bool:this
       26.90 ( 1.63% of base) : System.Linq.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[Vector`1],System.Func`2[Vector`1,Nullable`1]):System.Nullable`1[Double] (3 methods)
       25.20 ( 2.40% of base) : System.Linq.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[Nullable`1]):System.Nullable`1[Double] (3 methods)
       25.20 ( 1.87% of base) : System.Linq.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[Byte],System.Func`2[Byte,Nullable`1]):System.Nullable`1[Double] (3 methods)
       25.20 ( 1.87% of base) : System.Linq.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[Int16],System.Func`2[Int16,Nullable`1]):System.Nullable`1[Double] (3 methods)

Top method improvements (PerfScoreUnits):
    -7040.00 (-12.20% of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation:Save():this
      -96.15 (-0.82% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Key,__Canon][System.Text.RegularExpressions.RegexCache+Key,System.__Canon]:TryAddInternal(Key,System.Nullable`1[Int32],System.__Canon,bool,bool,byref):bool:this
      -47.90 (-3.26% of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:ChooseArrayIndexType(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this
      -36.80 (-0.34% of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:AgeCookies(System.String):bool:this
      -29.20 (-0.59% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[__Canon,Int64][System.__Canon,System.Int64]:TryRemoveInternal(System.__Canon,byref,bool,long):bool:this
      -26.60 (-0.50% of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:CreateManifestAndDescriptors(System.Type,System.String,System.Diagnostics.Tracing.EventSource,int):System.Byte[]
      -15.60 (-1.02% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Vector`1,Int64][System.Numerics.Vector`1[System.Single],System.Int64]:TryUpdateInternal(System.Numerics.Vector`1[Single],System.Nullable`1[Int32],long,long):bool:this
      -14.20 (-3.36% of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(System.Security.Cryptography.SymmetricAlgorithm,System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
      -10.80 (-6.14% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
      -10.45 (-1.25% of base) : System.Net.Http.dasm - <GetStringAsyncCore>d__41:MoveNext():this
      -10.00 (-4.04% of base) : System.Private.Xml.dasm - System.Xml.Serialization.SoapReflectionImporter:ImportMembersMapping(System.Xml.Serialization.XmlReflectionMember[],System.String,bool,bool,bool,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.MembersMapping:this
       -9.93 (-1.49% of base) : System.IO.Pipelines.dasm - <ReadAsyncInternal>d__27:MoveNext():this
       -9.93 (-1.47% of base) : System.Net.Connections.dasm - <ReadAsync>d__20:MoveNext():this
       -8.40 (-0.76% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Int16,Int64][System.Int16,System.Int64]:TryUpdateInternal(short,System.Nullable`1[Int32],long,long):bool:this
       -8.40 (-0.77% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Int32,Int64][System.Int32,System.Int64]:TryUpdateInternal(int,System.Nullable`1[Int32],long,long):bool:this
       -8.40 (-2.20% of base) : System.Threading.Tasks.Dataflow.dasm - BatchBlockTargetCore[__Canon][System.__Canon]:ReleaseReservedMessages(bool):this
       -8.40 (-0.76% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Byte,Int64][System.Byte,System.Int64]:TryUpdateInternal(ubyte,System.Nullable`1[Int32],long,long):bool:this
       -8.40 (-0.77% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Int64,Int64][System.Int64,System.Int64]:TryUpdateInternal(long,System.Nullable`1[Int32],long,long):bool:this
       -8.30 (-0.73% of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Double,Int64][System.Double,System.Int64]:TryUpdateInternal(double,System.Nullable`1[Int32],long,long):bool:this
       -7.53 (-0.63% of base) : System.DirectoryServices.AccountManagement.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:GetGroupsMemberOf(System.DirectoryServices.AccountManagement.Principal):System.DirectoryServices.AccountManagement.ResultSet:this

Top method regressions (percentages):
       16.70 ( 8.93% of base) : System.Net.Http.dasm - System.Net.Http.CookieHelper:ProcessReceivedCookies(System.Net.Http.HttpResponseMessage,System.Net.CookieContainer)
        8.70 ( 7.20% of base) : System.Security.Cryptography.X509Certificates.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
        8.70 ( 7.20% of base) : System.Security.Cryptography.X509Certificates.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:RemoveRange(System.Security.Cryptography.X509Certificates.X509Certificate2Collection):this
       64.70 ( 6.63% of base) : Microsoft.Extensions.Options.dasm - Microsoft.Extensions.Options.OptionsMonitor`1[__Canon][System.__Canon]:.ctor(Microsoft.Extensions.Options.IOptionsFactory`1[__Canon],System.Collections.Generic.IEnumerable`1[__Canon],Microsoft.Extensions.Options.IOptionsMonitorCache`1[__Canon]):this
        4.30 ( 6.18% of base) : System.Security.Cryptography.X509Certificates.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:AddRange(System.Security.Cryptography.X509Certificates.X509Certificate2[]):this
        4.30 ( 6.18% of base) : System.Security.Cryptography.X509Certificates.dasm - System.Security.Cryptography.X509Certificates.X509Certificate2Collection:RemoveRange(System.Security.Cryptography.X509Certificates.X509Certificate2[]):this
        8.40 ( 5.71% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Keys@716[Byte,Int64][System.Byte,System.Int64]:Close():this
        8.40 ( 5.71% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Values@720[Byte,Int64][System.Byte,System.Int64]:Close():this
        8.40 ( 5.70% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Keys@716[Int16,Int64][System.Int16,System.Int64]:Close():this
        8.40 ( 5.70% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Values@720[Int16,Int64][System.Int16,System.Int64]:Close():this
        8.40 ( 5.67% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Keys@716[Double,Int64][System.Double,System.Int64]:Close():this
        8.40 ( 5.67% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Values@720[Double,Int64][System.Double,System.Int64]:Close():this
        8.40 ( 5.64% of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:AreLiteralArgs(System.Xml.Xsl.Qil.QilNode):bool:this
        8.40 ( 5.63% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Keys@716[Int32,Int64][System.Int32,System.Int64]:Close():this
        8.40 ( 5.63% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Values@720[Int32,Int64][System.Int32,System.Int64]:Close():this
        8.40 ( 5.63% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Keys@716[Int64,Int64][System.Int64,System.Int64]:Close():this
        8.40 ( 5.63% of base) : FSharp.Core.dasm - System-Collections-Generic-IReadOnlyDictionary<'Key, 'Value>-get_Values@720[Int64,Int64][System.Int64,System.Int64]:Close():this
        8.05 ( 5.57% of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILOptimizerVisitor:HasNestedSequence(System.Xml.Xsl.Qil.QilNode):bool:this
        8.40 ( 5.18% of base) : System.Security.Claims.dasm - System.Security.Claims.ClaimsPrincipal:SelectPrimaryIdentity(System.Collections.Generic.IEnumerable`1[[System.Security.Claims.ClaimsIdentity, System.Security.Claims, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):System.Security.Claims.ClaimsIdentity
       18.20 ( 5.03% of base) : Microsoft.CodeAnalysis.dasm - Roslyn.Utilities.EnumerableExtensions:SequenceEqual(System.Collections.Generic.IEnumerable`1[Byte],System.Collections.Generic.IEnumerable`1[Byte],System.Func`3[Byte,Byte,Boolean]):bool

Top method improvements (percentages):
    -7040.00 (-12.20% of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ForestTrustRelationshipInformation:Save():this
      -10.80 (-6.14% of base) : System.Private.Xml.dasm - System.Xml.XmlEncodedRawTextWriter:Close():this
      -10.00 (-4.04% of base) : System.Private.Xml.dasm - System.Xml.Serialization.SoapReflectionImporter:ImportMembersMapping(System.Xml.Serialization.XmlReflectionMember[],System.String,bool,bool,bool,System.Xml.Serialization.RecursionLimiter):System.Xml.Serialization.MembersMapping:this
       -1.20 (-3.93% of base) : System.ServiceProcess.ServiceController.dasm - System.ServiceProcess.ServiceBase:DeferredSessionChange(int,int):this
       -1.10 (-3.46% of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlSchemaException:CreateMessage(System.String,System.String[]):System.String
      -14.20 (-3.36% of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(System.Security.Cryptography.SymmetricAlgorithm,System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
      -47.90 (-3.26% of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:ChooseArrayIndexType(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):Microsoft.CSharp.RuntimeBinder.Semantics.CType:this
       -3.90 (-2.81% of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SetSocketOption(int,int,int,bool):this
       -0.85 (-2.69% of base) : System.Net.Quic.dasm - System.Net.Quic.Implementations.MsQuic.Internal.ResettableCompletionSource`1[Vector`1][System.Numerics.Vector`1[System.Single]]:System.Threading.Tasks.Sources.IValueTaskSource.GetResult(short):this
       -0.55 (-2.40% of base) : System.Private.Xml.dasm - System.Xml.XmlWellFormedWriter:Flush():this
       -2.50 (-2.34% of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:InvokeOnSerializing(System.Object,System.Runtime.Serialization.DataContract,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson)
       -2.50 (-2.34% of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:InvokeOnSerialized(System.Object,System.Runtime.Serialization.DataContract,System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson)
       -2.50 (-2.34% of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:InvokeOnDeserializing(System.Object,System.Runtime.Serialization.DataContract,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson)
       -2.50 (-2.34% of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.DataContractJsonSerializer:InvokeOnDeserialized(System.Object,System.Runtime.Serialization.DataContract,System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson)
       -1.70 (-2.29% of base) : System.Transactions.Local.dasm - System.Transactions.TransactionScope:Timeout():this
       -8.40 (-2.20% of base) : System.Threading.Tasks.Dataflow.dasm - BatchBlockTargetCore[__Canon][System.__Canon]:ReleaseReservedMessages(bool):this
       -1.23 (-2.09% of base) : System.Collections.Immutable.dasm - <get_Keys>d__25[__Canon,Int64][System.__Canon,System.Int64]:System.IDisposable.Dispose():this
       -1.23 (-2.09% of base) : System.Collections.Immutable.dasm - <get_Values>d__27[__Canon,Int64][System.__Canon,System.Int64]:System.IDisposable.Dispose():this
       -1.90 (-2.03% of base) : System.Collections.Concurrent.dasm - <GetConsumingEnumerable>d__68[Byte][System.Byte]:MoveNext():bool:this
       -1.90 (-2.03% of base) : System.Collections.Concurrent.dasm - <GetConsumingEnumerable>d__68[Int32][System.Int32]:MoveNext():bool:this

2204 total methods with Perf Score differences (637 improved, 1567 regressed), 338423 unchanged.

4 files had text diffs but no metric diffs.
xunit.core.dasm had 50 diffs
xunit.performance.execution.dasm had 16 diffs
Microsoft.Extensions.Primitives.dasm had 4 diffs
System.Drawing.Primitives.dasm had 4 diffs

I did some investigation on the cause of regression for method StartWithCreateProcess() and here are the steps I took to do the analysis. Let me know if they were accurate and if my assumptions are correct.

I picked a diff that was restoring the value from stack to rsi as seen below:

image

From the JITdump, I tracked down the corresponding variable associated with the value showing diff and noticed that the value comes from V00

IN00a2:        mov      rsi, gword ptr [V00 rbp+200H]

It turns out that V00 is an EH Var as seen below line in dump:

EH Vars: {V00 V01 V06 V14 V28 V146}
Finally Vars: {V00 V01 V06 V14 V146}

Next, I started looking at the "Allocating Registers" table to see the 1st diff related to V00 and saw this:

image

Basically, RefPosition #398 is copied to rcx and since we started marking it correctly as spillAfter = true from my recent change in #44977, we free the rcx and rsi registers by setting unassign = true in this code. With that, the interval becomes inactive as seen in the diff.

After that, during resolution, we notice this diff where we add resolution code at the bottom of a block. I didn't debug completely why that might be happening but I am guessing it is because of the spillAfter flag that we set up during allocation (which we were not doing before my changes in this PR as well as in #44977).

image

Similarly, I checked for other diffs like the one following:

image

and they too occur because the corresponding RefPosition is marked as spillAfter as seen here:

image

To summarize, the latest regression that we now see after fixing the case for BBJ_THROW inside hasEHBoundaryOut() is coming after fixing the typo around spillAfter.

@kunalspathak
Copy link
Member Author

I am however wondering why we see this kind of redundant code instead of just having it once under IG41.

image

We add code for those blocks in resolution phase:

image

Copy link
Contributor

@CarolEidt CarolEidt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. It should now have zero diffs, right?

@kunalspathak
Copy link
Member Author

LGTM. It should now have zero diffs, right?

Yes. I already verified it has no diffs now with EHWriteThru=1.

@kunalspathak kunalspathak merged commit 63b9b20 into dotnet:master Dec 2, 2020
@JulieLeeMSFT JulieLeeMSFT added this to the 6.0.0 milestone Dec 3, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Jan 2, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants