Use GT_NULLCHECK for unconsumed indirections. by erozenfeld · Pull Request #32641 · dotnet/runtime (original) (raw)

Framework diffs (x64 pmi):

PMI CodeSize Diffs for System.Private.CoreLib.dll, framework assemblies for  default jit
Summary of Code Size diffs:
(Lower is better)
Total bytes of diff: -33587 (-0.07% of base)
    diff is an improvement.
Top file regressions (bytes):
          58 : System.Diagnostics.Process.dasm (0.06% of base)
Top file improvements (bytes):
       -8254 : Microsoft.CodeAnalysis.VisualBasic.dasm (-0.15% of base)
       -7309 : Microsoft.CodeAnalysis.CSharp.dasm (-0.17% of base)
       -2777 : Microsoft.CodeAnalysis.dasm (-0.16% of base)
       -2193 : System.Private.Xml.dasm (-0.06% of base)
       -1138 : System.Private.CoreLib.dasm (-0.02% of base)
       -1012 : Microsoft.CSharp.dasm (-0.33% of base)
        -895 : Microsoft.Diagnostics.Tracing.TraceEvent.dasm (-0.03% of base)
        -794 : System.Collections.Immutable.dasm (-0.07% of base)
        -729 : System.Data.Common.dasm (-0.05% of base)
        -713 : System.Data.SqlClient.dasm (-0.08% of base)
        -612 : System.Reflection.Metadata.dasm (-0.14% of base)
        -466 : System.Net.Http.dasm (-0.07% of base)
        -455 : System.Private.DataContractSerialization.dasm (-0.06% of base)
        -438 : System.Collections.dasm (-0.08% of base)
        -418 : System.Configuration.ConfigurationManager.dasm (-0.12% of base)
        -376 : System.Collections.Concurrent.dasm (-0.11% of base)
        -323 : System.Threading.Tasks.Dataflow.dasm (-0.04% of base)
        -292 : System.DirectoryServices.AccountManagement.dasm (-0.08% of base)
        -239 : System.Management.dasm (-0.06% of base)
        -225 : System.Reflection.MetadataLoadContext.dasm (-0.12% of base)
123 total files with Code Size differences (122 improved, 1 regressed), 110 unchanged.
Top method regressions (bytes):
          94 ( 3.83% of base) : System.Diagnostics.Process.dasm - NtProcessManager:GetProcessInfos(PerformanceCounterLib,int,int,ReadOnlySpan`1):ref
           3 ( 0.12% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SourceNamedTypeSymbol:MakeDeclaredBases(ConsList`1,DiagnosticBag):Tuple`2:this
           2 ( 0.08% of base) : System.Configuration.ConfigurationManager.dasm - BaseConfigurationRecord:InitConfigFromFile():this
           2 ( 3.17% of base) : System.Data.SqlClient.dasm - TdsParserStateObject:IncrementAndObtainOpenResultCount(SqlInternalTransaction):int:this
           2 ( 0.97% of base) : System.Private.Xml.dasm - XmlQueryType:CreateTypeCodeDerivation():BitMatrix
           2 ( 0.07% of base) : System.Private.Xml.dasm - DecimalFormatter:.ctor(String,DecimalFormat):this
           1 ( 0.13% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeTablesHeader(BlobBuilder,MetadataSizes):this
           1 ( 0.07% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeMetadataHeader(BlobBuilder,MetadataSizes):this
           1 ( 0.07% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeMetadataTables(BlobBuilder,MetadataSizes,int,int):this
           1 ( 0.05% of base) : System.Collections.Concurrent.dasm - ConcurrentDictionary`2:System.Collections.IDictionary.set_Item(Object,Object):this (7 methods)
Top method improvements (bytes):
        -274 (-0.67% of base) : Microsoft.CodeAnalysis.dasm - ArrayBuilder`1:ToDictionary(Func`2,IEqualityComparer`1):Dictionary`2:this (49 methods)
        -182 (-0.53% of base) : System.Data.Common.dasm - SortExpressionBuilder`1:CloneCast():SortExpressionBuilder`1:this (49 methods)
        -139 (-4.90% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - OverloadResolution:DetermineMostSpecificNarrowingConversion(TypeSymbol,TypeSymbol,ArrayBuilder`1,ArrayBuilder`1,byref,byref,bool,byref):bool
        -138 (-2.18% of base) : Microsoft.CodeAnalysis.dasm - ArrayBuilderExtensions:SelectAsArray(ArrayBuilder`1,Func`2):ImmutableArray`1 (7 methods)
        -129 (-7.01% of base) : Microsoft.CodeAnalysis.CSharp.dasm - OverloadResolution:BinaryOperatorOverloadResolution(BoundExpression,BoundExpression,BinaryOperatorOverloadResolutionResult,byref):this
        -125 (-0.59% of base) : Microsoft.CodeAnalysis.dasm - ArrayBuilder`1:SelectDistinct(Func`2):ImmutableArray`1:this (49 methods)
        -102 (-7.09% of base) : Microsoft.CodeAnalysis.CSharp.dasm - OverloadResolution:UnaryOperatorOverloadResolution(BoundExpression,UnaryOperatorOverloadResolutionResult,byref):this
         -78 (-4.29% of base) : System.Private.Xml.dasm - XsltLoader:LoadRealStylesheet():this
         -77 (-5.58% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SyntaxFactory:NodesAreCorrectType(SyntaxNodeOrTokenList):bool (7 methods)
         -77 (-5.67% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - SyntaxFactory:NodesAreCorrectType(SyntaxNodeOrTokenList):bool (7 methods)
         -77 (-1.43% of base) : System.Collections.Concurrent.dasm - BlockingCollection`1:TryTakeWithNoTimeValidation(byref,int,CancellationToken,CancellationTokenSource):bool:this (7 methods)
         -65 (-1.36% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeTypeReference(ITypeReference,BlobBuilder,bool,bool):this
         -64 (-3.61% of base) : Microsoft.CodeAnalysis.dasm - ArrayBuilder`1:RemoveDuplicates():this (7 methods)
         -58 (-1.92% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - Parser:ParseTerm(bool,bool):ExpressionSyntax:this
         -56 (-1.95% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - Parser:ParseInterpolatedStringInterpolation():InterpolationSyntax:this
         -56 (-1.29% of base) : System.Private.CoreLib.dasm - TextInfo:ChangeCaseCommon(String):String:this (8 methods)
         -53 (-0.80% of base) : Microsoft.CodeAnalysis.CSharp.dasm - CSharpDeclarationComputer:ComputeDeclarations(SemanticModel,SyntaxNode,Func`3,bool,List`1,Nullable`1,CancellationToken)
         -51 (-0.88% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - VisualBasicDeclarationComputer:ComputeDeclarationsCore(SemanticModel,SyntaxNode,Func`3,bool,List`1,Nullable`1,CancellationToken)
         -50 (-4.05% of base) : System.Private.Uri.dasm - Uri:PrivateParseMinimal():int:this
         -49 (-0.34% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - MethodToClassRewriter`1:RewriteBlock(BoundBlock,ArrayBuilder`1,ArrayBuilder`1):BoundBlock:this (7 methods)
Top method regressions (percentages):
          94 ( 3.83% of base) : System.Diagnostics.Process.dasm - NtProcessManager:GetProcessInfos(PerformanceCounterLib,int,int,ReadOnlySpan`1):ref
           2 ( 3.17% of base) : System.Data.SqlClient.dasm - TdsParserStateObject:IncrementAndObtainOpenResultCount(SqlInternalTransaction):int:this
           2 ( 0.97% of base) : System.Private.Xml.dasm - XmlQueryType:CreateTypeCodeDerivation():BitMatrix
           1 ( 0.13% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeTablesHeader(BlobBuilder,MetadataSizes):this
           3 ( 0.12% of base) : Microsoft.CodeAnalysis.CSharp.dasm - SourceNamedTypeSymbol:MakeDeclaredBases(ConsList`1,DiagnosticBag):Tuple`2:this
           2 ( 0.08% of base) : System.Configuration.ConfigurationManager.dasm - BaseConfigurationRecord:InitConfigFromFile():this
           1 ( 0.07% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeMetadataHeader(BlobBuilder,MetadataSizes):this
           2 ( 0.07% of base) : System.Private.Xml.dasm - DecimalFormatter:.ctor(String,DecimalFormat):this
           1 ( 0.07% of base) : Microsoft.CodeAnalysis.dasm - MetadataWriter:SerializeMetadataTables(BlobBuilder,MetadataSizes,int,int):this
           1 ( 0.05% of base) : System.Collections.Concurrent.dasm - ConcurrentDictionary`2:System.Collections.IDictionary.set_Item(Object,Object):this (7 methods)
Top method improvements (percentages):
          -2 (-20.00% of base) : Microsoft.CodeAnalysis.CSharp.dasm - Directive:get_Kind():ushort:this
         -14 (-20.00% of base) : System.Collections.dasm - SortedDictionary`2:get_Count():int:this (7 methods)
          -2 (-20.00% of base) : System.Data.OleDb.dasm - OleDbInfoMessageEventArgs:get_ErrorCode():int:this
          -2 (-20.00% of base) : System.Private.DataContractSerialization.dasm - XmlBinaryReader:SkipNodeType():this
          -2 (-20.00% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:get_LineNumber():int:this
          -2 (-20.00% of base) : System.Private.Xml.dasm - XmlTextReaderImpl:get_LinePosition():int:this
         -21 (-18.75% of base) : System.Collections.dasm - SortedDictionary`2:CopyTo(ref,int):this (7 methods)
          -2 (-18.18% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - BoundToQueryableCollectionConversion:get_ExpressionSymbol():Symbol:this
          -2 (-18.18% of base) : Microsoft.CodeAnalysis.VisualBasic.dasm - Parser:GetBinaryOperatorHelper(SyntaxToken):ushort
          -2 (-18.18% of base) : System.Private.CoreLib.dasm - ConstructorBuilder:GetModule():Module:this
          -2 (-18.18% of base) : System.Private.CoreLib.dasm - EnumBuilder:get_Module():Module:this
          -2 (-18.18% of base) : System.Private.CoreLib.dasm - FieldBuilder:get_Module():Module:this
          -2 (-18.18% of base) : System.Private.CoreLib.dasm - GenericTypeParameterBuilder:get_Module():Module:this
          -2 (-18.18% of base) : System.Private.CoreLib.dasm - MethodBuilder:get_Module():Module:this
          -2 (-18.18% of base) : System.Private.CoreLib.dasm - PropertyBuilder:get_Module():Module:this
          -6 (-18.18% of base) : System.Private.CoreLib.dasm - CompareInfo:CompareOrdinalIgnoreCase(String,String):int
          -4 (-17.39% of base) : System.Private.CoreLib.dasm - String:EqualsOrdinalIgnoreCase(String,String):bool
          -4 (-17.39% of base) : System.Private.CoreLib.dasm - TypeBuilder:get_SyncRoot():Object:this
         -28 (-16.00% of base) : System.Collections.dasm - Node:Split4Node():this (7 methods)
         -28 (-16.00% of base) : System.Collections.dasm - Node:Merge2Nodes():this (7 methods)
8023 total methods with Code Size differences (8013 improved, 10 regressed), 236907 unchanged.