Skip to content

[JitDiff X64] [hez2010] JIT: Devirtualize shared generic virtual methods #1764

@MihuBot

Description

@MihuBot

Job completed in 18 minutes 41 seconds (remote runner delay: 1 minute 26 seconds).
dotnet/runtime#123323

Main commit: dotnet/runtime@912f1e2
PR commit: hez2010/runtime@e96d509

Diffs

Diffs
Found 91 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45380141
Total bytes of diff: 45384475
Total bytes of delta: 4334 (0.01 % of base)
Total relative delta: 19.45
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
        4590 : System.Linq.Parallel.dasm (0.20 % of base)
          44 : System.ComponentModel.TypeConverter.dasm (0.01 % of base)
          18 : System.Linq.Expressions.dasm (0.00 % of base)
           7 : System.Data.Common.dasm (0.00 % of base)

Top file improvements (bytes):
        -258 : System.Security.Cryptography.Pkcs.dasm (-0.06 % of base)
         -49 : System.Text.Json.dasm (-0.00 % of base)
         -18 : Microsoft.Extensions.Options.dasm (-0.05 % of base)

7 total files with Code Size differences (3 improved, 4 regressed), 254 unchanged.

Top method regressions (bytes):
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[byte](System.Linq.Parallel.PartitionedStream`2[System.__Canon,byte]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[double](System.Linq.Parallel.PartitionedStream`2[System.__Canon,double]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[int](System.Linq.Parallel.PartitionedStream`2[System.__Canon,int]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[long](System.Linq.Parallel.PartitionedStream`2[System.__Canon,long]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[short](System.Linq.Parallel.PartitionedStream`2[System.__Canon,short]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[System.Numerics.Vector`1[float]](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Numerics.Vector`1[float]]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[byte,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[byte,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[double,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[int,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[int,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[long,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[long,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[short,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[short,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.Nullable`1[int],System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Nullable`1[int],System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Numerics.Vector`1[float],System.__Canon]):this (FullOpts)
          44 (35.77 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.DelegatingTypeDescriptionProvider:RegisterType[System.__Canon]():this (FullOpts)
          18 (2.15 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:DeterminePropertyAccessors[System.__Canon](System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon],System.Reflection.MemberInfo,bool) (FullOpts)
          11 (2.25 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSiteBinder:BindCore[System.__Canon](System.Runtime.CompilerServices.CallSite`1[System.__Canon],System.Object[]):System.__Canon:this (FullOpts)
           7 (1.14 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataReader:GetFieldValueAsync[System.__Canon](int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
           7 (0.87 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Create(System.Linq.Expressions.Expression,System.String,bool,System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression]):System.Linq.Expressions.Expression`1[System.__Canon] (FullOpts)

Top method improvements (bytes):
         -68 (-6.20 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+RSACmsSignature:SignCore(System.ReadOnlySpan`1[byte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,System.Security.Cryptography.RSASignaturePadding,byref):bool (FullOpts)
         -54 (-4.26 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+DSACmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -49 (-6.69 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+MLDsaCmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -49 (-6.69 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+SlhDsaCmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -38 (-2.18 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+ECDsaCmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -18 (-3.04 % of base) : Microsoft.Extensions.Options.dasm - Microsoft.Extensions.DependencyInjection.OptionsBuilderExtensions:ValidateOnStart[System.__Canon](Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon]):Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon] (FullOpts)
         -15 (-1.70 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonNode:ToString():System.String:this (FullOpts)
         -13 (-4.35 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-6.99 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfJsonBool:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-7.98 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfJsonNumber:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-7.98 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfJsonString:GetValue[System.__Canon]():System.__Canon:this (FullOpts)

Top method regressions (percentages):
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[byte](System.Linq.Parallel.PartitionedStream`2[System.__Canon,byte]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[double](System.Linq.Parallel.PartitionedStream`2[System.__Canon,double]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[int](System.Linq.Parallel.PartitionedStream`2[System.__Canon,int]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[long](System.Linq.Parallel.PartitionedStream`2[System.__Canon,long]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[short](System.Linq.Parallel.PartitionedStream`2[System.__Canon,short]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[System.Nullable`1[int]](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Nullable`1[int]]):this (FullOpts)
         362 (140.86 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.__Canon,System.Nullable`1[int]]:Receive[System.Numerics.Vector`1[float]](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.Numerics.Vector`1[float]]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[byte,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[byte,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[double,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[double,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[int,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[int,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[long,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[long,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[short,System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[short,System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.Nullable`1[int],System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Nullable`1[int],System.__Canon]):this (FullOpts)
         242 (119.21 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortQueryOperatorResults`2+ChildResultsRecipient[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Receive[System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Numerics.Vector`1[float],System.__Canon]):this (FullOpts)
          44 (35.77 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.DelegatingTypeDescriptionProvider:RegisterType[System.__Canon]():this (FullOpts)
          11 (2.25 % of base) : System.Linq.Expressions.dasm - System.Runtime.CompilerServices.CallSiteBinder:BindCore[System.__Canon](System.Runtime.CompilerServices.CallSite`1[System.__Canon],System.Object[]):System.__Canon:this (FullOpts)
          18 (2.15 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.DefaultJsonTypeInfoResolver:DeterminePropertyAccessors[System.__Canon](System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.__Canon],System.Reflection.MemberInfo,bool) (FullOpts)
           7 (1.14 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataReader:GetFieldValueAsync[System.__Canon](int,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.__Canon]:this (FullOpts)
           7 (0.87 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression`1[System.__Canon]:Create(System.Linq.Expressions.Expression,System.String,bool,System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression]):System.Linq.Expressions.Expression`1[System.__Canon] (FullOpts)

Top method improvements (percentages):
         -13 (-7.98 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfJsonNumber:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-7.98 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfJsonString:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -13 (-6.99 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfJsonBool:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -49 (-6.69 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+MLDsaCmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -49 (-6.69 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+SlhDsaCmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -68 (-6.20 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+RSACmsSignature:SignCore(System.ReadOnlySpan`1[byte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,System.Security.Cryptography.RSASignaturePadding,byref):bool (FullOpts)
         -13 (-4.35 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -54 (-4.26 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+DSACmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -18 (-3.04 % of base) : Microsoft.Extensions.Options.dasm - Microsoft.Extensions.DependencyInjection.OptionsBuilderExtensions:ValidateOnStart[System.__Canon](Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon]):Microsoft.Extensions.Options.OptionsBuilder`1[System.__Canon] (FullOpts)
         -38 (-2.18 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSignature+ECDsaCmsSignature:Sign(System.ReadOnlySpan`1[byte],System.String,System.Security.Cryptography.X509Certificates.X509Certificate2,System.Object,bool,byref,byref,byref):bool:this (FullOpts)
         -15 (-1.70 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonNode:ToString():System.String:this (FullOpts)

31 total methods with Code Size differences (11 improved, 20 regressed), 283879 unchanged.

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

Artifacts:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions