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

JIT: generalize the branch around empty flow optimization #51409

Merged
merged 2 commits into from
Apr 17, 2021

Conversation

AndyAyersMS
Copy link
Member

If a BBJ_COND block falls through to an empty block which then jumps to some other
block, see if reversing the branch condition might simplify flow.

Resolves #46592.

If a BBJ_COND block falls through to an empty block which then jumps to some other
block, see if reversing the branch condition might simplify flow.

Resolves dotnet#46592.
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Apr 16, 2021
@AndyAyersMS
Copy link
Member Author

cc @dotnet/jit-contrib

See #46592 for more background, in particular #46592 (comment)

Fair number of diffs, mostly positive, sometimes fairly dramatic. The largest improvements come from methods that switch over strings, like Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind: -498 (-10.31% of base).

asm.benchmarks.run.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 323301
Total bytes of diff: 321982
Total bytes of delta: -1319 (-0.41% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
         119 : 1714.dasm (2.30% of base)
          85 : 8859.dasm (5.37% of base)
          50 : 17710.dasm (5.27% of base)
          35 : 18210.dasm (2.14% of base)
          28 : 20561.dasm (1.05% of base)
          26 : 18695.dasm (2.57% of base)
          23 : 17662.dasm (1.45% of base)
          21 : 1800.dasm (0.50% of base)
          19 : 17275.dasm (5.76% of base)
          17 : 20457.dasm (5.52% of base)
          15 : 2517.dasm (1.75% of base)
          14 : 10456.dasm (1.33% of base)
          14 : 18733.dasm (1.49% of base)
          13 : 781.dasm (3.18% of base)
          12 : 17255.dasm (1.66% of base)
          12 : 26557.dasm (2.09% of base)
          12 : 15199.dasm (5.50% of base)
          11 : 2040.dasm (1.40% of base)
          10 : 6444.dasm (1.67% of base)
          10 : 2048.dasm (0.95% of base)

Top file improvements (bytes):
        -498 : 17089.dasm (-10.31% of base)
        -203 : 17152.dasm (-9.94% of base)
        -119 : 9363.dasm (-8.47% of base)
        -106 : 18708.dasm (-1.46% of base)
         -81 : 9395.dasm (-8.71% of base)
         -65 : 11725.dasm (-5.62% of base)
         -41 : 5806.dasm (-1.56% of base)
         -41 : 21496.dasm (-3.18% of base)
         -40 : 9394.dasm (-6.57% of base)
         -38 : 18117.dasm (-2.00% of base)
         -34 : 5487.dasm (-3.13% of base)
         -29 : 26749.dasm (-2.92% of base)
         -27 : 9396.dasm (-6.94% of base)
         -27 : 9361.dasm (-5.71% of base)
         -27 : 15413.dasm (-2.65% of base)
         -26 : 13476.dasm (-1.57% of base)
         -26 : 26362.dasm (-4.63% of base)
         -25 : 1640.dasm (-2.67% of base)
         -23 : 18395.dasm (-0.68% of base)
         -23 : 3583.dasm (-0.42% of base)

240 total files with Code Size differences (151 improved, 89 regressed), 69 unchanged.

Top method regressions (bytes):
         119 ( 2.30% of base) : 1714.dasm - System.DateTimeFormat:FormatCustomized(System.DateTime,System.ReadOnlySpan`1[Char],System.Globalization.DateTimeFormatInfo,System.TimeSpan,System.Text.StringBuilder):System.Text.StringBuilder
          85 ( 5.37% of base) : 8859.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
          50 ( 5.27% of base) : 17710.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this
          35 ( 2.14% of base) : 18210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
          28 ( 1.05% of base) : 20561.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:CreateMemberModel(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.CSharp.MemberSemanticModel:this
          26 ( 2.57% of base) : 18695.dasm - Microsoft.CodeAnalysis.CSharp.BuiltInOperators:GetSignature(int):Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature:this
          23 ( 1.45% of base) : 17662.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[__Canon,__Canon][System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[__Canon],int):this
          21 ( 0.50% of base) : 1800.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):bool
          19 ( 5.76% of base) : 17275.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetBinaryExpression(ushort):ushort
          17 ( 5.52% of base) : 20457.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleTypedIdentifierStart(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,bool):System.Nullable`1[Boolean]:this
          15 ( 1.75% of base) : 2517.dasm - System.Reflection.Emit.ModuleBuilder:GetMemberRefSignature(System.Reflection.MethodBase,int):System.Reflection.Emit.SignatureHelper:this
          14 ( 1.33% of base) : 10456.dasm - System.TimeZoneInfo:CreateAdjustmentRuleFromTimeZoneInformation(byref,System.DateTime,System.DateTime,int):AdjustmentRule
          14 ( 1.49% of base) : 18733.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this
          13 ( 3.18% of base) : 781.dasm - System.Marvin:ComputeHash32(byref,int,int,int):int
          12 ( 1.66% of base) : 17255.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseStatementNoDeclaration(bool):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.StatementSyntax:this
          12 ( 2.09% of base) : 26557.dasm - System.Globalization.JapaneseCalendar:GetEraFromValue(System.String,System.String):System.Globalization.EraInfo
          12 ( 5.50% of base) : 15199.dasm - BenchmarksGame.KNucleotide_9:find(System.Byte[],System.Byte[],int,byref):int
          11 ( 1.40% of base) : 2040.dasm - System.Text.RegularExpressions.RegexParser:CountCaptures():this
          10 ( 1.67% of base) : 6444.dasm - Newtonsoft.Json.Linq.JValue:GetValueType(System.Nullable`1[JTokenType],System.Object):int
          10 ( 0.95% of base) : 2048.dasm - System.Text.RegularExpressions.RegexParser:ScanBackslash(bool):System.Text.RegularExpressions.RegexNode:this

Top method improvements (bytes):
        -498 (-10.31% of base) : 17089.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -203 (-9.94% of base) : 17152.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
        -119 (-8.47% of base) : 9363.dasm - Jil.Serialize.ThunkWriter:IsConstantFormattingString(System.String,byref):bool
        -106 (-1.46% of base) : 18708.dasm - Microsoft.CodeAnalysis.CSharp.Binder:FoldNeverOverflowBinaryOperators(int,Microsoft.CodeAnalysis.ConstantValue,Microsoft.CodeAnalysis.ConstantValue):System.Object
         -81 (-8.71% of base) : 9395.dasm - Jil.Serialize.ThunkWriter:IsConstant001EscapeString(System.String,byref):bool
         -65 (-5.62% of base) : 11725.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[Byte],bool,bool,byref):System.Byte[]:this
         -41 (-1.56% of base) : 5806.dasm - System.Net.Http.Headers.KnownHeaders:GetCandidate(BytePtrAccessor):System.Net.Http.Headers.KnownHeader
         -41 (-3.18% of base) : 21496.dasm - Microsoft.Extensions.Logging.EventSource.EventSourceLogger:Log(int,Microsoft.Extensions.Logging.EventId,LogValues`2[Int32,__Canon],System.Exception,System.Func`3[LogValues`2,__Canon,__Canon]):this
         -40 (-6.57% of base) : 9394.dasm - Jil.Serialize.ThunkWriter:IsConstant000EscapeString(System.String,byref):bool
         -38 (-2.00% of base) : 18117.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol:ComputeMethodKind():int:this
         -34 (-3.13% of base) : 5487.dasm - System.Uri:CreateUriInfo(long):this
         -29 (-2.92% of base) : 26749.dasm - BoundedChannelWriter[Int32][System.Int32]:WriteAsync(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
         -27 (-6.94% of base) : 9396.dasm - Jil.Serialize.ThunkWriter:IsConstantDaysOfWeek(System.String,byref):bool
         -27 (-5.71% of base) : 9361.dasm - Jil.Serialize.ThunkWriter:IsConstantCommonString(System.String,byref):bool
         -27 (-2.65% of base) : 15413.dasm - BoundedChannelWriter[__Canon][System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
         -26 (-1.57% of base) : 13476.dasm - System.DateTimeParse:ParseFormatR(System.ReadOnlySpan`1[Char],byref,byref):bool
         -26 (-4.63% of base) : 26362.dasm - BoundedChannelWriter[Int32][System.Int32]:TryWrite(int):bool:this
         -25 (-2.67% of base) : 1640.dasm - ProtoBuf.ProtoWriter:WriteInt32(int,ProtoBuf.ProtoWriter)
         -23 (-0.68% of base) : 18395.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool):Microsoft.CodeAnalysis.CSharp.Symbol:this
         -23 (-0.42% of base) : 3583.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteElement(System.String,System.String,System.String,System.Xml.Serialization.ElementAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,System.String,bool,bool,int,int):this

Top method regressions (percentages):
          19 ( 5.76% of base) : 17275.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetBinaryExpression(ushort):ushort
          17 ( 5.52% of base) : 20457.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleTypedIdentifierStart(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,bool):System.Nullable`1[Boolean]:this
          12 ( 5.50% of base) : 15199.dasm - BenchmarksGame.KNucleotide_9:find(System.Byte[],System.Byte[],int,byref):int
          85 ( 5.37% of base) : 8859.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
          50 ( 5.27% of base) : 17710.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this
           2 ( 3.23% of base) : 21029.dasm - Node[__Canon][System.__Canon]:GetRotation(Node[__Canon],Node[__Canon]):ubyte:this
           2 ( 3.23% of base) : 12184.dasm - Node[Int32][System.Int32]:GetRotation(Node[Int32],Node[Int32]):ubyte:this
          13 ( 3.18% of base) : 781.dasm - System.Marvin:ComputeHash32(byref,int,int,int):int
           2 ( 3.08% of base) : 11901.dasm - System.MemoryExtensions:Overlaps(System.ReadOnlySpan`1[Char],System.ReadOnlySpan`1[Char]):bool
           6 ( 2.97% of base) : 11913.dasm - UnboundedChannelWriter[Int32][System.Int32]:WriteAsync(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
           6 ( 2.97% of base) : 14135.dasm - UnboundedChannelWriter[Int32][System.Int32]:WriteAsync(int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
          26 ( 2.57% of base) : 18695.dasm - Microsoft.CodeAnalysis.CSharp.BuiltInOperators:GetSignature(int):Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature:this
           3 ( 2.40% of base) : 19621.dasm - Microsoft.Cci.MetadataWriter:MayUseSmallExceptionHeaders(System.Collections.Immutable.ImmutableArray`1[[Microsoft.Cci.ExceptionHandlerRegion, Microsoft.CodeAnalysis, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):bool
           5 ( 2.35% of base) : 7190.dasm - DefaultIfEmptyIterator`1[Int32][System.Int32]:MoveNext():bool:this
         119 ( 2.30% of base) : 1714.dasm - System.DateTimeFormat:FormatCustomized(System.DateTime,System.ReadOnlySpan`1[Char],System.Globalization.DateTimeFormatInfo,System.TimeSpan,System.Text.StringBuilder):System.Text.StringBuilder
           4 ( 2.30% of base) : 472.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[Char]):bool
           4 ( 2.30% of base) : 13311.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[Char]):bool
          35 ( 2.14% of base) : 18210.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
          12 ( 2.09% of base) : 26557.dasm - System.Globalization.JapaneseCalendar:GetEraFromValue(System.String,System.String):System.Globalization.EraInfo
           3 ( 1.97% of base) : 20410.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:IsPossibleParameter():bool:this

Top method improvements (percentages):
        -498 (-10.31% of base) : 17089.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -203 (-9.94% of base) : 17152.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
         -81 (-8.71% of base) : 9395.dasm - Jil.Serialize.ThunkWriter:IsConstant001EscapeString(System.String,byref):bool
        -119 (-8.47% of base) : 9363.dasm - Jil.Serialize.ThunkWriter:IsConstantFormattingString(System.String,byref):bool
         -27 (-6.94% of base) : 9396.dasm - Jil.Serialize.ThunkWriter:IsConstantDaysOfWeek(System.String,byref):bool
         -40 (-6.57% of base) : 9394.dasm - Jil.Serialize.ThunkWriter:IsConstant000EscapeString(System.String,byref):bool
         -27 (-5.71% of base) : 9361.dasm - Jil.Serialize.ThunkWriter:IsConstantCommonString(System.String,byref):bool
         -65 (-5.62% of base) : 11725.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[Byte],bool,bool,byref):System.Byte[]:this
          -6 (-5.13% of base) : 17881.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ModifierUtils:EffectiveAccessibility(int):int
          -4 (-5.06% of base) : 19801.dasm - System.Reflection.Metadata.Ecma335.CodedIndex:ToResolutionScopeTag(ubyte):int
         -26 (-4.63% of base) : 26362.dasm - BoundedChannelWriter[Int32][System.Int32]:TryWrite(int):bool:this
          -2 (-4.00% of base) : 351.dasm - System.Runtime.InteropServices.RuntimeInformation:Map(ushort):int
         -12 (-3.55% of base) : 1360.dasm - MemberInfoCache`1[__Canon][System.__Canon]:PopulateEvents(Filter):System.Reflection.RuntimeEventInfo[]:this
          -4 (-3.28% of base) : 6954.dasm - System.Text.RegularExpressions.RegexParser:TypeFromCode(ushort):int:this
         -41 (-3.18% of base) : 21496.dasm - Microsoft.Extensions.Logging.EventSource.EventSourceLogger:Log(int,Microsoft.Extensions.Logging.EventId,LogValues`2[Int32,__Canon],System.Exception,System.Func`3[LogValues`2,__Canon,__Canon]):this
          -2 (-3.17% of base) : 4599.dasm - RangeIterator:MoveNext():bool:this
         -34 (-3.13% of base) : 5487.dasm - System.Uri:CreateUriInfo(long):this
          -2 (-3.12% of base) : 22534.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool
          -2 (-3.12% of base) : 8846.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool
          -2 (-3.12% of base) : 9829.dasm - System.Buffers.Text.Utf8Parser:TryParse(System.ReadOnlySpan`1[Byte],byref,byref,ushort):bool

240 total methods with Code Size differences (151 improved, 89 regressed), 69 unchanged.


asm.libraries.crossgen.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1187353
Total bytes of diff: 1182651
Total bytes of delta: -4702 (-0.40% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
         114 : 40413.dasm (5.71% of base)
         114 : 10327.dasm (2.25% of base)
         107 : 97043.dasm (3.00% of base)
          99 : 77959.dasm (2.28% of base)
          63 : 15483.dasm (3.18% of base)
          51 : 35618.dasm (3.43% of base)
          49 : 107313.dasm (0.74% of base)
          35 : 37304.dasm (2.76% of base)
          34 : 72040.dasm (1.88% of base)
          29 : 41792.dasm (1.42% of base)
          26 : 151828.dasm (4.13% of base)
          25 : 151906.dasm (3.78% of base)
          24 : 31018.dasm (2.27% of base)
          23 : 87952.dasm (4.84% of base)
          22 : 167111.dasm (6.18% of base)
          22 : 37509.dasm (1.38% of base)
          22 : 42150.dasm (1.65% of base)
          21 : 107483.dasm (10.19% of base)
          20 : 86306.dasm (4.21% of base)
          20 : 59352.dasm (7.27% of base)

Top file improvements (bytes):
        -203 : 70903.dasm (-6.92% of base)
        -174 : 170512.dasm (-7.74% of base)
        -144 : 28455.dasm (-3.24% of base)
        -142 : 77709.dasm (-8.55% of base)
        -134 : 36109.dasm (-11.61% of base)
        -127 : 35760.dasm (-8.49% of base)
        -121 : 116454.dasm (-7.33% of base)
        -120 : 116296.dasm (-6.90% of base)
        -107 : 169866.dasm (-6.21% of base)
         -99 : 112964.dasm (-9.16% of base)
         -95 : 112965.dasm (-8.33% of base)
         -85 : 174247.dasm (-7.02% of base)
         -85 : 97128.dasm (-5.09% of base)
         -81 : 51046.dasm (-6.11% of base)
         -79 : 104451.dasm (-1.87% of base)
         -79 : 28469.dasm (-4.24% of base)
         -77 : 111318.dasm (-6.16% of base)
         -71 : 109861.dasm (-6.05% of base)
         -69 : 94634.dasm (-9.22% of base)
         -67 : 113454.dasm (-8.49% of base)

1101 total files with Code Size differences (715 improved, 386 regressed), 325 unchanged.

Top method regressions (bytes):
         114 ( 5.71% of base) : 40413.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitIfStatement(Microsoft.CodeAnalysis.VisualBasic.BoundIfStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
         114 ( 2.25% of base) : 10327.dasm - System.DateTimeFormat:FormatCustomized(System.DateTime,System.ReadOnlySpan`1[Char],System.Globalization.DateTimeFormatInfo,System.TimeSpan,System.Text.StringBuilder):System.Text.StringBuilder
         107 ( 3.00% of base) : 97043.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,bool,bool,System.String):System.Object:this
          99 ( 2.28% of base) : 77959.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this
          63 ( 3.18% of base) : 15483.dasm - System.Globalization.TimeSpanFormat:FormatCustomized(System.TimeSpan,System.ReadOnlySpan`1[Char],System.Globalization.DateTimeFormatInfo,System.Text.StringBuilder):System.Text.StringBuilder
          51 ( 3.43% of base) : 35618.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:GetTargetAttributeSignatureIndex(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.AttributeDescription):int:this
          49 ( 0.74% of base) : 107313.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,bool,byref,bool):bool:this
          35 ( 2.76% of base) : 37304.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseExpressionCore(ubyte,bool):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionSyntax:this
          34 ( 1.88% of base) : 72040.dasm - <ParseCommentAsync>d__16:MoveNext():this
          29 ( 1.42% of base) : 41792.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseNextQueryOperator():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.QueryClauseSyntax:this
          26 ( 4.13% of base) : 151828.dasm - <<ProcessServerControlStreamAsync>g__SkipUnknownPayloadAsync|3>d:MoveNext():this
          25 ( 3.78% of base) : 151906.dasm - <SkipUnknownPayloadAsync>d__52:MoveNext():this
          24 ( 2.27% of base) : 31018.dasm - Microsoft.CodeAnalysis.CSharp.BuiltInOperators:GetSignature(int):Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature:this
          23 ( 4.84% of base) : 87952.dasm - <DtdParserProxy_PushEntityAsync>d__495:MoveNext():this
          22 ( 6.18% of base) : 167111.dasm - Internal.Cryptography.PkcsHelpers:CreateBestPkcs9AttributeObjectAvailable(System.Security.Cryptography.Oid,System.Byte[]):System.Security.Cryptography.Pkcs.Pkcs9AttributeObject
          22 ( 1.38% of base) : 37509.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:TryProcessExecutableStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.BlockContext:this
          22 ( 1.65% of base) : 42150.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SubstitutedNamedType:GetMembers_Worker(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.Symbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
          21 (10.19% of base) : 107483.dasm - GroupToArgsBinder:ConstructExpandedParameters():bool:this
          20 ( 4.21% of base) : 86306.dasm - System.Xml.Ucs4Decoder:Convert(System.Byte[],int,int,System.Char[],int,int,bool,byref,byref,byref):this
          20 ( 7.27% of base) : 59352.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftWindowsNDISPacketCapture.PacketFragmentArgs:FindPrintableTcpStream(long,int,int,bool):System.String:this

Top method improvements (bytes):
        -203 (-6.92% of base) : 70903.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this
        -174 (-7.74% of base) : 170512.dasm - System.ServiceModel.Syndication.DateTimeHelper:NormalizeTimeZone(System.String,byref):System.String
        -144 (-3.24% of base) : 28455.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -142 (-8.55% of base) : 77709.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this
        -134 (-11.61% of base) : 36109.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:AssignImpl(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,bool,bool):this
        -127 (-8.49% of base) : 35760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
        -121 (-7.33% of base) : 116454.dasm - Microsoft.CSharp.CSharpCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,bool):System.String:this
        -120 (-6.90% of base) : 116296.dasm - Microsoft.VisualBasic.VBCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,bool):System.String:this
        -107 (-6.21% of base) : 169866.dasm - System.Security.Cryptography.Xml.CryptoHelpers:CreateFromKnownName(System.String):System.Object
         -99 (-9.16% of base) : 112964.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String
         -95 (-8.33% of base) : 112965.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String
         -85 (-7.02% of base) : 174247.dasm - BoundedChannelWriter[__Canon][System.__Canon]:WriteAsync(System.__Canon,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
         -85 (-5.09% of base) : 97128.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:ConvertPrimitiveToString(System.Object,System.Xml.Serialization.TypeDesc):System.String:this
         -81 (-6.11% of base) : 51046.dasm - Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:GetTypeForManifestTypeName(System.String):System.Type
         -79 (-1.87% of base) : 104451.dasm - System.Text.EncodingNLS:GetLocalizedEncodingNameResource(int):System.String
         -79 (-4.24% of base) : 28469.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
         -77 (-6.16% of base) : 111318.dasm - Microsoft.Extensions.Logging.EventSource.EventSourceLogger:Log(int,Microsoft.Extensions.Logging.EventId,System.__Canon,System.Exception,System.Func`3[__Canon,__Canon,__Canon]):this
         -71 (-6.05% of base) : 109861.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions
         -69 (-9.22% of base) : 94634.dasm - System.Xml.Xsl.XPath.XPathScanner:CheckAxis():int:this
         -67 (-8.49% of base) : 113454.dasm - Microsoft.VisualBasic.Information:SystemTypeName(System.String):System.String

Top method regressions (percentages):
          21 (10.19% of base) : 107483.dasm - GroupToArgsBinder:ConstructExpandedParameters():bool:this
          20 ( 7.27% of base) : 59352.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftWindowsNDISPacketCapture.PacketFragmentArgs:FindPrintableTcpStream(long,int,int,bool):System.String:this
          22 ( 6.18% of base) : 167111.dasm - Internal.Cryptography.PkcsHelpers:CreateBestPkcs9AttributeObjectAvailable(System.Security.Cryptography.Oid,System.Byte[]):System.Security.Cryptography.Pkcs.Pkcs9AttributeObject
         114 ( 5.71% of base) : 40413.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:VisitIfStatement(Microsoft.CodeAnalysis.VisualBasic.BoundIfStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
          12 ( 5.58% of base) : 97788.dasm - System.Xml.Serialization.XmlSchemaImporter:ImportArray(System.Xml.Schema.XmlSchemaElement,System.String,System.String,bool):System.Xml.Serialization.ElementAccessor:this
          16 ( 5.19% of base) : 156810.dasm - System.Net.Security.TlsFrameHelper:TryGetFrameInfo(System.ReadOnlySpan`1[Byte],byref,int,HelloExtensionCallback):bool
          18 ( 5.10% of base) : 38910.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:DecodeParameterModifiers(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.SyntaxTokenList,CheckParameterModifierDelegate,Microsoft.CodeAnalysis.DiagnosticBag):ubyte
          19 ( 5.01% of base) : 174293.dasm - <WriteAsyncCore>d__4[__Canon][System.__Canon]:MoveNext():this
           2 ( 5.00% of base) : 37239.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:IsEndBlockLoopOrNextStatement(ushort):bool
          16 ( 4.85% of base) : 7129.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Int32],int,Microsoft.FSharp.Collections.MapTree`2[Int32,Int32]):Microsoft.FSharp.Collections.MapTree`2[Int32,Int32]
          23 ( 4.84% of base) : 87952.dasm - <DtdParserProxy_PushEntityAsync>d__495:MoveNext():this
          18 ( 4.76% of base) : 7006.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Int32],int,Microsoft.FSharp.Collections.MapTree`2[Int32,__Canon]):Microsoft.FSharp.Collections.MapTree`2[Int32,__Canon]
          17 ( 4.64% of base) : 4506.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[__Canon],System.__Canon,Microsoft.FSharp.Collections.MapTree`2[__Canon,__Canon]):Microsoft.FSharp.Collections.MapTree`2[__Canon,__Canon]
          11 ( 4.37% of base) : 159212.dasm - System.UriHelper:TestForSubPath(long,int,long,int,bool):bool
          20 ( 4.21% of base) : 86306.dasm - System.Xml.Ucs4Decoder:Convert(System.Byte[],int,int,System.Char[],int,int,bool,byref,byref,byref):this
          26 ( 4.13% of base) : 151828.dasm - <<ProcessServerControlStreamAsync>g__SkipUnknownPayloadAsync|3>d:MoveNext():this
          12 ( 4.10% of base) : 29518.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitUnusedExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          13 ( 4.05% of base) : 40489.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:StackMergeType(Microsoft.CodeAnalysis.VisualBasic.BoundExpression):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
           2 ( 3.85% of base) : 6463.dasm - Float32Comparer@2127:System.Collections.Generic.IComparer<System.Single>.Compare(float,float):int:this
          25 ( 3.78% of base) : 151906.dasm - <SkipUnknownPayloadAsync>d__52:MoveNext():this

Top method improvements (percentages):
         -27 (-13.85% of base) : 103886.dasm - System.Speech.Internal.ObjectTokens.SAPICategories:CompareVersions(System.String,System.String):int
         -59 (-11.97% of base) : 85422.dasm - System.Xml.BinXmlSqlDecimal:.ctor(System.Byte[],int,bool):this
        -134 (-11.61% of base) : 36109.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:AssignImpl(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,bool,bool):this
         -28 (-11.48% of base) : 82005.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContextComplex:CheckIfTypeSerializable(System.Type,bool):this
         -28 (-11.48% of base) : 82023.dasm - System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex:CheckIfTypeSerializable(System.Type,bool):this
          -9 (-10.59% of base) : 92524.dasm - Parser:ParseTimeAndWhitespace(int):bool:this
         -69 (-9.22% of base) : 94634.dasm - System.Xml.Xsl.XPath.XPathScanner:CheckAxis():int:this
         -99 (-9.16% of base) : 112964.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String
         -49 (-8.94% of base) : 131469.dasm - System.DirectoryServices.AccountManagement.AccountInfo:GetValueForProperty(System.String):System.Object:this
         -29 (-8.76% of base) : 173700.dasm - System.Text.RegularExpressions.RegexInterpreter:MatchRef(int,int):bool:this
        -142 (-8.55% of base) : 77709.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this
         -67 (-8.49% of base) : 113454.dasm - Microsoft.VisualBasic.Information:SystemTypeName(System.String):System.String
        -127 (-8.49% of base) : 35760.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ParameterHelpers:ReportParameterErrors(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.SourceParameterSymbol,int,Microsoft.CodeAnalysis.DiagnosticBag)
         -95 (-8.33% of base) : 112965.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String
        -174 (-7.74% of base) : 170512.dasm - System.ServiceModel.Syndication.DateTimeHelper:NormalizeTimeZone(System.String,byref):System.String
         -39 (-7.66% of base) : 124042.dasm - System.Configuration.ClientConfigurationHost:OpenExeConfiguration(System.Configuration.ConfigurationFileMap,bool,int,System.String):System.Configuration.Configuration
         -43 (-7.50% of base) : 35523.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AttributeLocationExtensions:ToAttributeLocation(System.String):short
         -63 (-7.43% of base) : 113456.dasm - Microsoft.VisualBasic.Information:OldVbTypeName(System.String):System.String
         -49 (-7.41% of base) : 131468.dasm - System.DirectoryServices.AccountManagement.AccountInfo:GetChangeStatusForProperty(System.String):bool:this
          -2 (-7.41% of base) : 113969.dasm - Microsoft.Win32.RegistryKey:GetRegistryKeyAccess(int):int

1101 total methods with Code Size differences (715 improved, 386 regressed), 325 unchanged.


asm.libraries.crossgen2.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 1351780
Total bytes of diff: 1346635
Total bytes of delta: -5145 (-0.38% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
         172 : 26707.dasm (3.94% of base)
         114 : 115576.dasm (2.24% of base)
          95 : 121235.dasm (2.67% of base)
          63 : 110588.dasm (3.18% of base)
          58 : 51378.dasm (5.70% of base)
          49 : 88453.dasm (1.38% of base)
          49 : 164358.dasm (0.74% of base)
          42 : 70067.dasm (4.44% of base)
          41 : 46824.dasm (3.90% of base)
          37 : 481.dasm (2.10% of base)
          30 : 53510.dasm (2.08% of base)
          26 : 130068.dasm (0.63% of base)
          25 : 55249.dasm (3.90% of base)
          22 : 171640.dasm (6.18% of base)
          21 : 164188.dasm (10.14% of base)
          21 : 200030.dasm (0.57% of base)
          21 : 55327.dasm (3.38% of base)
          21 : 34452.dasm (6.16% of base)
          21 : 48669.dasm (2.29% of base)
          21 : 88227.dasm (0.84% of base)

Top file improvements (bytes):
        -501 : 47412.dasm (-10.73% of base)
        -201 : 47406.dasm (-10.45% of base)
        -195 : 1631.dasm (-6.27% of base)
        -174 : 200104.dasm (-7.73% of base)
        -142 : 26951.dasm (-8.55% of base)
        -135 : 47411.dasm (-9.22% of base)
        -121 : 171732.dasm (-7.33% of base)
        -120 : 171885.dasm (-6.90% of base)
        -109 : 47410.dasm (-9.21% of base)
        -107 : 212482.dasm (-6.21% of base)
        -100 : 51433.dasm (-0.48% of base)
         -99 : 182315.dasm (-9.16% of base)
         -95 : 182314.dasm (-8.33% of base)
         -92 : 73898.dasm (-8.49% of base)
         -85 : 121149.dasm (-5.09% of base)
         -81 : 23873.dasm (-6.11% of base)
         -81 : 95196.dasm (-9.38% of base)
         -79 : 71818.dasm (-1.87% of base)
         -79 : 34372.dasm (-17.83% of base)
         -71 : 194277.dasm (-6.82% of base)

1218 total files with Code Size differences (737 improved, 481 regressed), 367 unchanged.

Top method regressions (bytes):
         172 ( 3.94% of base) : 26707.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this
         114 ( 2.24% of base) : 115576.dasm - System.DateTimeFormat:FormatCustomized(System.DateTime,System.ReadOnlySpan`1[System.Char],System.Globalization.DateTimeFormatInfo,System.TimeSpan,System.Text.StringBuilder):System.Text.StringBuilder
          95 ( 2.67% of base) : 121235.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,bool,bool,System.String):System.Object:this
          63 ( 3.18% of base) : 110588.dasm - System.Globalization.TimeSpanFormat:FormatCustomized(System.TimeSpan,System.ReadOnlySpan`1[System.Char],System.Globalization.DateTimeFormatInfo,System.Text.StringBuilder):System.Text.StringBuilder
          58 ( 5.70% of base) : 51378.dasm - Microsoft.CodeAnalysis.CSharp.BuiltInOperators:GetSignature(int):Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature:this
          49 ( 1.38% of base) : 88453.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseTerm(bool,bool):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionSyntax:this
          49 ( 0.74% of base) : 164358.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,bool,byref,bool):bool:this
          42 ( 4.44% of base) : 70067.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this
          41 ( 3.90% of base) : 46824.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:GetNonGenericExpression(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax
          37 ( 2.10% of base) : 481.dasm - <ParseCommentAsync>d__16:MoveNext():this
          30 ( 2.08% of base) : 53510.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConditionalAccessExpression(Microsoft.CodeAnalysis.CSharp.Syntax.ConditionalAccessExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundConditionalAccess:this
          26 ( 0.63% of base) : 130068.dasm - <ParseAttributeValueSlowAsync>d__532:MoveNext():this
          25 ( 3.90% of base) : 55249.dasm - <SkipUnknownPayloadAsync>d__52:MoveNext():this
          22 ( 6.18% of base) : 171640.dasm - Internal.Cryptography.PkcsHelpers:CreateBestPkcs9AttributeObjectAvailable(System.Security.Cryptography.Oid,System.Byte[]):System.Security.Cryptography.Pkcs.Pkcs9AttributeObject
          21 (10.14% of base) : 164188.dasm - GroupToArgsBinder:ConstructExpandedParameters():bool:this
          21 ( 0.57% of base) : 200030.dasm - System.ServiceModel.Syndication.Rss20FeedFormatter:ReadXml(System.Xml.XmlReader,System.ServiceModel.Syndication.SyndicationFeed):this
          21 ( 3.38% of base) : 55327.dasm - <<ProcessServerControlStreamAsync>g__SkipUnknownPayloadAsync|3>d:MoveNext():this
          21 ( 6.16% of base) : 34452.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:FieldLoadPrefersRef(Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this
          21 ( 2.29% of base) : 48669.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:AssignImpl(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,bool,bool):this
          21 ( 0.84% of base) : 88227.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseExitStatement():Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.StatementSyntax:this

Top method improvements (bytes):
        -501 (-10.73% of base) : 47412.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -201 (-10.45% of base) : 47406.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
        -195 (-6.27% of base) : 1631.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this
        -174 (-7.73% of base) : 200104.dasm - System.ServiceModel.Syndication.DateTimeHelper:NormalizeTimeZone(System.String,byref):System.String
        -142 (-8.55% of base) : 26951.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this
        -135 (-9.22% of base) : 47411.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetOperatorKind(System.String):ushort
        -121 (-7.33% of base) : 171732.dasm - Microsoft.CSharp.CSharpCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,bool):System.String:this
        -120 (-6.90% of base) : 171885.dasm - Microsoft.VisualBasic.VBCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,bool):System.String:this
        -109 (-9.21% of base) : 47410.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort
        -107 (-6.21% of base) : 212482.dasm - System.Security.Cryptography.Xml.CryptoHelpers:CreateFromKnownName(System.String):System.Object
        -100 (-0.48% of base) : 51433.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this
         -99 (-9.16% of base) : 182315.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String
         -95 (-8.33% of base) : 182314.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String
         -92 (-8.49% of base) : 73898.dasm - DocumentationCommentCompiler:GetWellKnownTag(System.String):int
         -85 (-5.09% of base) : 121149.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:ConvertPrimitiveToString(System.Object,System.Xml.Serialization.TypeDesc):System.String:this
         -81 (-6.11% of base) : 23873.dasm - Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:GetTypeForManifestTypeName(System.String):System.Type
         -81 (-9.38% of base) : 95196.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindPredefinedTypeForCref(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):this
         -79 (-1.87% of base) : 71818.dasm - System.Text.EncodingNLS:GetLocalizedEncodingNameResource(int):System.String
         -79 (-17.83% of base) : 34372.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:CodeForJump(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,bool,byref):ushort
         -71 (-6.82% of base) : 194277.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadCompilationOptions(byref):Microsoft.Extensions.DependencyModel.CompilationOptions

Top method regressions (percentages):
          21 (10.14% of base) : 164188.dasm - GroupToArgsBinder:ConstructExpandedParameters():bool:this
          20 ( 7.27% of base) : 15629.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftWindowsNDISPacketCapture.PacketFragmentArgs:FindPrintableTcpStream(long,int,int,bool):System.String:this
          22 ( 6.18% of base) : 171640.dasm - Internal.Cryptography.PkcsHelpers:CreateBestPkcs9AttributeObjectAvailable(System.Security.Cryptography.Oid,System.Byte[]):System.Security.Cryptography.Pkcs.Pkcs9AttributeObject
          21 ( 6.16% of base) : 34452.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:FieldLoadPrefersRef(Microsoft.CodeAnalysis.CSharp.BoundExpression):bool:this
          19 ( 5.76% of base) : 47423.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetBinaryExpression(ushort):ushort
          58 ( 5.70% of base) : 51378.dasm - Microsoft.CodeAnalysis.CSharp.BuiltInOperators:GetSignature(int):Microsoft.CodeAnalysis.CSharp.BinaryOperatorSignature:this
          12 ( 5.58% of base) : 120492.dasm - System.Xml.Serialization.XmlSchemaImporter:ImportArray(System.Xml.Schema.XmlSchemaElement,System.String,System.String,bool):System.Xml.Serialization.ElementAccessor:this
          16 ( 5.33% of base) : 191513.dasm - System.Net.Security.TlsFrameHelper:TryGetFrameInfo(System.ReadOnlySpan`1[System.Byte],byref,int,System.Net.Security.TlsFrameHelper+HelloExtensionCallback):bool
           4 ( 5.19% of base) : 68452.dasm - Microsoft.CodeAnalysis.DllImportData:get_CallingConvention():int:this
          19 ( 5.00% of base) : 208557.dasm - <WriteAsyncCore>d__4:MoveNext():this
          16 ( 4.85% of base) : 63591.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[System.Int32],int,Microsoft.FSharp.Collections.MapTree`2[System.Int32, System.Int32]):Microsoft.FSharp.Collections.MapTree`2[System.Int32, System.Int32]
          18 ( 4.76% of base) : 63621.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[System.Int32],int,Microsoft.FSharp.Collections.MapTree`2[System.Int32, System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[System.Int32, System.__Canon]
          17 ( 4.64% of base) : 59024.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[System.__Canon],System.__Canon,Microsoft.FSharp.Collections.MapTree`2[System.__Canon, System.__Canon]):Microsoft.FSharp.Collections.MapTree`2[System.__Canon, System.__Canon]
          42 ( 4.44% of base) : 70067.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this
          11 ( 4.37% of base) : 165332.dasm - System.UriHelper:TestForSubPath(long,int,long,int,bool):bool
          20 ( 4.20% of base) : 131692.dasm - System.Xml.Ucs4Decoder:Convert(System.Byte[],int,int,System.Char[],int,int,bool,byref,byref,byref):this
          12 ( 4.12% of base) : 50846.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel:GetMethodParameterSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this
         172 ( 3.94% of base) : 26707.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this
          41 ( 3.90% of base) : 46824.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:GetNonGenericExpression(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax):Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax
          25 ( 3.90% of base) : 55249.dasm - <SkipUnknownPayloadAsync>d__52:MoveNext():this

Top method improvements (percentages):
         -79 (-17.83% of base) : 34372.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:CodeForJump(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,bool,byref):ushort
         -27 (-13.85% of base) : 98335.dasm - System.Speech.Internal.ObjectTokens.SAPICategories:CompareVersions(System.String,System.String):int
         -59 (-11.99% of base) : 132564.dasm - System.Xml.BinXmlSqlDecimal:.ctor(System.Byte[],int,bool):this
         -28 (-11.57% of base) : 135845.dasm - System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex:CheckIfTypeSerializable(System.Type,bool):this
         -28 (-11.57% of base) : 135862.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContextComplex:CheckIfTypeSerializable(System.Type,bool):this
         -64 (-10.94% of base) : 74957.dasm - TypeBinder:LookupPredefinedTypeName(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ushort,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,bool):Microsoft.CodeAnalysis.VisualBasic.SingleLookupResult
        -501 (-10.73% of base) : 47412.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
          -9 (-10.59% of base) : 125697.dasm - Parser:ParseTimeAndWhitespace(int):bool:this
        -201 (-10.45% of base) : 47406.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
         -60 (-10.15% of base) : 143401.dasm - System.DirectoryServices.AccountManagement.AccountInfo:GetChangeStatusForProperty(System.String):bool:this
         -81 (-9.38% of base) : 95196.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindPredefinedTypeForCref(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax,Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]):this
         -69 (-9.22% of base) : 123614.dasm - System.Xml.Xsl.XPath.XPathScanner:CheckAxis():int:this
        -135 (-9.22% of base) : 47411.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetOperatorKind(System.String):ushort
        -109 (-9.21% of base) : 47410.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort
         -99 (-9.16% of base) : 182315.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String
         -29 (-8.73% of base) : 167340.dasm - System.Text.RegularExpressions.RegexInterpreter:MatchRef(int,int):bool:this
         -38 (-8.68% of base) : 79318.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts:GetBlockName(ushort):System.String
        -142 (-8.55% of base) : 26951.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this
         -69 (-8.52% of base) : 94787.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.DeclarationTreeBuilder:GetModifiers(Microsoft.CodeAnalysis.SyntaxTokenList):int
         -67 (-8.49% of base) : 181832.dasm - Microsoft.VisualBasic.Information:SystemTypeName(System.String):System.String

1218 total methods with Code Size differences (737 improved, 481 regressed), 367 unchanged.


asm.libraries.pmi.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 2040381
Total bytes of diff: 2033377
Total bytes of delta: -7004 (-0.34% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
         181 : 111009.dasm (4.04% of base)
          97 : 130767.dasm (2.42% of base)
          86 : 147706.dasm (5.33% of base)
          85 : 220040.dasm (5.37% of base)
          57 : 216684.dasm (1.36% of base)
          47 : 55390.dasm (1.58% of base)
          44 : 147357.dasm (2.26% of base)
          42 : 74602.dasm (4.50% of base)
          41 : 21099.dasm (1.11% of base)
          38 : 40729.dasm (1.73% of base)
          37 : 47357.dasm (0.97% of base)
          37 : 47361.dasm (1.37% of base)
          34 : 8218.dasm (7.56% of base)
          33 : 123586.dasm (1.53% of base)
          32 : 123576.dasm (3.08% of base)
          32 : 226709.dasm (0.85% of base)
          32 : 104688.dasm (1.39% of base)
          31 : 47034.dasm (3.09% of base)
          29 : 121539.dasm (4.55% of base)
          29 : 8219.dasm (6.36% of base)

Top file improvements (bytes):
        -498 : 26883.dasm (-10.31% of base)
        -246 : 141984.dasm (-3.14% of base)
        -201 : 103558.dasm (-7.79% of base)
        -198 : 26889.dasm (-9.96% of base)
        -173 : 216637.dasm (-7.12% of base)
        -142 : 110743.dasm (-8.18% of base)
        -135 : 26884.dasm (-8.91% of base)
        -121 : 152424.dasm (-7.06% of base)
        -118 : 152288.dasm (-6.14% of base)
        -112 : 23040.dasm (-0.45% of base)
        -106 : 26885.dasm (-8.66% of base)
        -102 : 215977.dasm (-4.93% of base)
        -102 : 148110.dasm (-8.54% of base)
         -98 : 148111.dasm (-7.81% of base)
         -92 : 71097.dasm (-8.24% of base)
         -81 : 83840.dasm (-5.77% of base)
         -79 : 138312.dasm (-1.75% of base)
         -79 : 42711.dasm (-16.70% of base)
         -78 : 52810.dasm (-0.22% of base)
         -77 : 130802.dasm (-2.18% of base)

1553 total files with Code Size differences (924 improved, 629 regressed), 628 unchanged.

Top method regressions (bytes):
         181 ( 4.04% of base) : 111009.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this
          97 ( 2.42% of base) : 130767.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping,bool,bool,System.String):System.Object:this
          86 ( 5.33% of base) : 147706.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],bool,System.Type,byref,byref,Container):System.Collections.Generic.List`1[[Microsoft.VisualBasic.CompilerServices.Symbols+Method, Microsoft.VisualBasic.Core, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
          85 ( 5.37% of base) : 220040.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
          57 ( 1.36% of base) : 216684.dasm - System.ServiceModel.Syndication.Rss20FeedFormatter:ReadXml(System.Xml.XmlReader,System.ServiceModel.Syndication.SyndicationFeed):this
          47 ( 1.58% of base) : 55390.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:ParseTerm(bool,bool):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExpressionSyntax:this
          44 ( 2.26% of base) : 147357.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object
          42 ( 4.50% of base) : 74602.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this
          41 ( 1.11% of base) : 21099.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindConstructorInitializer(Microsoft.CodeAnalysis.CSharp.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          38 ( 1.73% of base) : 40729.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this
          37 ( 0.97% of base) : 47357.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindInnerJoinClause(Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax,System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase:this
          37 ( 1.37% of base) : 47361.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindGroupJoinClause(Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax,System.Collections.Generic.HashSet`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Microsoft.CodeAnalysis.SyntaxList`1+Enumerator[[Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundQueryClause:this
          34 ( 7.56% of base) : 8218.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Byte],ubyte,Microsoft.FSharp.Collections.MapTree`2[Byte,Nullable`1]):Microsoft.FSharp.Collections.MapTree`2[Byte,Nullable`1]
          33 ( 1.53% of base) : 123586.dasm - <ScanAttlist2Async>d__183:MoveNext():this
          32 ( 3.08% of base) : 123576.dasm - <ScanDoctype1Async>d__178:MoveNext():this
          32 ( 0.85% of base) : 226709.dasm - Internal.IL.Stubs.UnsafeIntrinsics:EmitIL(Internal.TypeSystem.MethodDesc):Internal.IL.MethodIL
          32 ( 1.39% of base) : 104688.dasm - <ParseCommentAsync>d__16:MoveNext():this
          31 ( 3.09% of base) : 47034.dasm - Microsoft.CodeAnalysis.VisualBasic.ReadWriteWalker:NoteReceiverReadOrWritten(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,System.Collections.Generic.HashSet`1[[Microsoft.CodeAnalysis.VisualBasic.Symbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
          29 ( 4.55% of base) : 121539.dasm - <DtdParserProxy_PushEntityAsync>d__495:MoveNext():this
          29 ( 6.36% of base) : 8219.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Int16],short,Microsoft.FSharp.Collections.MapTree`2[Int16,Nullable`1]):Microsoft.FSharp.Collections.MapTree`2[Int16,Nullable`1]

Top method improvements (bytes):
        -498 (-10.31% of base) : 26883.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -246 (-3.14% of base) : 141984.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,bool,byref,bool):bool:this
        -201 (-7.79% of base) : 103558.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this
        -198 (-9.96% of base) : 26889.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
        -173 (-7.12% of base) : 216637.dasm - System.ServiceModel.Syndication.DateTimeHelper:NormalizeTimeZone(System.String,byref):System.String
        -142 (-8.18% of base) : 110743.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this
        -135 (-8.91% of base) : 26884.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetOperatorKind(System.String):ushort
        -121 (-7.06% of base) : 152424.dasm - Microsoft.CSharp.CSharpCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,bool):System.String:this
        -118 (-6.14% of base) : 152288.dasm - Microsoft.VisualBasic.VBCodeGenerator:GetBaseTypeOutput(System.CodeDom.CodeTypeReference,bool):System.String:this
        -112 (-0.45% of base) : 23040.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this
        -106 (-8.66% of base) : 26885.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort
        -102 (-4.93% of base) : 215977.dasm - System.Security.Cryptography.Xml.CryptoHelpers:CreateFromKnownName(System.String):System.Object
        -102 (-8.54% of base) : 148110.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String
         -98 (-7.81% of base) : 148111.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String
         -92 (-8.24% of base) : 71097.dasm - DocumentationCommentCompiler:GetWellKnownTag(System.String):int
         -81 (-5.77% of base) : 83840.dasm - Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:GetTypeForManifestTypeName(System.String):System.Type
         -79 (-1.75% of base) : 138312.dasm - System.Text.EncodingNLS:GetLocalizedEncodingNameResource(int):System.String
         -79 (-16.70% of base) : 42711.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:CodeForJump(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,bool,byref):ushort
         -78 (-0.22% of base) : 52810.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this
         -77 (-2.18% of base) : 130802.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WritePrimitive(System.Xml.Serialization.TypeMapping,System.Func`2[[System.Object, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Object):System.Object:this

Top method regressions (percentages):
          18 ( 7.66% of base) : 54286.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:HasSideEffects(Microsoft.CodeAnalysis.VisualBasic.BoundStatement):bool
          34 ( 7.56% of base) : 8218.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Byte],ubyte,Microsoft.FSharp.Collections.MapTree`2[Byte,Nullable`1]):Microsoft.FSharp.Collections.MapTree`2[Byte,Nullable`1]
          20 ( 6.67% of base) : 92066.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftWindowsNDISPacketCapture.PacketFragmentArgs:FindPrintableTcpStream(long,int,int,bool):System.String:this
          29 ( 6.36% of base) : 8219.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Int16],short,Microsoft.FSharp.Collections.MapTree`2[Int16,Nullable`1]):Microsoft.FSharp.Collections.MapTree`2[Int16,Nullable`1]
          13 ( 6.02% of base) : 142088.dasm - GroupToArgsBinder:ConstructExpandedParameters():bool:this
          19 ( 5.76% of base) : 26926.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetBinaryExpression(ushort):ushort
          12 ( 5.50% of base) : 131516.dasm - System.Xml.Serialization.XmlSchemaImporter:ImportArray(System.Xml.Schema.XmlSchemaElement,System.String,System.String,bool):System.Xml.Serialization.ElementAccessor:this
          85 ( 5.37% of base) : 220040.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:ComputeMultipleCharClasses(System.Text.RegularExpressions.RegexTree,int):System.ValueTuple`2[System.String,System.Boolean][]
          86 ( 5.33% of base) : 147706.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CollectOverloadCandidates(System.Reflection.MemberInfo[],System.Object[],int,System.String[],System.Type[],bool,System.Type,byref,byref,Container):System.Collections.Generic.List`1[[Microsoft.VisualBasic.CompilerServices.Symbols+Method, Microsoft.VisualBasic.Core, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
           4 ( 5.19% of base) : 76288.dasm - Microsoft.CodeAnalysis.DllImportData:get_CallingConvention():int:this
          16 ( 4.88% of base) : 26222.dasm - Microsoft.CodeAnalysis.CSharp.ExpressionLambdaRewriter:TranslateLambdaBody(Microsoft.CodeAnalysis.CSharp.BoundBlock):Microsoft.CodeAnalysis.CSharp.BoundExpression:this
          17 ( 4.72% of base) : 124803.dasm - System.Xml.Schema.XmlAtomicValue:ValueAs(System.Type,System.Xml.IXmlNamespaceResolver):System.Object:this
           8 ( 4.62% of base) : 22060.dasm - Microsoft.CodeAnalysis.CSharp.MethodTypeInferrer:DoesOutputTypeContain(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol):bool
          21 ( 4.62% of base) : 8221.dasm - Microsoft.FSharp.Collections.MapTreeModule:remove(System.Collections.Generic.IComparer`1[Double],double,Microsoft.FSharp.Collections.MapTree`2[Double,Nullable`1]):Microsoft.FSharp.Collections.MapTree`2[Double,Nullable`1]
          29 ( 4.55% of base) : 121539.dasm - <DtdParserProxy_PushEntityAsync>d__495:MoveNext():this
          42 ( 4.50% of base) : 74602.dasm - Microsoft.CodeAnalysis.Compilation:ConstructModuleSerializationProperties(Microsoft.CodeAnalysis.Emit.EmitOptions,System.String,System.Guid):Microsoft.Cci.ModulePropertiesForSerialization:this
          11 ( 4.40% of base) : 204864.dasm - System.UriHelper:TestForSubPath(long,int,long,int,bool):bool
          10 ( 4.33% of base) : 179048.dasm - System.IO.Compression.BrotliStream:WriteAsync(System.ReadOnlyMemory`1[Byte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this
          14 ( 4.15% of base) : 202018.dasm - System.Net.Security.TlsFrameHelper:TryGetFrameInfo(System.ReadOnlySpan`1[Byte],byref,int,HelloExtensionCallback):bool
         181 ( 4.04% of base) : 111009.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this

Top method improvements (percentages):
         -79 (-16.70% of base) : 42711.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:CodeForJump(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,bool,byref):ushort
         -69 (-13.17% of base) : 118934.dasm - System.Xml.BinXmlSqlDecimal:.ctor(System.Byte[],int,bool):this
         -27 (-13.11% of base) : 137751.dasm - System.Speech.Internal.ObjectTokens.SAPICategories:CompareVersions(System.String,System.String):int
          -9 (-10.71% of base) : 126005.dasm - Parser:ParseTimeAndWhitespace(int):bool:this
        -498 (-10.31% of base) : 26883.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort
        -198 (-9.96% of base) : 26889.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
         -29 (-9.45% of base) : 219933.dasm - System.Text.RegularExpressions.RegexInterpreter:MatchRef(int,int):bool:this
         -73 (-9.40% of base) : 128318.dasm - System.Xml.Xsl.XPath.XPathScanner:CheckAxis():int:this
         -69 (-9.30% of base) : 206530.dasm - MethodInfoEqualityComparer:Equals(System.Reflection.MethodInfo,System.Reflection.MethodInfo):bool:this
        -135 (-8.91% of base) : 26884.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetOperatorKind(System.String):ushort
        -106 (-8.66% of base) : 26885.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetPreprocessorKeywordKind(System.String):ushort
         -55 (-8.63% of base) : 70028.dasm - TypeBinder:LookupPredefinedTypeName(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ushort,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,bool):Microsoft.CodeAnalysis.VisualBasic.SingleLookupResult
        -102 (-8.54% of base) : 148110.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:SystemTypeName(System.String):System.String
         -92 (-8.24% of base) : 71097.dasm - DocumentationCommentCompiler:GetWellKnownTag(System.String):int
        -142 (-8.18% of base) : 110743.dasm - System.Data.Common.DbColumn:get_Item(System.String):System.Object:this
         -42 (-8.02% of base) : 172393.dasm - System.DirectoryServices.AccountManagement.AccountInfo:GetValueForProperty(System.String):System.Object:this
         -70 (-7.93% of base) : 148600.dasm - Microsoft.VisualBasic.Information:SystemTypeName(System.String):System.String
         -98 (-7.81% of base) : 148111.dasm - Microsoft.VisualBasic.CompilerServices.Versioned:VbTypeName(System.String):System.String
        -201 (-7.79% of base) : 103558.dasm - Newtonsoft.Json.Schema.JsonSchemaBuilder:ProcessSchemaProperties(Newtonsoft.Json.Linq.JObject):this
         -43 (-7.48% of base) : 40184.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AttributeLocationExtensions:ToAttributeLocation(System.String):short

1553 total methods with Code Size differences (924 improved, 629 regressed), 628 unchanged.


asm.tests.pmi.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 201963
Total bytes of diff: 202232
Total bytes of delta: 269 (0.13% of base)
    diff is a regression.
Detail diffs


Top file regressions (bytes):
          84 : 217445.dasm (3.94% of base)
          61 : 167469.dasm (0.28% of base)
          40 : 232237.dasm (1.50% of base)
          18 : 84203.dasm (1.47% of base)
          14 : 235483.dasm (4.19% of base)
          14 : 235481.dasm (4.18% of base)
          14 : 235479.dasm (4.19% of base)
          14 : 235482.dasm (4.23% of base)
          14 : 235478.dasm (4.23% of base)
          14 : 235477.dasm (4.18% of base)
          12 : 232261.dasm (3.07% of base)
          12 : 232258.dasm (2.90% of base)
          12 : 55792.dasm (5.50% of base)
          11 : 29.dasm (1.40% of base)
           9 : 242758.dasm (1.77% of base)
           8 : 232257.dasm (2.14% of base)
           8 : 232263.dasm (1.80% of base)
           8 : 232259.dasm (2.33% of base)
           8 : 232256.dasm (2.47% of base)
           8 : 232262.dasm (1.86% of base)

Top file improvements (bytes):
         -43 : 247238.dasm (-4.21% of base)
         -30 : 167302.dasm (-3.16% of base)
         -19 : 167507.dasm (-1.03% of base)
         -15 : 35.dasm (-0.66% of base)
         -15 : 231104.dasm (-6.25% of base)
          -8 : 166750.dasm (-3.32% of base)
          -7 : 239377.dasm (-0.28% of base)
          -6 : 166749.dasm (-1.80% of base)
          -6 : 245243.dasm (-0.92% of base)
          -6 : 166747.dasm (-1.70% of base)
          -4 : 84923.dasm (-1.72% of base)
          -4 : 81714.dasm (-2.55% of base)
          -3 : 245968.dasm (-0.22% of base)
          -3 : 209301.dasm (-0.07% of base)
          -2 : 166751.dasm (-0.33% of base)
          -2 : 242524.dasm (-0.89% of base)
          -2 : 231103.dasm (-0.24% of base)
          -2 : 245844.dasm (-2.90% of base)
          -2 : 223284.dasm (-0.01% of base)
          -2 : 85.dasm (-0.93% of base)

67 total files with Code Size differences (28 improved, 39 regressed), 27 unchanged.

Top method regressions (bytes):
          84 ( 3.94% of base) : 217445.dasm - BenchmarkConsoleApplication.BenchmarkSystem:ProcessCommandLine(System.String[]):this
          61 ( 0.28% of base) : 167469.dasm - ReliabilityConfig:GetTestsToRun(System.String):this
          40 ( 1.50% of base) : 232237.dasm - BringUpTest:Main():int
          18 ( 1.47% of base) : 84203.dasm - JitTest.Test:Main():int
          14 ( 4.19% of base) : 235483.dasm - FloatOvfToInt:TestValuesDoubleByte():int
          14 ( 4.18% of base) : 235481.dasm - FloatOvfToInt:TestValuesDoubleInt():int
          14 ( 4.19% of base) : 235479.dasm - FloatOvfToInt:TestValuesFloatByte():int
          14 ( 4.23% of base) : 235482.dasm - FloatOvfToInt:TestValuesDoubleShort():int
          14 ( 4.23% of base) : 235478.dasm - FloatOvfToInt:TestValuesFloatShort():int
          14 ( 4.18% of base) : 235477.dasm - FloatOvfToInt:TestValuesFloatInt():int
          12 ( 3.07% of base) : 232261.dasm - BringUpTest:method_3I4S(int,int,int,Point,Point,Point,Point):int
          12 ( 2.90% of base) : 232258.dasm - BringUpTest:method_4I4S(int,int,int,int,Point,Point,Point,Point):int
          12 ( 5.50% of base) : 55792.dasm - BenchmarksGame.KNucleotide_9:find(System.Byte[],System.Byte[],int,byref):int
          11 ( 1.40% of base) : 29.dasm - System.Text.RegularExpressions.RegexParser:CountCaptures():this
           9 ( 1.77% of base) : 242758.dasm - request:Main(System.String[]):int
           8 ( 2.14% of base) : 232257.dasm - BringUpTest:method_4S4I(Point,Point,Point,Point,int,int,int,int):int
           8 ( 1.80% of base) : 232263.dasm - BringUpTest:method_2I2D4S(int,int,double,double,Point,Point,Point,Point):int
           8 ( 2.33% of base) : 232259.dasm - BringUpTest:method_1I4S(int,Point,Point,Point,Point):int
           8 ( 2.47% of base) : 232256.dasm - BringUpTest:method_4S(Point,Point,Point,Point):int
           8 ( 1.86% of base) : 232262.dasm - BringUpTest:method_2I4S2D(int,int,Point,Point,Point,Point,double,double):int

Top method improvements (bytes):
         -43 (-4.21% of base) : 247238.dasm - InitializeArray:ArrayEquals(System.Array,System.Array):bool
         -30 (-3.16% of base) : 167302.dasm - EcmaObjectLookupHashtable:CreateValueFromKey(System.Reflection.Metadata.EntityHandle):IEntityHandleObject:this
         -19 (-1.03% of base) : 167507.dasm - ReliabilityFramework:ExecuteFromLog(System.String):this
         -15 (-0.66% of base) : 35.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this
         -15 (-6.25% of base) : 231104.dasm - GC_Microbenchmarks.GCMicroBench:RunTest():this
          -8 (-3.32% of base) : 166750.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this
          -7 (-0.28% of base) : 239377.dasm - Test:func(int):int:this
          -6 (-1.80% of base) : 166749.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseLocalsSignature():Internal.TypeSystem.LocalVariableDefinition[]:this
          -6 (-0.92% of base) : 245243.dasm - GitHub_23159:BytesOrdinalEqualsStringAndAscii(System.String,System.Span`1[Byte]):bool
          -6 (-1.70% of base) : 166747.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParsePropertySignature():Internal.TypeSystem.PropertySignature:this
          -4 (-1.72% of base) : 84923.dasm - App.Foo:Main(System.String[]):int
          -4 (-2.55% of base) : 81714.dasm - Program:Main():int
          -3 (-0.22% of base) : 245968.dasm - PropsArIList:Main():int
          -3 (-0.07% of base) : 209301.dasm - <RunSubprocess>d__4:MoveNext():this
          -2 (-0.33% of base) : 166751.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMarshalAsDescriptor():Internal.TypeSystem.MarshalAsDescriptor:this
          -2 (-0.89% of base) : 242524.dasm - Tracing.Tests.Common.Assert:NotEqual(System.String,double,double)
          -2 (-0.24% of base) : 231103.dasm - GC_Microbenchmarks.GCMicroBench:ParseArgs(System.String[]):bool:this
          -2 (-2.90% of base) : 245844.dasm - P:GetESideEffect():int
          -2 (-0.01% of base) : 223284.dasm - shortMDArrTest:Main():int
          -2 (-0.93% of base) : 85.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:FindLeadingAnchor(System.Text.RegularExpressions.RegexTree):int

Top method regressions (percentages):
          12 ( 5.50% of base) : 55792.dasm - BenchmarksGame.KNucleotide_9:find(System.Byte[],System.Byte[],int,byref):int
          14 ( 4.23% of base) : 235482.dasm - FloatOvfToInt:TestValuesDoubleShort():int
          14 ( 4.23% of base) : 235478.dasm - FloatOvfToInt:TestValuesFloatShort():int
          14 ( 4.19% of base) : 235483.dasm - FloatOvfToInt:TestValuesDoubleByte():int
          14 ( 4.19% of base) : 235479.dasm - FloatOvfToInt:TestValuesFloatByte():int
          14 ( 4.18% of base) : 235481.dasm - FloatOvfToInt:TestValuesDoubleInt():int
          14 ( 4.18% of base) : 235477.dasm - FloatOvfToInt:TestValuesFloatInt():int
          84 ( 3.94% of base) : 217445.dasm - BenchmarkConsoleApplication.BenchmarkSystem:ProcessCommandLine(System.String[]):this
          12 ( 3.07% of base) : 232261.dasm - BringUpTest:method_3I4S(int,int,int,Point,Point,Point,Point):int
          12 ( 2.90% of base) : 232258.dasm - BringUpTest:method_4I4S(int,int,int,int,Point,Point,Point,Point):int
           8 ( 2.47% of base) : 232256.dasm - BringUpTest:method_4S(Point,Point,Point,Point):int
           8 ( 2.33% of base) : 232259.dasm - BringUpTest:method_1I4S(int,Point,Point,Point,Point):int
           8 ( 2.17% of base) : 232260.dasm - BringUpTest:method_2I4S(int,int,Point,Point,Point,Point):int
           8 ( 2.14% of base) : 232257.dasm - BringUpTest:method_4S4I(Point,Point,Point,Point,int,int,int,int):int
           8 ( 2.01% of base) : 166387.dasm - Internal.TypeSystem.TypeSystemHelpers:TryResolveConstraintMethodApprox(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.MethodDesc,byref):Internal.TypeSystem.MethodDesc
           4 ( 1.96% of base) : 86411.dasm - ILGEN_CLASS:DoubleToInt64(double):long
           8 ( 1.86% of base) : 232262.dasm - BringUpTest:method_2I4S2D(int,int,Point,Point,Point,Point,double,double):int
           8 ( 1.80% of base) : 232263.dasm - BringUpTest:method_2I2D4S(int,int,double,double,Point,Point,Point,Point):int
           9 ( 1.77% of base) : 242758.dasm - request:Main(System.String[]):int
           8 ( 1.59% of base) : 232264.dasm - BringUpTest:method_2I2D4S2D(int,int,double,double,Point,Point,Point,Point,double,double):int

Top method improvements (percentages):
         -15 (-6.25% of base) : 231104.dasm - GC_Microbenchmarks.GCMicroBench:RunTest():this
         -43 (-4.21% of base) : 247238.dasm - InitializeArray:ArrayEquals(System.Array,System.Array):bool
          -8 (-3.32% of base) : 166750.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this
         -30 (-3.16% of base) : 167302.dasm - EcmaObjectLookupHashtable:CreateValueFromKey(System.Reflection.Metadata.EntityHandle):IEntityHandleObject:this
          -2 (-2.90% of base) : 245844.dasm - P:GetESideEffect():int
          -4 (-2.55% of base) : 81714.dasm - Program:Main():int
          -6 (-1.80% of base) : 166749.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseLocalsSignature():Internal.TypeSystem.LocalVariableDefinition[]:this
          -2 (-1.74% of base) : 166748.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseFieldSignature():Internal.TypeSystem.TypeDesc:this
          -4 (-1.72% of base) : 84923.dasm - App.Foo:Main(System.String[]):int
          -6 (-1.70% of base) : 166747.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParsePropertySignature():Internal.TypeSystem.PropertySignature:this
         -19 (-1.03% of base) : 167507.dasm - ReliabilityFramework:ExecuteFromLog(System.String):this
          -2 (-0.96% of base) : 167077.dasm - ILVerify.TypeSystemHelpers:GetIntermediateType(Internal.TypeSystem.TypeDesc):Internal.TypeSystem.TypeDesc
          -2 (-0.93% of base) : 85.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:FindLeadingAnchor(System.Text.RegularExpressions.RegexTree):int
          -6 (-0.92% of base) : 245243.dasm - GitHub_23159:BytesOrdinalEqualsStringAndAscii(System.String,System.Span`1[Byte]):bool
          -2 (-0.89% of base) : 242524.dasm - Tracing.Tests.Common.Assert:NotEqual(System.String,double,double)
          -2 (-0.74% of base) : 81689.dasm - Hello1:Main():int
         -15 (-0.66% of base) : 35.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this
          -2 (-0.33% of base) : 166751.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMarshalAsDescriptor():Internal.TypeSystem.MarshalAsDescriptor:this
          -7 (-0.28% of base) : 239377.dasm - Test:func(int):int:this
          -2 (-0.24% of base) : 231103.dasm - GC_Microbenchmarks.GCMicroBench:ParseArgs(System.String[]):bool:this

67 total methods with Code Size differences (28 improved, 39 regressed), 27 unchanged.


Copy link
Contributor

@briansull briansull left a comment

Choose a reason for hiding this comment

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

Looks Good.
But I note that "diff is a regression" for asm.tests.pmi.windows.x64.checked.

Probably worth investigating the largest regressions

@AndyAyersMS
Copy link
Member Author

The total regression across the 200K methods is 269 bytes. Looked a few of the worst cases and don't see anything that can easily be addressed.

One somewhat related thing I spotted in BenchmarksGame.KNucleotide_9:find(System.Byte[],System.Byte[],int,byref):int is that when we move a non-loop block out of an inner loops, we may also move it out of the enclosing loop that it belongs to, and so we end up with messy layout in the outer loop. Note the "return; always; return" flow in the after picture below when we move BB08. Seems like we ought to be willing to put the block into the proper loop scope, even if there's no "cheap" placement there (that is, even if we have to add flow to branch around it... presumably one of the blocks has a branch targets outside proper loop, and we can reverse that branch to make room.

cc @BruceForstall

(or perhaps the issue is that we don't recognize the full extent of the BB02 loop because it has multiple back edges...)

-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds           weight    lp [IL range]     [jump]      [EH region]         [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0018]  1                             1       [???..???)                                     keep i internal 
BB02 [0000]  3       BB01,BB05,BB08        1       [000..004)-> BB06 ( cond )                     i Loop bwd bwd-target 
BB03 [0001]  1       BB02                  0.50    [004..014)-> BB15 ( cond )                     i idxlen bwd 
BB04 [0014]  1       BB03                  0.50    [004..005)-> BB14 ( cond )                     i hascall gcsafe idxlen bwd 
BB05 [0003]  1       BB04                  0.50    [016..025)-> BB02 (always)                     i hascall gcsafe 
BB06 [0004]  1       BB02                  0.50    [025..02F)-> BB09 (always)                     i idxlen bwd 
BB07 [0005]  1       BB10                  0.50    [02F..044)-> BB09 ( cond )                     i Loop idxlen bwd bwd-target 
BB08 [0006]  1       BB07                  0.50    [044..051)-> BB02 (always)                     i hascall 
BB09 [0007]  2       BB06,BB07             0.50    [051..055)-> BB11 ( cond )                     i bwd 
BB10 [0008]  1       BB09                  0.50    [055..05A)-> BB07 ( cond )                     i bwd 
BB11 [0009]  2       BB09,BB10             0.50    [05A..05F)-> BB14 ( cond )                     i 
BB12 [0011]  1       BB11                  0.50    [061..063)                                     i 
BB13 [0017]  1       BB12                  0.50    [???..???)        (return)                     keep internal 
BB14 [0016]  2       BB04,BB11             0.50    [???..???)        (return)                     internal 
BB15 [0013]  1       BB03                  0       [004..005)        (throw )                     i rare hascall gcsafe bwd 
-----------------------------------------------------------------------------------------------------------------------------------------

*************** In fgDebugCheckBBlist
*************** In optFindNaturalLoops()
Recorded loop L00, from BB02 to BB05 (Head=BB01, Entry=BB02, ExitCnt=3)
Relocated block [BB08..BB08] inserted after BB13
Recorded loop L01, from BB07 to BB10 (Head=BB06, Entry=BB09, ExitCnt=3)

*************** Before renumbering the basic blocks

-----------------------------------------------------------------------------------------------------------------------------------------
BBnum BBid ref try hnd preds           weight    lp [IL range]     [jump]      [EH region]         [flags]
-----------------------------------------------------------------------------------------------------------------------------------------
BB01 [0018]  1                             1       [???..???)                                     keep i internal 
BB02 [0000]  3       BB01,BB05,BB08        1       [000..004)-> BB06 ( cond )                     i Loop bwd bwd-target 
BB03 [0001]  1       BB02                  0.50    [004..014)-> BB15 ( cond )                     i idxlen bwd 
BB04 [0014]  1       BB03                  0.50    [004..005)-> BB14 ( cond )                     i hascall gcsafe idxlen bwd 
BB05 [0003]  1       BB04                  0.50    [016..025)-> BB02 (always)                     i hascall gcsafe 
BB06 [0004]  1       BB02                  0.50    [025..02F)-> BB09 (always)                     i idxlen bwd 
BB07 [0005]  1       BB10                  0.50    [02F..044)-> BB08 ( cond )                     i Loop idxlen bwd bwd-target 
BB09 [0007]  2       BB06,BB07             0.50    [051..055)-> BB11 ( cond )                     i bwd 
BB10 [0008]  1       BB09                  0.50    [055..05A)-> BB07 ( cond )                     i bwd 
BB11 [0009]  2       BB09,BB10             0.50    [05A..05F)-> BB14 ( cond )                     i 
BB12 [0011]  1       BB11                  0.50    [061..063)                                     i 
BB13 [0017]  1       BB12                  0.50    [???..???)        (return)                     keep internal 
BB08 [0006]  1       BB07                  0.50    [044..051)-> BB02 (always)                     i hascall 
BB14 [0016]  2       BB04,BB11             0.50    [???..???)        (return)                     internal 
BB15 [0013]  1       BB03                  0       [004..005)        (throw )                     i rare hascall gcsafe bwd 
-----------------------------------------------------------------------------------------------------------------------------------------

The upshot of this is that we create an "island" block that is only ever jumped to and from (IG09)

G_M28147_IG08:        ; , epilog, nogc, extend
       add      rsp, 32
       pop      rbx
       pop      rbp
       pop      rsi
       pop      rdi
       pop      r14
       ret      
						;; bbWeight=0.50 PerfScore 1.88
G_M28147_IG09:        ; gcVars=0000000000000000 {}, gcrefRegs=00000088 {rbx rdi}, byrefRegs=00000040 {rsi}, gcvars, byref
       ; gcrRegs +[rbx rdi]
       xor      eax, eax
       mov      dword ptr [rsi], eax
       jmp      G_M28147_IG02
						;; bbWeight=4    PerfScore 13.00
G_M28147_IG10:        ; gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
       ; gcrRegs -[rbx rdi]
       ; byrRegs -[rsi]
       mov      eax, -1
						;; bbWeight=0.50 PerfScore 0.12
G_M28147_IG11:        ; , epilog, nogc, extend
       add      rsp, 32
       pop      rbx
       pop      rbp
       pop      rsi
       pop      rdi
       pop      r14
       ret

@AndyAyersMS
Copy link
Member Author

Installer failures look like instances of #51372.

Not sure about the innerloop failures ... I suppose I'll retry the failed part.

D:\workspace\_work\1\s\.dotnet\sdk\6.0.100-preview.2.21155.3\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(404,5): error MSB6006: "D:\workspace\_work\1\s\/dotnet.cmd" exited with code -2147483645. [D:\workspace\_work\1\s\src\installer\pkg\sfx\Microsoft.NETCore.App\Microsoft.NETCore.App.Runtime.sfxproj]
D:\workspace\_work\1\s\.dotnet\sdk\6.0.100-preview.2.21155.3\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Publish.targets(302,5): error NETSDK1096: Optimizing assemblies for performance failed. You can either exclude the failing assemblies from being optimized, or set the PublishReadyToRun property to false. [D:\workspace\_work\1\s\src\installer\pkg\sfx\Microsoft.NETCore.App\Microsoft.NETCore.App.Runtime.sfxproj]

@AndyAyersMS
Copy link
Member Author

Hmm, failure recurred.

Can repro locally; bin log shows

C:\repos\runtime0\src\coreclr\jit\fgflow.cpp:355
Assertion failed 'pred' in 'System.Xml.XmlSqlBinaryReader:ReadContentAsLong():long:this' during 'Update flow graph early pass' (IL size 397)

Now to try and debug...

@AndyAyersMS AndyAyersMS merged commit 78178fc into dotnet:main Apr 17, 2021
@AndyAyersMS AndyAyersMS deleted the FlowGraphFix2 branch April 17, 2021 15:45
@ghost ghost locked as resolved and limited conversation to collaborators May 17, 2021
@karelz karelz added this to the 6.0.0 milestone May 20, 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.

Multi-Conditional Switch Statements produce sub-optimal JIT code
3 participants