Skip to content

Conversation

@AndyAyersMS
Copy link
Member

If we see a GT_IND whose base is JitNew, the value number of the IND
is the same as the value number of the class handle for the new.

Partial fix for #52370.

If we see a GT_IND whose base is JitNew, the value number of the IND
is the same as the value number of the class handle for the new.

Partial fix for dotnet#52370.
@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label May 7, 2021
@AndyAyersMS
Copy link
Member Author

@EgorBo PTAL
cc @dotnet/jit-contrib

Results on the #52370 case are similar to Egor's fix. Would be nice to get rid of that frame. Also more changes in this mode are possible, eg new feeding a type test helper, or loading a field of a newly allocated object.

IN0002: 000000 sub      rsp, 40

G_M4678_IG02:        ; offs=000004H, size=0005H, bbWeight=1    PerfScore 0.25, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref

IN0001: 000004 mov      eax, 3

G_M4678_IG03:        ; offs=000009H, size=0005H, bbWeight=1    PerfScore 1.25, epilog, nogc, extend

IN0003: 000009 add      rsp, 40
IN0004: 00000D ret 

Quite a few diffs in SPMI testing (which is a bit ragged still with missing info). Will summarize shortly.

@EgorBo
Copy link
Member

EgorBo commented May 8, 2021

Nice, but will it work without JitNew? e.g.:

using System.Runtime.CompilerServices;
using System.Threading;

public class Program
{
    public static void Main()
    {
        // Promote Test to tier1 and collect some profile data
        for (int i = 0; i < 100; i++)
        {
            Test();
            Thread.Sleep(16);
        }
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    static B GetB() => new B(); // not inlineable, but returns sealed type

    static A GetA() => GetB();

    [MethodImpl(MethodImplOptions.NoInlining)]
    static int Test()
    {
        return GetA().GetValue();
    }

}

public class A
{
    public virtual int GetValue() => 1;
}

public sealed class B : A
{
    public override int GetValue() => 3;
}

@AndyAyersMS
Copy link
Member Author

SPMI diffs

Some large improvements in places, typically where the optimization leads to folding a branch. A few large regressions in test cases that do a lot of type testing, as we are now propagating a large literal method table value to many uses. We should consider either not propagating such a large constant, or CSEing it back later.

asm.aspnet.run.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 43755
Total bytes of diff: 42114
Total bytes of delta: -1641 (-3.75% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
           6 : 36144.dasm (0.39% of base)
           6 : 36935.dasm (0.07% of base)
           5 : 35527.dasm (0.31% of base)
           2 : 36176.dasm (0.11% of base)

Top file improvements (bytes):
        -162 : 15873.dasm (-13.83% of base)
         -75 : 15799.dasm (-7.72% of base)
         -75 : 33583.dasm (-7.72% of base)
         -75 : 10647.dasm (-7.72% of base)
         -75 : 30905.dasm (-7.72% of base)
         -75 : 39912.dasm (-7.72% of base)
         -75 : 26635.dasm (-7.72% of base)
         -73 : 23436.dasm (-3.29% of base)
         -62 : 10792.dasm (-16.15% of base)
         -62 : 32771.dasm (-16.15% of base)
         -62 : 40062.dasm (-16.15% of base)
         -62 : 16141.dasm (-16.15% of base)
         -62 : 26703.dasm (-16.15% of base)
         -62 : 33623.dasm (-16.15% of base)
         -62 : 6458.dasm (-16.15% of base)
         -38 : 33724.dasm (-4.06% of base)
         -38 : 40146.dasm (-4.06% of base)
         -38 : 16720.dasm (-4.06% of base)
         -38 : 11558.dasm (-4.06% of base)
         -38 : 26802.dasm (-4.06% of base)

38 total files with Code Size differences (34 improved, 4 regressed), 0 unchanged.

Top method regressions (bytes):
           6 ( 0.39% of base) : 36144.dasm - RelationalModel:AddDefaultMappings(RelationalModel,IEntityType)
           6 ( 0.07% of base) : 36935.dasm - SelectExpression:.ctor(IEntityType,ISqlExpressionFactory):this
           5 ( 0.31% of base) : 35527.dasm - EntityType:AddKey(IReadOnlyList`1,int):Key:this
           2 ( 0.11% of base) : 36176.dasm - RelationalModel:AddSqlQueries(RelationalModel,IEntityType)

Top method improvements (bytes):
        -162 (-13.83% of base) : 15873.dasm - ResourceManager:InternalGetResourceSet(CultureInfo,bool,bool):ResourceSet:this
         -75 (-7.72% of base) : 15799.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 33583.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 10647.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 30905.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 39912.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 26635.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -73 (-3.29% of base) : 23436.dasm - <AuthenticateMD5>d__3:MoveNext():this
         -62 (-16.15% of base) : 10792.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 32771.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 40062.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 16141.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 26703.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 33623.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 6458.dasm - ConnectionManager:Walk(Action`1):this
         -38 (-4.06% of base) : 33724.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -38 (-4.06% of base) : 40146.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -38 (-4.06% of base) : 16720.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -38 (-4.06% of base) : 11558.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -38 (-4.06% of base) : 26802.dasm - ResourceManager:GetString(String,CultureInfo):String:this

Top method regressions (percentages):
           6 ( 0.39% of base) : 36144.dasm - RelationalModel:AddDefaultMappings(RelationalModel,IEntityType)
           5 ( 0.31% of base) : 35527.dasm - EntityType:AddKey(IReadOnlyList`1,int):Key:this
           2 ( 0.11% of base) : 36176.dasm - RelationalModel:AddSqlQueries(RelationalModel,IEntityType)
           6 ( 0.07% of base) : 36935.dasm - SelectExpression:.ctor(IEntityType,ISqlExpressionFactory):this

Top method improvements (percentages):
         -62 (-16.15% of base) : 10792.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 32771.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 40062.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 16141.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 26703.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 33623.dasm - ConnectionManager:Walk(Action`1):this
         -62 (-16.15% of base) : 6458.dasm - ConnectionManager:Walk(Action`1):this
        -162 (-13.83% of base) : 15873.dasm - ResourceManager:InternalGetResourceSet(CultureInfo,bool,bool):ResourceSet:this
         -75 (-7.72% of base) : 15799.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 33583.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 10647.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 30905.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 39912.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -75 (-7.72% of base) : 26635.dasm - ResourceManager:GetString(String,CultureInfo):String:this
         -19 (-5.62% of base) : 31945.dasm - CompiledQueryBase`2:ExecuteCore(__Canon,CancellationToken,ref):__Canon:this
         -19 (-5.62% of base) : 23163.dasm - CompiledQueryBase`2:ExecuteCore(__Canon,CancellationToken,ref):__Canon:this
         -19 (-4.77% of base) : 15208.dasm - EndpointHttpContextExtensions:SetEndpoint(HttpContext,Endpoint)
         -19 (-4.77% of base) : 26253.dasm - EndpointHttpContextExtensions:SetEndpoint(HttpContext,Endpoint)
         -19 (-4.77% of base) : 31828.dasm - EndpointHttpContextExtensions:SetEndpoint(HttpContext,Endpoint)
         -38 (-4.06% of base) : 33724.dasm - ResourceManager:GetString(String,CultureInfo):String:this

38 total methods with Code Size differences (34 improved, 4 regressed), 0 unchanged.


asm.benchmarks.run.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 27420
Total bytes of diff: 27403
Total bytes of delta: -17 (-0.06% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
          17 : 9021.dasm (1.04% of base)
          12 : 8886.dasm (2.82% of base)
          11 : 9198.dasm (0.69% of base)
           6 : 9230.dasm (0.38% of base)
           5 : 9133.dasm (1.56% of base)
           5 : 3297.dasm (0.03% of base)
           5 : 9134.dasm (1.03% of base)
           5 : 19217.dasm (0.59% of base)
           2 : 20069.dasm (0.26% of base)

Top file improvements (bytes):
         -29 : 11184.dasm (-1.27% of base)
         -29 : 17093.dasm (-4.74% of base)
         -27 : 1918.dasm (-4.43% of base)

12 total files with Code Size differences (3 improved, 9 regressed), 0 unchanged.

Top method regressions (bytes):
          17 ( 1.04% of base) : 9021.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Call(System.Reflection.MethodInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
          12 ( 2.82% of base) : 8886.dasm - Sigil.Impl.StackTransition:.ctor(System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Sigil.Impl.VerificationCallback):this
          11 ( 0.69% of base) : 9198.dasm - Sigil.Emit`1[__Canon][System.__Canon]:CallVirtual(System.Reflection.MethodInfo,System.Type,System.Type[]):Sigil.Emit`1[__Canon]:this
           6 ( 0.38% of base) : 9230.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Switch(Sigil.Label[]):Sigil.Emit`1[__Canon]:this
           5 ( 1.56% of base) : 9133.dasm - Sigil.Emit`1[__Canon][System.__Canon]:NewObject(System.Reflection.ConstructorInfo):Sigil.Emit`1[__Canon]:this
           5 ( 0.03% of base) : 3297.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,bool,bool,System.Xml.Serialization.RecursionLimiter):this
           5 ( 1.03% of base) : 9134.dasm - Sigil.Emit`1[__Canon][System.__Canon]:InnerNewObject(System.Reflection.ConstructorInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
           5 ( 0.59% of base) : 19217.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GetEntryPoint(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,bool,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
           2 ( 0.26% of base) : 20069.dasm - System.Xml.Serialization.XmlReflectionImporter:CreateArrayElementsFromAttributes(System.Xml.Serialization.ArrayMapping,System.Xml.Serialization.XmlArrayItemAttributes,System.Type,System.String,System.Xml.Serialization.RecursionLimiter):this

Top method improvements (bytes):
         -29 (-1.27% of base) : 11184.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateObject(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object):System.Object:this
         -29 (-4.74% of base) : 17093.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree:ParseText(Microsoft.CodeAnalysis.Text.SourceText,Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SyntaxTree
         -27 (-4.43% of base) : 1918.dasm - System.Reflection.Emit.AssemblyBuilder:DefineDynamicModuleInternalNoLock(System.String,bool):System.Reflection.Emit.ModuleBuilder:this

Top method regressions (percentages):
          12 ( 2.82% of base) : 8886.dasm - Sigil.Impl.StackTransition:.ctor(System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Collections.Generic.IEnumerable`1[[System.Type, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],Sigil.Impl.VerificationCallback):this
           5 ( 1.56% of base) : 9133.dasm - Sigil.Emit`1[__Canon][System.__Canon]:NewObject(System.Reflection.ConstructorInfo):Sigil.Emit`1[__Canon]:this
          17 ( 1.04% of base) : 9021.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Call(System.Reflection.MethodInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
           5 ( 1.03% of base) : 9134.dasm - Sigil.Emit`1[__Canon][System.__Canon]:InnerNewObject(System.Reflection.ConstructorInfo,System.Type[]):Sigil.Emit`1[__Canon]:this
          11 ( 0.69% of base) : 9198.dasm - Sigil.Emit`1[__Canon][System.__Canon]:CallVirtual(System.Reflection.MethodInfo,System.Type,System.Type[]):Sigil.Emit`1[__Canon]:this
           5 ( 0.59% of base) : 19217.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:GetEntryPoint(Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,bool,Microsoft.CodeAnalysis.DiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol
           6 ( 0.38% of base) : 9230.dasm - Sigil.Emit`1[__Canon][System.__Canon]:Switch(Sigil.Label[]):Sigil.Emit`1[__Canon]:this
           2 ( 0.26% of base) : 20069.dasm - System.Xml.Serialization.XmlReflectionImporter:CreateArrayElementsFromAttributes(System.Xml.Serialization.ArrayMapping,System.Xml.Serialization.XmlArrayItemAttributes,System.Type,System.String,System.Xml.Serialization.RecursionLimiter):this
           5 ( 0.03% of base) : 3297.dasm - System.Xml.Serialization.XmlReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.XmlAttributes,System.String,System.Type,bool,bool,System.Xml.Serialization.RecursionLimiter):this

Top method improvements (percentages):
         -29 (-4.74% of base) : 17093.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree:ParseText(Microsoft.CodeAnalysis.Text.SourceText,Microsoft.CodeAnalysis.CSharp.CSharpParseOptions,System.String,System.Threading.CancellationToken):Microsoft.CodeAnalysis.SyntaxTree
         -27 (-4.43% of base) : 1918.dasm - System.Reflection.Emit.AssemblyBuilder:DefineDynamicModuleInternalNoLock(System.String,bool):System.Reflection.Emit.ModuleBuilder:this
         -29 (-1.27% of base) : 11184.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateObject(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,Newtonsoft.Json.Serialization.JsonContainerContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object):System.Object:this

12 total methods with Code Size differences (3 improved, 9 regressed), 0 unchanged.


asm.libraries.crossgen.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 3903
Total bytes of diff: 3903
Total bytes of delta: 0 (0.00% of base)
Detail diffs


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

0 total methods with Code Size differences (0 improved, 0 regressed), 8 unchanged.


asm.libraries.pmi.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 311643
Total bytes of diff: 300842
Total bytes of delta: -10801 (-3.47% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
          28 : 165651.dasm (2.12% of base)
          22 : 148172.dasm (4.27% of base)
          19 : 106383.dasm (1.42% of base)
          18 : 213502.dasm (0.63% of base)
          18 : 213285.dasm (3.36% of base)
          18 : 211438.dasm (0.63% of base)
          18 : 216096.dasm (1.60% of base)
          18 : 212435.dasm (0.63% of base)
          15 : 148170.dasm (6.20% of base)
          14 : 216097.dasm (1.05% of base)
          12 : 106334.dasm (0.31% of base)
          12 : 212637.dasm (0.92% of base)
          11 : 75226.dasm (3.67% of base)
          10 : 23823.dasm (0.58% of base)
          10 : 130833.dasm (0.88% of base)
           9 : 216229.dasm (0.89% of base)
           8 : 143305.dasm (1.39% of base)
           8 : 143363.dasm (1.39% of base)
           8 : 216095.dasm (0.79% of base)
           7 : 216094.dasm (0.78% of base)

Top file improvements (bytes):
        -210 : 69833.dasm (-12.86% of base)
        -210 : 147024.dasm (-16.80% of base)
        -195 : 147022.dasm (-17.26% of base)
        -195 : 147025.dasm (-17.05% of base)
        -195 : 147021.dasm (-16.82% of base)
        -195 : 69829.dasm (-12.87% of base)
        -195 : 69830.dasm (-12.75% of base)
        -195 : 147023.dasm (-15.42% of base)
        -195 : 69831.dasm (-13.00% of base)
        -195 : 69832.dasm (-11.90% of base)
        -195 : 69834.dasm (-12.88% of base)
        -195 : 147020.dasm (-17.03% of base)
        -126 : 139367.dasm (-9.96% of base)
        -120 : 14077.dasm (-12.82% of base)
        -120 : 14074.dasm (-13.26% of base)
        -120 : 14069.dasm (-13.07% of base)
        -120 : 14070.dasm (-13.07% of base)
        -120 : 14081.dasm (-13.00% of base)
        -120 : 14071.dasm (-13.39% of base)
        -120 : 14076.dasm (-12.82% of base)

393 total files with Code Size differences (328 improved, 65 regressed), 1 unchanged.

Top method regressions (bytes):
          28 ( 2.12% of base) : 165651.dasm - System.Configuration.MgmtConfigurationRecord:ValidateSectionXml(System.String,System.String):this
          22 ( 4.27% of base) : 148172.dasm - Microsoft.VisualBasic.FileIO.FileSystem:WriteAllText(System.String,System.String,bool,System.Text.Encoding)
          19 ( 1.42% of base) : 106383.dasm - System.Data.XSDSchema:HandleKeyref(System.Xml.Schema.XmlSchemaKeyref):this
          18 ( 0.63% of base) : 213502.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(byref,System.ReadOnlySpan`1[Char],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
          18 ( 3.36% of base) : 213285.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:OpenAlgorithm(System.String):System.Security.Cryptography.SymmetricAlgorithm
          18 ( 0.63% of base) : 211438.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(byref,System.ReadOnlySpan`1[Char],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
          18 ( 1.60% of base) : 216096.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:AESKeyWrapEncrypt(System.Byte[],System.Byte[]):System.Byte[]
          18 ( 0.63% of base) : 212435.dasm - System.Security.Cryptography.PasswordBasedEncryption:Decrypt(byref,System.ReadOnlySpan`1[Char],System.ReadOnlySpan`1[Byte],System.ReadOnlySpan`1[Byte],System.Span`1[Byte]):int
          15 ( 6.20% of base) : 148170.dasm - Microsoft.VisualBasic.FileIO.FileSystem:WriteAllBytes(System.String,System.Byte[],bool)
          14 ( 1.05% of base) : 216097.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:AESKeyWrapDecrypt(System.Byte[],System.Byte[]):System.Byte[]
          12 ( 0.31% of base) : 106334.dasm - System.Data.XSDSchema:InstantiateTable(System.Xml.Schema.XmlSchemaElement,System.Xml.Schema.XmlSchemaComplexType,bool):System.Data.DataTable:this
          12 ( 0.92% of base) : 212637.dasm - Internal.NativeCrypto.CapiHelper:ToKeyBlob(System.Security.Cryptography.DSAParameters):System.Byte[]
          11 ( 3.67% of base) : 75226.dasm - Microsoft.CodeAnalysis.Win32ResourceConversions:AppendManifestToResourceStream(System.IO.Stream,System.IO.Stream,bool)
          10 ( 0.58% of base) : 23823.dasm - Microsoft.CodeAnalysis.CSharp.MethodCompiler:BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.TypeCompilationState,Microsoft.CodeAnalysis.DiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundBlock
          10 ( 0.88% of base) : 130833.dasm - System.Xml.Serialization.SoapReflectionImporter:ImportAccessorMapping(System.Xml.Serialization.MemberMapping,System.Xml.Serialization.FieldModel,System.Xml.Serialization.SoapAttributes,System.String,int,System.Xml.Serialization.RecursionLimiter):this
           9 ( 0.89% of base) : 216229.dasm - System.Security.Cryptography.Xml.XmlLicenseTransform:DecryptEncryptedGrants(System.Xml.XmlNodeList,System.Security.Cryptography.Xml.IRelDecryptor):this
           8 ( 1.39% of base) : 143305.dasm - Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient:SerializeCoreDump(System.String,int,bool):System.Byte[]
           8 ( 1.39% of base) : 143363.dasm - Microsoft.Diagnostics.Tools.RuntimeClient.DiagnosticsHelpers:SerializeCoreDump(System.String,int,bool):System.Byte[]
           8 ( 0.79% of base) : 216095.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:TripleDESKeyWrapDecrypt(System.Byte[],System.Byte[]):System.Byte[]
           7 ( 0.78% of base) : 216094.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:TripleDESKeyWrapEncrypt(System.Byte[],System.Byte[]):System.Byte[]

Top method improvements (bytes):
        -210 (-12.86% of base) : 69833.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):System.Numerics.Vector`1[Single]
        -210 (-16.80% of base) : 147024.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):System.Numerics.Vector`1[Single]
        -195 (-17.26% of base) : 147022.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):int
        -195 (-17.05% of base) : 147025.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):long
        -195 (-16.82% of base) : 147021.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):short
        -195 (-12.87% of base) : 69829.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):ubyte
        -195 (-12.75% of base) : 69830.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):short
        -195 (-15.42% of base) : 147023.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):double
        -195 (-13.00% of base) : 69831.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):int
        -195 (-11.90% of base) : 69832.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):double
        -195 (-12.88% of base) : 69834.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):long
        -195 (-17.03% of base) : 147020.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):ubyte
        -126 (-9.96% of base) : 139367.dasm - CommandLine.Core.Tokenizer:PreprocessDashDash(System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Func`2[[System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[RailwaySharp.ErrorHandling.Result`2[[System.Collections.Generic.IEnumerable`1[[CommandLine.Core.Token, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[CommandLine.Error, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]], commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]]):RailwaySharp.ErrorHandling.Result`2[[System.Collections.Generic.IEnumerable`1[[CommandLine.Core.Token, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[CommandLine.Error, commandline, Version=2.0.275.0, Culture=neutral, PublicKeyToken=de6f01bd326f8c32]]
        -120 (-12.82% of base) : 14077.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2423-6(System.Type,Microsoft.FSharp.Core.Unit):short
        -120 (-13.26% of base) : 14074.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2399-5(System.Type,Microsoft.FSharp.Core.Unit):long
        -120 (-13.07% of base) : 14069.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2399-5(System.Type,Microsoft.FSharp.Core.Unit):ubyte
        -120 (-13.07% of base) : 14070.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2399-5(System.Type,Microsoft.FSharp.Core.Unit):short
        -120 (-13.00% of base) : 14081.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2423-6(System.Type,Microsoft.FSharp.Core.Unit):long
        -120 (-13.39% of base) : 14071.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2399-5(System.Type,Microsoft.FSharp.Core.Unit):int
        -120 (-12.82% of base) : 14076.dasm - Microsoft.FSharp.Core.LanguagePrimitives:.cctor$cont@2423-6(System.Type,Microsoft.FSharp.Core.Unit):ubyte

Top method regressions (percentages):
          15 ( 6.20% of base) : 148170.dasm - Microsoft.VisualBasic.FileIO.FileSystem:WriteAllBytes(System.String,System.Byte[],bool)
           6 ( 6.06% of base) : 79482.dasm - Roslyn.Utilities.TextKeyedCache`1[__Canon][System.__Canon]:NextRandom():int:this
           6 ( 4.69% of base) : 224216.dasm - System.Threading.ReaderWriterLock:GetOrCreateReaderEvent():System.Threading.ManualResetEventSlim:this
          22 ( 4.27% of base) : 148172.dasm - Microsoft.VisualBasic.FileIO.FileSystem:WriteAllText(System.String,System.String,bool,System.Text.Encoding)
          11 ( 3.67% of base) : 75226.dasm - Microsoft.CodeAnalysis.Win32ResourceConversions:AppendManifestToResourceStream(System.IO.Stream,System.IO.Stream,bool)
          18 ( 3.36% of base) : 213285.dasm - Internal.Cryptography.Pal.AnyOS.ManagedPkcsPal:OpenAlgorithm(System.String):System.Security.Cryptography.SymmetricAlgorithm
           6 ( 3.17% of base) : 127892.dasm - FuncKey:AddToList(System.Collections.ArrayList,System.Collections.ArrayList):System.Collections.ArrayList
           6 ( 2.73% of base) : 45280.dasm - VB$AnonymousType_0`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:Equals(VB$AnonymousType_0`2[Byte,Nullable`1]):bool:this
           6 ( 2.73% of base) : 45304.dasm - VB$AnonymousType_1`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:Equals(VB$AnonymousType_1`2[Byte,Nullable`1]):bool:this
           6 ( 2.73% of base) : 45328.dasm - VB$AnonymousType_2`2[Byte,Nullable`1][System.Byte,System.Nullable`1[System.Int32]]:Equals(VB$AnonymousType_2`2[Byte,Nullable`1]):bool:this
           6 ( 2.24% of base) : 41666.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedLocal:GetDebuggerDisplay():System.String:this
          28 ( 2.12% of base) : 165651.dasm - System.Configuration.MgmtConfigurationRecord:ValidateSectionXml(System.String,System.String):this
           6 ( 2.08% of base) : 179420.dasm - System.IO.Compression.ZipEndOfCentralDirectoryBlock:WriteBlock(System.IO.Stream,long,long,long,System.Byte[])
           6 ( 1.86% of base) : 162735.dasm - System.ComponentModel.TypeDescriptor:FilterMembers(System.Collections.IList,System.Attribute[]):System.Collections.ArrayList
           6 ( 1.85% of base) : 130847.dasm - System.Xml.Serialization.SoapReflectionImporter:ImportMembersMapping(System.String,System.String,System.Xml.Serialization.XmlReflectionMember[],bool,bool,bool,int):System.Xml.Serialization.XmlMembersMapping:this
           5 ( 1.85% of base) : 157972.dasm - System.Collections.Specialized.NameValueCollection:Add(System.String,System.String):this
          18 ( 1.60% of base) : 216096.dasm - System.Security.Cryptography.Xml.SymmetricKeyWrap:AESKeyWrapEncrypt(System.Byte[],System.Byte[]):System.Byte[]
          19 ( 1.42% of base) : 106383.dasm - System.Data.XSDSchema:HandleKeyref(System.Xml.Schema.XmlSchemaKeyref):this
           8 ( 1.39% of base) : 143305.dasm - Microsoft.Diagnostics.NETCore.Client.DiagnosticsClient:SerializeCoreDump(System.String,int,bool):System.Byte[]
           8 ( 1.39% of base) : 143363.dasm - Microsoft.Diagnostics.Tools.RuntimeClient.DiagnosticsHelpers:SerializeCoreDump(System.String,int,bool):System.Byte[]

Top method improvements (percentages):
         -15 (-20.55% of base) : 11608.dasm - Microsoft.FSharp.Core.Operators:ToEnum(int):long
         -15 (-20.55% of base) : 11603.dasm - Microsoft.FSharp.Core.Operators:ToEnum(int):ubyte
         -15 (-20.27% of base) : 11604.dasm - Microsoft.FSharp.Core.Operators:ToEnum(int):short
         -15 (-19.48% of base) : 11606.dasm - Microsoft.FSharp.Core.Operators:ToEnum(int):double
         -15 (-19.48% of base) : 210037.dasm - System.Security.AccessControl.AccessRule`1[Byte][System.Byte]:get_Rights():ubyte:this
         -15 (-19.48% of base) : 210063.dasm - System.Security.AccessControl.AccessRule`1[Int64][System.Int64]:get_Rights():long:this
         -15 (-19.23% of base) : 210043.dasm - System.Security.AccessControl.AccessRule`1[Int16][System.Int16]:get_Rights():short:this
         -24 (-18.60% of base) : 27524.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:XmlText(Microsoft.CodeAnalysis.SyntaxTokenList):Microsoft.CodeAnalysis.CSharp.Syntax.XmlTextSyntax
         -15 (-18.52% of base) : 210053.dasm - System.Security.AccessControl.AccessRule`1[Double][System.Double]:get_Rights():double:this
         -24 (-18.05% of base) : 27605.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:SkippedTokensTrivia(Microsoft.CodeAnalysis.SyntaxTokenList):Microsoft.CodeAnalysis.CSharp.Syntax.SkippedTokensTriviaSyntax
         -24 (-17.52% of base) : 122553.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:.ctor(System.Xml.DocumentXPathNavigator):this
         -24 (-17.27% of base) : 27719.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFactory:SwitchSection(Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.SwitchLabelSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.SyntaxList`1[[Microsoft.CodeAnalysis.CSharp.Syntax.StatementSyntax, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.CSharp.Syntax.SwitchSectionSyntax
        -195 (-17.26% of base) : 147022.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):int
        -195 (-17.05% of base) : 147025.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):long
        -195 (-17.03% of base) : 147020.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):ubyte
        -195 (-16.82% of base) : 147021.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):short
        -210 (-16.80% of base) : 147024.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):System.Numerics.Vector`1[Single]
         -11 (-16.42% of base) : 19123.dasm - System.Runtime.InteropServices.Marshal:GetFunctionPointerForDelegate(int):long
         -24 (-16.33% of base) : 122554.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:.ctor(System.Xml.DocumentXPathNodeIterator_ElemDescendants):this
         -15 (-16.30% of base) : 11607.dasm - Microsoft.FSharp.Core.Operators:ToEnum(int):System.Numerics.Vector`1[Single]

393 total methods with Code Size differences (328 improved, 65 regressed), 1 unchanged.


asm.tests.pmi.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 227933
Total bytes of diff: 208058
Total bytes of delta: -19875 (-8.72% of base)
    diff is an improvement.
Detail diffs


Top file regressions (bytes):
          42 : 248116.dasm (9.95% of base)
          24 : 240073.dasm (11.59% of base)
          24 : 240074.dasm (11.76% of base)
          24 : 240075.dasm (11.59% of base)
          24 : 240076.dasm (11.59% of base)
          22 : 240043.dasm (10.43% of base)
          22 : 240044.dasm (10.43% of base)
          22 : 240046.dasm (10.43% of base)
          22 : 240047.dasm (10.43% of base)
          18 : 240071.dasm (10.84% of base)
          18 : 240072.dasm (10.84% of base)
          18 : 240036.dasm (9.33% of base)
          18 : 240039.dasm (9.33% of base)
          18 : 240040.dasm (9.33% of base)
          12 : 240032.dasm (7.27% of base)
          12 : 240033.dasm (7.27% of base)
          12 : 240035.dasm (6.70% of base)
          12 : 240038.dasm (6.67% of base)
          12 : 240042.dasm (6.67% of base)
          12 : 240063.dasm (9.52% of base)

Top file improvements (bytes):
        -620 : 83741.dasm (-41.81% of base)
        -286 : 83583.dasm (-47.27% of base)
        -222 : 249958.dasm (-39.64% of base)
        -191 : 245577.dasm (-50.26% of base)
        -170 : 83584.dasm (-20.88% of base)
         -67 : 83586.dasm (-8.43% of base)
         -67 : 83589.dasm (-8.20% of base)
         -67 : 244295.dasm (-8.43% of base)
         -67 : 247349.dasm (-8.43% of base)
         -67 : 80550.dasm (-8.20% of base)
         -66 : 85249.dasm (-33.33% of base)
         -66 : 85271.dasm (-33.33% of base)
         -58 : 237960.dasm (-8.59% of base)
         -41 : 244081.dasm (-8.89% of base)
         -41 : 244083.dasm (-6.41% of base)
         -41 : 244113.dasm (-8.89% of base)
         -41 : 244114.dasm (-8.89% of base)
         -38 : 249529.dasm (-41.30% of base)
         -38 : 249530.dasm (-41.30% of base)
         -38 : 80554.dasm (-1.53% of base)

1287 total files with Code Size differences (1227 improved, 60 regressed), 0 unchanged.

Top method regressions (bytes):
          42 ( 9.95% of base) : 248116.dasm - Test:Main(System.String[]):int
          24 (11.59% of base) : 240073.dasm - CMain:RunTest_ExplicitOverride3():bool
          24 (11.76% of base) : 240074.dasm - CMain:RunTest_ExplicitOverride4():bool
          24 (11.59% of base) : 240075.dasm - CMain:RunTest_ExplicitOverride5():bool
          24 (11.59% of base) : 240076.dasm - CMain:RunTest_ExplicitOverride6():bool
          22 (10.43% of base) : 240043.dasm - CMain:ScenarioD_Test1():bool
          22 (10.43% of base) : 240044.dasm - CMain:ScenarioD_Test2():bool
          22 (10.43% of base) : 240046.dasm - CMain:ScenarioE_Test1():bool
          22 (10.43% of base) : 240047.dasm - CMain:ScenarioE_Test2():bool
          18 (10.84% of base) : 240071.dasm - CMain:RunTest_ExplicitOverride1():bool
          18 (10.84% of base) : 240072.dasm - CMain:RunTest_ExplicitOverride2():bool
          18 ( 9.33% of base) : 240036.dasm - CMain:ScenarioB_Test2():bool
          18 ( 9.33% of base) : 240039.dasm - CMain:ScenarioC_Test1():bool
          18 ( 9.33% of base) : 240040.dasm - CMain:ScenarioC_Test2():bool
          12 ( 7.27% of base) : 240032.dasm - CMain:ScenarioA_Test5():bool
          12 ( 7.27% of base) : 240033.dasm - CMain:ScenarioA_Test6():bool
          12 ( 6.70% of base) : 240035.dasm - CMain:ScenarioB_Test1():bool
          12 ( 6.67% of base) : 240038.dasm - CMain:ScenarioB_Test4():bool
          12 ( 6.67% of base) : 240042.dasm - CMain:ScenarioC_Test4():bool
          12 ( 9.52% of base) : 240063.dasm - CMain:RunTest5():bool

Top method improvements (bytes):
        -620 (-41.81% of base) : 83741.dasm - Z:Main():int
        -286 (-47.27% of base) : 83583.dasm - Z:mySin(double):double
        -222 (-39.64% of base) : 249958.dasm - GitHub_19171:Vector3EqualsTest()
        -191 (-50.26% of base) : 245577.dasm - AA:Static8():System.Array[,,,][][,,][]
        -170 (-20.88% of base) : 83584.dasm - Z:Main():int
         -67 (-8.43% of base) : 83586.dasm - SinCalcLib.SinCalcLib:mySin(System.Object):System.Object
         -67 (-8.20% of base) : 83589.dasm - SinCalcLib.SinCalcLib:mySin(System.Object):System.Object
         -67 (-8.43% of base) : 244295.dasm - SinCalc.SinCalc:mySin(System.Object):System.Object
         -67 (-8.43% of base) : 247349.dasm - SinCalc.SinCalc:mySin(System.Object):System.Object
         -67 (-8.20% of base) : 80550.dasm - SinCalc.SinCalc:mySin(System.Object):System.Object
         -66 (-33.33% of base) : 85249.dasm - BoxTest.Test:Main():int
         -66 (-33.33% of base) : 85271.dasm - BoxTest.Test:Main():int
         -58 (-8.59% of base) : 237960.dasm - AA:Static1(byref,byref,long,System.Boolean[,,]):ushort
         -41 (-8.89% of base) : 244081.dasm - Test:Main():int
         -41 (-6.41% of base) : 244083.dasm - Test:Main():int
         -41 (-8.89% of base) : 244113.dasm - Test:Main():int
         -41 (-8.89% of base) : 244114.dasm - Test:Main():int
         -38 (-41.30% of base) : 249529.dasm - JitTest.Test:unbox_initobj():int
         -38 (-41.30% of base) : 249530.dasm - JitTest.Test:unbox_cpobj():int
         -38 (-1.53% of base) : 80554.dasm - SinCalc.SinCalc:Main():int

Top method regressions (percentages):
          12 (17.39% of base) : 86837.dasm - Program:Main(System.String[]):int
           6 (15.00% of base) : 86522.dasm - <Module>:main():int
          12 (14.46% of base) : 81914.dasm - Q:Main(System.String[]):int
          24 (11.76% of base) : 240074.dasm - CMain:RunTest_ExplicitOverride4():bool
          24 (11.59% of base) : 240073.dasm - CMain:RunTest_ExplicitOverride3():bool
          24 (11.59% of base) : 240075.dasm - CMain:RunTest_ExplicitOverride5():bool
          24 (11.59% of base) : 240076.dasm - CMain:RunTest_ExplicitOverride6():bool
          18 (10.84% of base) : 240071.dasm - CMain:RunTest_ExplicitOverride1():bool
          18 (10.84% of base) : 240072.dasm - CMain:RunTest_ExplicitOverride2():bool
          22 (10.43% of base) : 240043.dasm - CMain:ScenarioD_Test1():bool
          22 (10.43% of base) : 240044.dasm - CMain:ScenarioD_Test2():bool
          22 (10.43% of base) : 240046.dasm - CMain:ScenarioE_Test1():bool
          22 (10.43% of base) : 240047.dasm - CMain:ScenarioE_Test2():bool
          42 ( 9.95% of base) : 248116.dasm - Test:Main(System.String[]):int
          12 ( 9.76% of base) : 240068.dasm - CMain:RunTest_ImplicitOverride4():bool
          12 ( 9.68% of base) : 240067.dasm - CMain:RunTest_ImplicitOverride3():bool
          12 ( 9.68% of base) : 240069.dasm - CMain:RunTest_ImplicitOverride5():bool
          12 ( 9.68% of base) : 240070.dasm - CMain:RunTest_ImplicitOverride6():bool
          12 ( 9.60% of base) : 240019.dasm - CMain:RunTest2():bool
          12 ( 9.60% of base) : 240021.dasm - CMain:RunTest4():bool

Top method improvements (percentages):
        -191 (-50.26% of base) : 245577.dasm - AA:Static8():System.Array[,,,][][,,][]
        -286 (-47.27% of base) : 83583.dasm - Z:mySin(double):double
        -620 (-41.81% of base) : 83741.dasm - Z:Main():int
         -38 (-41.30% of base) : 249529.dasm - JitTest.Test:unbox_initobj():int
         -38 (-41.30% of base) : 249530.dasm - JitTest.Test:unbox_cpobj():int
        -222 (-39.64% of base) : 249958.dasm - GitHub_19171:Vector3EqualsTest()
         -66 (-33.33% of base) : 85249.dasm - BoxTest.Test:Main():int
         -66 (-33.33% of base) : 85271.dasm - BoxTest.Test:Main():int
        -170 (-20.88% of base) : 83584.dasm - Z:Main():int
         -14 (-20.59% of base) : 245576.dasm - AA:Method1(ushort,System.Int16[,],bool):System.String:this
         -15 (-20.00% of base) : 249141.dasm - Foo`1[Int64][System.Int64]:Function(int,byref):long
         -15 (-20.00% of base) : 249106.dasm - Foo`1[Byte][System.Byte]:Function(int,byref):ubyte
         -15 (-19.74% of base) : 248968.dasm - Foo`1[Byte][System.Byte]:Function(int,byref):ubyte:this
         -15 (-19.74% of base) : 249113.dasm - Foo`1[Int16][System.Int16]:Function(int,byref):short
         -15 (-19.74% of base) : 249118.dasm - Foo`1[Int32][System.Int32]:Function(ubyte,byref):int
         -15 (-19.74% of base) : 249119.dasm - Foo`1[Int32][System.Int32]:Function(short,byref):int
         -15 (-19.74% of base) : 249004.dasm - Foo`1[Int64][System.Int64]:Function(int,byref):long:this
         -15 (-19.74% of base) : 249041.dasm - Foo`1[Byte][System.Byte]:Function(int,byref):ubyte:this
         -15 (-19.74% of base) : 249053.dasm - Foo`1[Int32][System.Int32]:Function(ubyte,byref):int:this
         -15 (-19.74% of base) : 248980.dasm - Foo`1[Int32][System.Int32]:Function(ubyte,byref):int:this

1287 total methods with Code Size differences (1227 improved, 60 regressed), 0 unchanged.


asm.tests_libraries.pmi.windows.x64.checked


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 764898
Total bytes of diff: 773885
Total bytes of delta: 8987 (1.17% of base)
    diff is a regression.
Detail diffs


Top file regressions (bytes):
        1565 : 317307.dasm (6.71% of base)
         852 : 317649.dasm (4.92% of base)
         684 : 315400.dasm (6.46% of base)
         612 : 314994.dasm (7.24% of base)
         604 : 277203.dasm (10.13% of base)
         576 : 315613.dasm (5.92% of base)
         576 : 315367.dasm (5.92% of base)
         504 : 316292.dasm (4.56% of base)
         492 : 317639.dasm (3.85% of base)
         486 : 315502.dasm (2.73% of base)
         459 : 277204.dasm (11.16% of base)
         432 : 316337.dasm (6.24% of base)
         414 : 316350.dasm (6.60% of base)
         372 : 317645.dasm (4.16% of base)
         342 : 317258.dasm (5.99% of base)
         288 : 315632.dasm (6.73% of base)
         288 : 315360.dasm (5.34% of base)
         288 : 317343.dasm (1.76% of base)
         288 : 317368.dasm (1.76% of base)
         288 : 315606.dasm (6.39% of base)

Top file improvements (bytes):
        -608 : 36478.dasm (-45.68% of base)
        -528 : 36234.dasm (-6.23% of base)
        -466 : 300468.dasm (-31.07% of base)
        -328 : 300420.dasm (-33.88% of base)
        -318 : 36476.dasm (-46.63% of base)
        -316 : 178515.dasm (-9.17% of base)
        -316 : 173981.dasm (-9.17% of base)
        -290 : 300580.dasm (-34.44% of base)
        -247 : 300559.dasm (-29.51% of base)
        -222 : 300245.dasm (-31.81% of base)
        -210 : 124812.dasm (-12.86% of base)
        -209 : 300163.dasm (-34.43% of base)
        -206 : 300289.dasm (-31.69% of base)
        -195 : 124811.dasm (-11.90% of base)
        -195 : 124808.dasm (-12.87% of base)
        -195 : 124809.dasm (-12.75% of base)
        -195 : 124810.dasm (-13.00% of base)
        -195 : 124813.dasm (-12.88% of base)
        -166 : 91496.dasm (-6.02% of base)
        -105 : 174248.dasm (-17.77% of base)

572 total files with Code Size differences (232 improved, 340 regressed), 0 unchanged.

Top method regressions (bytes):
        1565 ( 6.71% of base) : 317307.dasm - System.Xml.Tests.TCMaxSettings:AddChildren():this
         852 ( 4.92% of base) : 317649.dasm - System.Xml.Tests.VerifyNameTests4:AddChildren():this
         684 ( 6.46% of base) : 315400.dasm - XLinqTests.LoadFromReader:AddChildren():this
         612 ( 7.24% of base) : 314994.dasm - XElementValue:AddChildren():this
         604 (10.13% of base) : 277203.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor8():this
         576 ( 5.92% of base) : 315613.dasm - XLinqTests.XContainerAddIntoElement:AddChildren():this
         576 ( 5.92% of base) : 315367.dasm - XLinqTests.AddFirstSingeNodeAddIntoElement:AddChildren():this
         504 ( 4.56% of base) : 316292.dasm - TCEOFHandling:AddChildren():this
         492 ( 3.85% of base) : 317639.dasm - System.Xml.Tests.VerifyNameTests2:AddChildren():this
         486 ( 2.73% of base) : 315502.dasm - XLinqTests.SimpleObjectsCreation:AddChildren():this
         459 (11.16% of base) : 277204.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor9():this
         432 ( 6.24% of base) : 316337.dasm - NamespacehandlingWriterSanity:AddChildren():this
         414 ( 6.60% of base) : 316350.dasm - OmitAnotation:AddChildren():this
         372 ( 4.16% of base) : 317645.dasm - System.Xml.Tests.VerifyNameTests3:AddChildren():this
         342 ( 5.99% of base) : 317258.dasm - System.Xml.Tests.TCConformanceSettings:AddChildren():this
         288 ( 6.73% of base) : 315632.dasm - XLinqTests.XElement_SetAttributeValue:AddChildren():this
         288 ( 5.34% of base) : 315360.dasm - XLinqTests.AddFirstAddFirstIntoDocument:AddChildren():this
         288 ( 1.76% of base) : 317343.dasm - System.Xml.Tests.TCDtdProcessingCoreReader:AddChildren():this
         288 ( 1.76% of base) : 317368.dasm - System.Xml.Tests.TCDtdProcessingNonCoreReader:AddChildren():this
         288 ( 6.39% of base) : 315606.dasm - XLinqTests.XAttributeRemove:AddChildren():this

Top method improvements (bytes):
        -608 (-45.68% of base) : 36478.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.boxing002.boxing002.Test:MainMethod(System.String[]):int
        -528 (-6.23% of base) : 36234.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.negboxing002.negboxing002.Test:MainMethod(System.String[]):int
        -466 (-31.07% of base) : 300468.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsTest():this
        -328 (-33.88% of base) : 300420.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2EqualsTest():this
        -318 (-46.63% of base) : 36476.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.boxing003.boxing003.Test:MainMethod(System.String[]):int
        -316 (-9.17% of base) : 178515.dasm - System.IO.Tests.BinaryWriterTests:BinaryWriter_SeekTests():this
        -316 (-9.17% of base) : 173981.dasm - System.IO.Tests.BinaryWriterTests:BinaryWriter_SeekTests():this
        -290 (-34.44% of base) : 300580.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this
        -247 (-29.51% of base) : 300559.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this
        -222 (-31.81% of base) : 300245.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this
        -210 (-12.86% of base) : 124812.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):System.Numerics.Vector`1[Single]
        -209 (-34.43% of base) : 300163.dasm - System.Numerics.Tests.Vector2Tests:Vector2EqualsTest():this
        -206 (-31.69% of base) : 300289.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this
        -195 (-11.90% of base) : 124811.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):double
        -195 (-12.87% of base) : 124808.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):ubyte
        -195 (-12.75% of base) : 124809.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):short
        -195 (-13.00% of base) : 124810.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):int
        -195 (-12.88% of base) : 124813.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter(System.Object):long
        -166 (-6.02% of base) : 91496.dasm - System.Text.Json.Nodes.Tests.OperatorTests:ExplicitOperators_FromNullableValues()
        -105 (-17.77% of base) : 174248.dasm - System.IO.Tests.TestLeaveOpen:BinaryWriterTest():this

Top method regressions (percentages):
         459 (11.16% of base) : 277204.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor9():this
          90 (10.94% of base) : 239280.dasm - CoreXml.Test.XLinq.BridgeHelpers:CreateLbNormalizationTestFile(System.String)
          28 (10.57% of base) : 281991.dasm - System.Diagnostics.TraceSourceTests.TraceListenerClassTests:IndentTest():this
         604 (10.13% of base) : 277203.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor8():this
          51 ( 9.88% of base) : 194602.dasm - System.Net.Http.Tests.CacheControlHeaderValueTest:ToString_UseResponseDirectiveValues_AllSerializedCorrectly():this
          12 ( 9.52% of base) : 195666.dasm - System.Net.Http.Tests.StreamToStreamCopyTest:CreateSourceMemoryStream(bool,System.Byte[]):System.IO.MemoryStream
         147 ( 9.42% of base) : 160587.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:EmbeddedCharTest1():this
          38 ( 9.16% of base) : 319460.dasm - System.Xml.XmlResolver.Tests.XmlPreloadedResolverMiscTests:XmlResolverSupportsTypeWithValidData():this
           6 ( 8.70% of base) : 308741.dasm - System.Security.Permissions.Tests.CodeConnectAccessTests:CodeConnectAccessCallMethods()
         228 ( 8.60% of base) : 314948.dasm - PropertiesTests:AddChildren():this
          89 ( 8.33% of base) : 277199.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor2():this
          12 ( 7.64% of base) : 290583.dasm - System.Tests.BinaryDataTests:CanCreateBinaryDataFromString():this
         256 ( 7.63% of base) : 277202.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor6():this
         122 ( 7.43% of base) : 292514.dasm - System.Net.Mail.Tests.SmtpExceptionTest:TestConstructorWithStringAndExceptionArgument():this
         216 ( 7.38% of base) : 315444.dasm - XLinqTests.NextNode:AddChildren():this
          83 ( 7.36% of base) : 277200.dasm - MonoTests.System.Configuration.ConfigurationErrorsExceptionTest:Constructor3():this
         612 ( 7.24% of base) : 314994.dasm - XElementValue:AddChildren():this
          30 ( 7.09% of base) : 195498.dasm - System.Net.Http.Tests.StringWithQualityHeaderValueTest:ToString_UseDifferentValues_AllSerializedCorrectly():this
          83 ( 7.00% of base) : 292512.dasm - System.Net.Mail.Tests.SmtpExceptionTest:TestConstructorWithStringArgument():this
          18 ( 7.00% of base) : 194752.dasm - System.Net.Http.Tests.EntityTagHeaderValueTest:ToString_UseDifferentETags_AllSerializedCorrectly():this

Top method improvements (percentages):
         -53 (-54.08% of base) : 213211.dasm - <>c:<Ctor_NonStringObjectValue_ThrowsInvalidCastException>b__2_0():System.Object:this
        -318 (-46.63% of base) : 36476.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.boxing003.boxing003.Test:MainMethod(System.String[]):int
         -47 (-46.08% of base) : 277986.dasm - <>c__DisplayClass3_0:<ConvertFrom_TypeError>b__0():System.Object:this
        -608 (-45.68% of base) : 36478.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.basic.boxing002.boxing002.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34055.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.generic004.generic004.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34078.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.extension002.extension002.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34080.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.extension001.extension001.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34024.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.static002.static002.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34027.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.static001.static001.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34035.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.regular002.regular002.Test:MainMethod(System.String[]):int
         -39 (-44.32% of base) : 34037.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.returnType.basic.regular001.regular001.Test:MainMethod(System.String[]):int
        -290 (-34.44% of base) : 300580.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this
        -209 (-34.43% of base) : 300163.dasm - System.Numerics.Tests.Vector2Tests:Vector2EqualsTest():this
        -328 (-33.88% of base) : 300420.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2EqualsTest():this
        -222 (-31.81% of base) : 300245.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this
        -206 (-31.69% of base) : 300289.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this
        -466 (-31.07% of base) : 300468.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsTest():this
         -30 (-29.70% of base) : 35218.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.operate002.operate002.Test:MainMethod(System.String[]):int
        -247 (-29.51% of base) : 300559.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this
         -40 (-24.54% of base) : 111882.dasm - FsCheck.Gen:TryWhere(Microsoft.FSharp.Core.FSharpFunc`2[__Canon,Boolean],FsCheck.Gen`1[__Canon]):FsCheck.Gen`1[__Canon]

572 total methods with Code Size differences (232 improved, 340 regressed), 0 unchanged.


@AndyAyersMS
Copy link
Member Author

Nice, but will it work without JitNew

No. Which is why you should go ahead with your proposed fix too.

VN generally doesn't handle conditional facts. So say we learn the exact type of some ssa value because of a type test introduced by GDV. VN has no way of expressing this unless. Some compilers I've seen will introduce "fake" ssa defs in order to extend the power of analyses like VN, eg

if (x == 3) S1; else S2;

would become

if (x == 3) { x = 3; S1; } else S2;

Assertion prop can also operate on conditional facts like these; not sure if it handles this case. Worth investigating.

@AndyAyersMS
Copy link
Member Author

Failure is a known issue (#52464).

@AndyAyersMS AndyAyersMS merged commit dec019c into dotnet:main May 9, 2021
@karelz karelz added this to the 6.0.0 milestone May 20, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Jun 19, 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.

3 participants