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

[JitDiff X64] [MichalPetryka] Move GetMethodTable to JIT #543

Open
MihuBot opened this issue Jul 18, 2024 · 3 comments
Open

[JitDiff X64] [MichalPetryka] Move GetMethodTable to JIT #543

MihuBot opened this issue Jul 18, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jul 18, 2024

Job completed in 16 minutes.
dotnet/runtime#105098

Diffs

Diffs
Found 315 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39216752
Total bytes of diff: 39216746
Total bytes of delta: -6 (-0.00 % of base)
Total relative delta: 0.49
    diff is an improvement.
    relative diff is a regression.


Top file regressions (bytes):
         476 : System.Private.CoreLib.dasm (0.01 % of base)
          46 : System.Collections.Specialized.dasm (0.37 % of base)
          41 : System.Private.Xml.dasm (0.00 % of base)
          32 : System.Data.Common.dasm (0.00 % of base)
          19 : System.Private.DataContractSerialization.dasm (0.00 % of base)

Top file improvements (bytes):
        -216 : System.Memory.dasm (-0.07 % of base)
        -174 : System.Text.Json.dasm (-0.01 % of base)
         -77 : Microsoft.VisualBasic.Core.dasm (-0.01 % of base)
         -64 : System.Linq.Parallel.dasm (-0.00 % of base)
         -32 : System.Net.Quic.dasm (-0.02 % of base)
         -18 : System.Security.Cryptography.dasm (-0.00 % of base)
         -13 : System.Composition.TypedParts.dasm (-0.03 % of base)
         -10 : System.Security.Cryptography.Pkcs.dasm (-0.00 % of base)
          -8 : System.Net.Http.dasm (-0.00 % of base)
          -4 : System.Memory.Data.dasm (-0.03 % of base)
          -2 : System.Net.Sockets.dasm (-0.00 % of base)
          -1 : System.Formats.Cbor.dasm (-0.00 % of base)
          -1 : System.Security.Cryptography.Cose.dasm (-0.00 % of base)

18 total files with Code Size differences (13 improved, 5 regressed), 241 unchanged.

Top method regressions (bytes):
         180 (48.39 % of base) : System.Private.CoreLib.dasm - System.StubHelpers.AsAnyMarshaler:ConvertLayoutToNative(System.Object,int):long:this (FullOpts)
         129 (87.76 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImplCastCheckEachElement(System.Array,int,System.Array,int,int) (FullOpts)
          53 (1.28 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
          45 (5.74 % of base) : System.Private.Xml.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
          41 (4.75 % of base) : System.Collections.Specialized.dasm - System.Collections.Specialized.NameValueCollection:CopyTo(System.Array,int):this (FullOpts)
          32 (3.24 % of base) : System.Data.Common.dasm - System.Data.DataRowComparer:CompareArray(System.Array,System.Array):ubyte (FullOpts)
          30 (2.39 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf(System.Array,System.Object,int,int):int (FullOpts)
          25 (2.48 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImpl(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
          19 (19.39 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Object[],long,System.Object) (FullOpts)
          19 (1.44 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.ReflectionXmlFormatWriter:ReflectionWriteCollection(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
          15 (4.12 % of base) : System.Private.CoreLib.dasm - System.Enum:HasFlag(System.Enum):ubyte:this (FullOpts)
          14 (2.46 % of base) : System.Private.CoreLib.dasm - System.Collections.ArrayList+IListWrapper:CopyTo(int,System.Array,int,int):this (FullOpts)
          13 (4.51 % of base) : System.Private.CoreLib.dasm - System.Object:MemberwiseClone():System.Object:this (FullOpts)
          11 (0.34 % of base) : System.Private.CoreLib.dasm - System.Array:Sort(System.Array,System.Array,int,int,System.Collections.IComparer) (FullOpts)
           9 (1.05 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptographicOperations:HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,ubyte[],System.IO.Stream,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[ubyte[]] (FullOpts)
           6 (0.35 % of base) : System.Private.CoreLib.dasm - System.Array:BinarySearch(System.Array,int,int,System.Object,System.Collections.IComparer):int (FullOpts)
           5 (0.99 % of base) : System.Collections.Specialized.dasm - System.Collections.Specialized.NameObjectCollectionBase:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
           5 (1.04 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509ChainElementCollection:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
           5 (1.04 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509ExtensionCollection:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
           4 (0.30 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf(System.Array,System.Object,int,int):int (FullOpts)
           4 (0.63 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:GetFirstSpan(byref,byref):this (FullOpts)
           4 (0.09 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContents:ReadBags(System.ReadOnlyMemory`1[ubyte]):System.Collections.Generic.List`1[System.Security.Cryptography.Pkcs.Pkcs12SafeBag] (FullOpts)
           4 (0.78 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContentsBag:Decode(System.ReadOnlyMemory`1[ubyte]):System.Security.Cryptography.Pkcs.Pkcs12SafeContentsBag (FullOpts)
           4 (0.24 % of base) : System.Memory.dasm - System.Text.EncodingExtensions:GetBytes(System.Text.Encoding,byref):ubyte[] (FullOpts)
           3 (0.92 % of base) : System.Private.CoreLib.dasm - System.Delegate:Remove(System.Delegate,System.Delegate):System.Delegate (FullOpts)
           3 (0.37 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketPal:TryCompleteReceiveMessageFrom(System.Net.Sockets.SafeSocketHandle,System.Span`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,System.Memory`1[ubyte],byref,ubyte,ubyte,byref,byref,byref,byref):ubyte (FullOpts)
           3 (2.75 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
           2 (0.08 % of base) : System.Private.CoreLib.dasm - System.IO.StreamReader+<ReadAsyncInternal>d__69:MoveNext():this (FullOpts)
           2 (0.14 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+CertKeyMatcher:PublicKeyMatches(System.Security.Cryptography.X509Certificates.ICertificatePalCore,byref):ubyte (FullOpts)
           1 (0.34 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImplUnBoxEachElement(System.Array,int,System.Array,int,int) (FullOpts)
           1 (1.03 % of base) : System.Private.CoreLib.dasm - System.Array:InternalGetValue(long):System.Object:this (FullOpts)

Top method improvements (bytes):
         -32 (-0.68 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:GetMethodsByName(System.Type,System.Reflection.IReflect,System.String,int):System.Reflection.MethodBase[]:this (FullOpts)
         -22 (-3.69 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Utils:CopyArray(System.Array,System.Array):System.Array (FullOpts)
         -18 (-2.46 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Information:TypeName(System.Object):System.String (FullOpts)
         -13 (-2.51 % of base) : System.Composition.TypedParts.dasm - System.Composition.TypedParts.Discovery.TypeInspector:AddMetadata(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.Type,System.Object) (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[double,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.16 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[int,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[long,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[short,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.06 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.04 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[System.Nullable`1[int],System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.03 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -7 (-0.74 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImplPrimitiveWiden(System.Array,int,System.Array,int,int) (FullOpts)
          -7 (-0.53 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignedCms:ComputeSignature(System.Security.Cryptography.Pkcs.CmsSigner,ubyte):this (FullOpts)
          -7 (-0.85 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader:IsPkcs12(System.String):ubyte (FullOpts)
          -7 (-0.31 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader:ReadCertsAndKeys(byref,System.ReadOnlyMemory`1[ubyte],byref,System.Security.Cryptography.X509Certificates.Pkcs12LoaderLimits) (FullOpts)
          -6 (-2.61 % of base) : System.Private.CoreLib.dasm - System.Delegate:InternalEqualTypes(System.Object,System.Object):ubyte (FullOpts)
          -5 (-0.53 % of base) : System.Private.CoreLib.dasm - System.Array:Reverse(System.Array,int,int) (FullOpts)
          -4 (-0.39 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.VB6RandomFile:Get(byref,long,ubyte,ubyte):this (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[double](byref,System.Span`1[double]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[int](byref,System.Span`1[int]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[long](byref,System.Span`1[long]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[short](byref,System.Span`1[short]) (FullOpts)
          -4 (-0.67 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[System.__Canon](byref,System.Span`1[System.__Canon]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[System.Nullable`1[int]](byref,System.Span`1[System.Nullable`1[int]]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[System.Numerics.Vector`1[float]](byref,System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts)
          -4 (-0.93 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[ubyte](byref,System.Span`1[ubyte]) (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[double]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[double] (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[double]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[double]:this (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[int]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[int] (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[int]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[int]:this (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[long]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[long] (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[long]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[long]:this (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[short]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[short] (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[short]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[short]:this (FullOpts)
          -4 (-1.32 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Nullable`1[int]]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[System.Nullable`1[int]] (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Nullable`1[int]]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[System.Nullable`1[int]]:this (FullOpts)
          -4 (-1.54 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Numerics.Vector`1[float]]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[System.Numerics.Vector`1[float]] (FullOpts)
          -4 (-1.06 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Numerics.Vector`1[float]]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]:this (FullOpts)
          -4 (-1.59 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[ubyte] (FullOpts)
          -4 (-1.10 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[ubyte]:this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[double]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[int]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[long]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[short]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[System.__Canon]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[System.Nullable`1[int]]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[System.Numerics.Vector`1[float]]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[ubyte]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[double],ubyte):ubyte:this (FullOpts)
          -4 (-0.17 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,double,double,int,ubyte):ubyte:this (FullOpts) (2 methods)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,double,ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,System.ReadOnlySpan`1[double],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[int],ubyte):ubyte:this (FullOpts)
          -4 (-0.19 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,int,int,int,ubyte):ubyte:this (FullOpts) (2 methods)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,int,ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,System.ReadOnlySpan`1[int],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[long],ubyte):ubyte:this (FullOpts)
          -4 (-0.19 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,long,long,int,ubyte):ubyte:this (FullOpts) (2 methods)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,long,ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,System.ReadOnlySpan`1[long],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[short],ubyte):ubyte:this (FullOpts)
          -4 (-0.18 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToSlow(byref,short,short,int,ubyte):ubyte:this (FullOpts) (2 methods)
          -4 (-0.83 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToSlow(byref,short,ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToSlow(byref,System.ReadOnlySpan`1[short],ubyte):ubyte:this (FullOpts)
          -4 (-0.83 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],ubyte):ubyte:this (FullOpts)
          -4 (-0.16 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToSlow(byref,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],int,ubyte):ubyte:this (FullOpts) (2 methods)
          -4 (-0.82 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToSlow(byref,System.Numerics.Vector`1[float],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToSlow(byref,System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[ubyte],ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToSlow(byref,System.ReadOnlySpan`1[ubyte],ubyte):ubyte:this (FullOpts)
          -4 (-0.19 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToSlow(byref,ubyte,ubyte,int,ubyte):ubyte:this (FullOpts) (2 methods)
          -4 (-0.83 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToSlow(byref,ubyte,ubyte):ubyte:this (FullOpts)
          -4 (-1.31 % of base) : System.Memory.Data.dasm - System.IO.ReadOnlyMemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -4 (-1.31 % of base) : System.Net.Http.dasm - System.IO.ReadOnlyMemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -4 (-0.41 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[double](System.Collections.Generic.IList`1[double],System.Func`2[double,System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.41 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[int](System.Collections.Generic.IList`1[int],System.Func`2[int,System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.41 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[long](System.Collections.Generic.IList`1[long],System.Func`2[long,System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.41 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[short](System.Collections.Generic.IList`1[short],System.Func`2[short,System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.37 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],System.Func`2[System.__Canon,System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.41 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[System.Nullable`1[int]](System.Collections.Generic.IList`1[System.Nullable`1[int]],System.Func`2[System.Nullable`1[int],System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.39 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[System.Numerics.Vector`1[float]](System.Collections.Generic.IList`1[System.Numerics.Vector`1[float]],System.Func`2[System.Numerics.Vector`1[float],System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.41 % of base) : System.Net.Quic.dasm - System.Net.Quic.MsQuicBuffers:Initialize[ubyte](System.Collections.Generic.IList`1[ubyte],System.Func`2[ubyte,System.ReadOnlyMemory`1[ubyte]]):this (FullOpts)
          -4 (-0.44 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveFrom(System.Span`1[ubyte],int,System.Net.SocketAddress):int:this (FullOpts)
          -4 (-1.93 % of base) : System.Text.Json.dasm - System.Runtime.InteropServices.JsonMarshal:GetRawUtf8Value(System.Text.Json.JsonElement):System.ReadOnlySpan`1[ubyte] (FullOpts)
          -4 (-0.59 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignedCms:Decode(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
          -4 (-1.08 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:ImportPkcs8PrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          -4 (-1.08 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:ImportSubjectPublicKeyInfo(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          -4 (-0.73 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryExportPrivateKey(System.Security.Cryptography.RSAOpenSsl+TryExportPrivateKeySelector,System.Span`1[ubyte],byref):ubyte:this (FullOpts)
          -4 (-0.89 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryExportPublicKey(System.Func`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]],System.Span`1[ubyte],byref):ubyte:this (FullOpts)
          -4 (-1.54 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl+<>c:<ExportRSAPublicKey>b__25_0(System.ReadOnlyMemory`1[ubyte]):ubyte[]:this (FullOpts)
          -4 (-0.84 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+CertKeyMatcher:FindMatchingKey(System.ReadOnlySpan`1[System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn],System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          -4 (-0.73 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument:CloneElement(int):System.Text.Json.JsonElement:this (FullOpts)
          -4 (-2.40 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument:GetPropertyRawValueAsString(int):System.String:this (FullOpts)
          -4 (-2.33 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument:GetRawValueAsString(int):System.String:this (FullOpts)
          -4 (-1.86 % of base) : System.Text.Json.dasm - System.Text.Json.JsonElement:get_ValueSpan():System.ReadOnlySpan`1[ubyte]:this (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Object (FullOpts)
          -4 (-1.30 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonDocument,System.Type,System.Text.Json.JsonSerializerOptions):System.Object (FullOpts)

Top method regressions (percentages):
         129 (87.76 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImplCastCheckEachElement(System.Array,int,System.Array,int,int) (FullOpts)
         180 (48.39 % of base) : System.Private.CoreLib.dasm - System.StubHelpers.AsAnyMarshaler:ConvertLayoutToNative(System.Object,int):long:this (FullOpts)
          19 (19.39 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef(System.Object[],long,System.Object) (FullOpts)
          45 (5.74 % of base) : System.Private.Xml.dasm - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
          41 (4.75 % of base) : System.Collections.Specialized.dasm - System.Collections.Specialized.NameValueCollection:CopyTo(System.Array,int):this (FullOpts)
          13 (4.51 % of base) : System.Private.CoreLib.dasm - System.Object:MemberwiseClone():System.Object:this (FullOpts)
          15 (4.12 % of base) : System.Private.CoreLib.dasm - System.Enum:HasFlag(System.Enum):ubyte:this (FullOpts)
          32 (3.24 % of base) : System.Data.Common.dasm - System.Data.DataRowComparer:CompareArray(System.Array,System.Array):ubyte (FullOpts)
           3 (2.75 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.GCHandle:AddrOfPinnedObject():long:this (FullOpts)
          25 (2.48 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImpl(System.Array,int,System.Array,int,int,ubyte) (FullOpts)
          14 (2.46 % of base) : System.Private.CoreLib.dasm - System.Collections.ArrayList+IListWrapper:CopyTo(int,System.Array,int,int):this (FullOpts)
          30 (2.39 % of base) : System.Private.CoreLib.dasm - System.Array:IndexOf(System.Array,System.Object,int,int):int (FullOpts)
          19 (1.44 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.ReflectionXmlFormatWriter:ReflectionWriteCollection(System.Runtime.Serialization.XmlWriterDelegator,System.Object,System.Runtime.Serialization.XmlObjectSerializerWriteContext,System.Runtime.Serialization.DataContracts.CollectionDataContract) (FullOpts)
          53 (1.28 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
           9 (1.05 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.CryptographicOperations:HmacDataAsync(System.Security.Cryptography.HashAlgorithmName,ubyte[],System.IO.Stream,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[ubyte[]] (FullOpts)
           5 (1.04 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509ExtensionCollection:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
           5 (1.04 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509ChainElementCollection:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
           1 (1.03 % of base) : System.Private.CoreLib.dasm - System.Array:InternalGetValue(long):System.Object:this (FullOpts)
           5 (0.99 % of base) : System.Collections.Specialized.dasm - System.Collections.Specialized.NameObjectCollectionBase:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)
           3 (0.92 % of base) : System.Private.CoreLib.dasm - System.Delegate:Remove(System.Delegate,System.Delegate):System.Delegate (FullOpts)
           4 (0.78 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContentsBag:Decode(System.ReadOnlyMemory`1[ubyte]):System.Security.Cryptography.Pkcs.Pkcs12SafeContentsBag (FullOpts)
           4 (0.63 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:GetFirstSpan(byref,byref):this (FullOpts)
           3 (0.37 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketPal:TryCompleteReceiveMessageFrom(System.Net.Sockets.SafeSocketHandle,System.Span`1[ubyte],System.Collections.Generic.IList`1[System.ArraySegment`1[ubyte]],int,System.Memory`1[ubyte],byref,ubyte,ubyte,byref,byref,byref,byref):ubyte (FullOpts)
           6 (0.35 % of base) : System.Private.CoreLib.dasm - System.Array:BinarySearch(System.Array,int,int,System.Object,System.Collections.IComparer):int (FullOpts)
           1 (0.34 % of base) : System.Private.CoreLib.dasm - System.Array:CopyImplUnBoxEachElement(System.Array,int,System.Array,int,int) (FullOpts)
          11 (0.34 % of base) : System.Private.CoreLib.dasm - System.Array:Sort(System.Array,System.Array,int,int,System.Collections.IComparer) (FullOpts)
           4 (0.30 % of base) : System.Private.CoreLib.dasm - System.Array:LastIndexOf(System.Array,System.Object,int,int):int (FullOpts)
           4 (0.24 % of base) : System.Memory.dasm - System.Text.EncodingExtensions:GetBytes(System.Text.Encoding,byref):ubyte[] (FullOpts)
           2 (0.14 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+CertKeyMatcher:PublicKeyMatches(System.Security.Cryptography.X509Certificates.ICertificatePalCore,byref):ubyte (FullOpts)
           4 (0.09 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.Pkcs12SafeContents:ReadBags(System.ReadOnlyMemory`1[ubyte]):System.Collections.Generic.List`1[System.Security.Cryptography.Pkcs.Pkcs12SafeBag] (FullOpts)
           2 (0.08 % of base) : System.Private.CoreLib.dasm - System.IO.StreamReader+<ReadAsyncInternal>d__69:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -22 (-3.69 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Utils:CopyArray(System.Array,System.Array):System.Array (FullOpts)
          -6 (-2.61 % of base) : System.Private.CoreLib.dasm - System.Delegate:InternalEqualTypes(System.Object,System.Object):ubyte (FullOpts)
         -13 (-2.51 % of base) : System.Composition.TypedParts.dasm - System.Composition.TypedParts.Discovery.TypeInspector:AddMetadata(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.Type,System.Object) (FullOpts)
         -18 (-2.46 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Information:TypeName(System.Object):System.String (FullOpts)
          -4 (-2.40 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument:GetPropertyRawValueAsString(int):System.String:this (FullOpts)
          -4 (-2.33 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument:GetRawValueAsString(int):System.String:this (FullOpts)
          -4 (-1.93 % of base) : System.Text.Json.dasm - System.Runtime.InteropServices.JsonMarshal:GetRawUtf8Value(System.Text.Json.JsonElement):System.ReadOnlySpan`1[ubyte] (FullOpts)
          -4 (-1.86 % of base) : System.Text.Json.dasm - System.Text.Json.JsonElement:get_ValueSpan():System.ReadOnlySpan`1[ubyte]:this (FullOpts)
          -3 (-1.66 % of base) : System.Private.CoreLib.dasm - System.Enum:Equals(System.Object):ubyte:this (FullOpts)
          -4 (-1.59 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[ubyte] (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[double]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[double] (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[int]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[int] (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[long]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[long] (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[short]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[short] (FullOpts)
          -4 (-1.57 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Nullable`1[int]]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[System.Nullable`1[int]] (FullOpts)
          -4 (-1.54 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Numerics.Vector`1[float]]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[System.Numerics.Vector`1[float]] (FullOpts)
          -4 (-1.54 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl+<>c:<ExportRSAPublicKey>b__25_0(System.ReadOnlyMemory`1[ubyte]):ubyte[]:this (FullOpts)
          -4 (-1.52 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[double](System.Text.Json.JsonDocument,System.Text.Json.JsonSerializerOptions):double (FullOpts)
          -4 (-1.52 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[int](System.Text.Json.JsonDocument,System.Text.Json.JsonSerializerOptions):int (FullOpts)
          -4 (-1.52 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[long](System.Text.Json.JsonDocument,System.Text.Json.JsonSerializerOptions):long (FullOpts)
          -4 (-1.52 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[short](System.Text.Json.JsonDocument,System.Text.Json.JsonSerializerOptions):short (FullOpts)
          -4 (-1.52 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[System.Nullable`1[int]](System.Text.Json.JsonDocument,System.Text.Json.JsonSerializerOptions):System.Nullable`1[int] (FullOpts)
          -4 (-1.52 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[ubyte](System.Text.Json.JsonDocument,System.Text.Json.JsonSerializerOptions):ubyte (FullOpts)
          -4 (-1.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[double](System.Text.Json.JsonElement,System.Text.Json.JsonSerializerOptions):double (FullOpts)
          -4 (-1.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[int](System.Text.Json.JsonElement,System.Text.Json.JsonSerializerOptions):int (FullOpts)
          -4 (-1.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[long](System.Text.Json.JsonElement,System.Text.Json.JsonSerializerOptions):long (FullOpts)
          -4 (-1.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[short](System.Text.Json.JsonElement,System.Text.Json.JsonSerializerOptions):short (FullOpts)
          -4 (-1.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[System.Nullable`1[int]](System.Text.Json.JsonElement,System.Text.Json.JsonSerializerOptions):System.Nullable`1[int] (FullOpts)
          -4 (-1.44 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[ubyte](System.Text.Json.JsonElement,System.Text.Json.JsonSerializerOptions):ubyte (FullOpts)
          -4 (-1.32 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:GetFirstSpanSlow(System.Object,int,int,ubyte):System.ReadOnlySpan`1[System.__Canon] (FullOpts)
          -4 (-1.31 % of base) : System.Memory.Data.dasm - System.IO.ReadOnlyMemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -4 (-1.31 % of base) : System.Net.Http.dasm - System.IO.ReadOnlyMemoryStream:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -4 (-1.30 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonDocument,System.Type,System.Text.Json.JsonSerializerOptions):System.Object (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Object (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[double](System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double]):double (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[int](System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]):int (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[long](System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long]):long (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[short](System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[short]):short (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[System.Nullable`1[int]](System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
          -4 (-1.26 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[ubyte](System.Text.Json.JsonDocument,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[ubyte]):ubyte (FullOpts)
          -4 (-1.23 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonElement,System.Type,System.Text.Json.JsonSerializerOptions):System.Object (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo):System.Object (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[double](System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[double]):double (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[int](System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[int]):int (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[long](System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[long]):long (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[short](System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[short]):short (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[System.Nullable`1[int]](System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts)
          -4 (-1.20 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize[ubyte](System.Text.Json.JsonElement,System.Text.Json.Serialization.Metadata.JsonTypeInfo`1[ubyte]):ubyte (FullOpts)
          -8 (-1.16 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[int,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -4 (-1.10 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[ubyte]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[ubyte]:this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[long,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[short,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[ubyte,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.08 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[double,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -4 (-1.08 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:ImportPkcs8PrivateKey(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          -4 (-1.08 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSA:ImportSubjectPublicKeyInfo(System.ReadOnlySpan`1[ubyte],byref):this (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[double]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[double]:this (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[int]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[int]:this (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[long]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[long]:this (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[short]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[short]:this (FullOpts)
          -4 (-1.07 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Nullable`1[int]]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[System.Nullable`1[int]]:this (FullOpts)
          -4 (-1.06 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.Numerics.Vector`1[float]]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]:this (FullOpts)
          -8 (-1.06 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[System.__Canon,System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.04 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[System.Nullable`1[int],System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -8 (-1.03 % of base) : System.Linq.Parallel.dasm - System.Linq.Parallel.SortHelper`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:BuildKeysFromSource(byref,byref):this (FullOpts)
          -4 (-0.95 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonDocument,System.Type,System.Text.Json.Serialization.JsonSerializerContext):System.Object (FullOpts)
          -4 (-0.93 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[ubyte](byref,System.Span`1[ubyte]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[short](byref,System.Span`1[short]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[double](byref,System.Span`1[double]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[int](byref,System.Span`1[int]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[long](byref,System.Span`1[long]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[System.Nullable`1[int]](byref,System.Span`1[System.Nullable`1[int]]) (FullOpts)
          -4 (-0.92 % of base) : System.Memory.dasm - System.Buffers.BuffersExtensions:CopyTo[System.Numerics.Vector`1[float]](byref,System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts)
          -4 (-0.92 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:Deserialize(System.Text.Json.JsonElement,System.Type,System.Text.Json.Serialization.JsonSerializerContext):System.Object (FullOpts)
          -4 (-0.89 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSAOpenSsl:TryExportPublicKey(System.Func`2[System.ReadOnlyMemory`1[ubyte],System.ReadOnlyMemory`1[ubyte]],System.Span`1[ubyte],byref):ubyte:this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[double]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[int]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[long]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[short]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[System.__Canon]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[System.Nullable`1[int]]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[System.Numerics.Vector`1[float]]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -4 (-0.88 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1+<>c[ubyte]:<ToString>b__33_0(System.Span`1[ushort],System.Buffers.ReadOnlySequence`1[ushort]):this (FullOpts)
          -7 (-0.85 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader:IsPkcs12(System.String):ubyte (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,System.ReadOnlySpan`1[double],ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,System.ReadOnlySpan`1[int],ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,System.ReadOnlySpan`1[long],ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToSlow(byref,System.ReadOnlySpan`1[short],ubyte):ubyte:this (FullOpts)
          -4 (-0.85 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToSlow(byref,System.ReadOnlySpan`1[ubyte],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,double,ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToSlow(byref,System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509CertificateLoader+CertKeyMatcher:FindMatchingKey(System.ReadOnlySpan`1[System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn],System.ReadOnlySpan`1[ubyte]):int (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,int,ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,long,ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[double],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[int],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[long],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[short],ubyte):ubyte:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.ReadOnlySequence`1[System.__Canon]:GetFirstSpanSlow(System.Object,ubyte):System.ReadOnlySpan`1[System.__Canon]:this (FullOpts)
          -4 (-0.84 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToAnySlow(byref,System.ReadOnlySpan`1[ubyte],ubyte):ubyte:this (FullOpts)

193 total methods with Code Size differences (162 improved, 31 regressed), 230544 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 18, 2024

Top method regressions

180 (48.39 % of base) - System.StubHelpers.AsAnyMarshaler:ConvertLayoutToNative(System.Object,int):long:this
 ; Assembly listing for method System.StubHelpers.AsAnyMarshaler:ConvertLayoutToNative(System.Object,int):long:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 7 single block inlinees; 1 inlinees without PGO data
+; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  6,  4.50)   byref  ->  [rbp-0x88]  this single-def
-;  V01 arg1         [V01,T03] (  4,  3.50)     ref  ->  [rbp-0x90]  class-hnd single-def <System.Object>
-;  V02 arg2         [V02,T02] (  4,  4   )     int  ->  r15         single-def
-;  V03 loc0         [V03,T09] (  3,  2.50)    long  ->  rbx        
+;  V00 this         [V00,T01] (  6,  4.50)   byref  ->  [rbp-0x98]  this single-def
+;  V01 arg1         [V01,T02] (  6,  4.50)     ref  ->  [rbp-0xA0]  class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T03] (  4,  4   )     int  ->  r14         single-def
+;  V03 loc0         [V03,T08] (  4,  3   )    long  ->  rbx        
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V05 tmp1         [V05    ] (  4,  8   )     ref  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inlining Arg" <System.RuntimeType>
 ;  V06 tmp2         [V06    ] (  4,  8   )  struct (16) [rbp-0x40]  do-not-enreg[SFA] multireg-arg ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.QCallTypeHandle>
 ;  V07 tmp3         [V07,T04] (  3,  5   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.RuntimeType>
 ;* V08 tmp4         [V08    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )   byref  ->  zero-ref   
 ;  V11 tmp7         [V11,T10] (  3,  2   )    long  ->  rsi        
 ;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V13 tmp9         [V13    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.Runtime.CompilerServices.QCallTypeHandle>
 ;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V16 tmp12        [V16,T07] (  2,  4   )    long  ->  rax         "Single return block return value"
-;  V17 FramesRoot   [V17,T01] (  6,  6   )    long  ->  r13         "Pinvoke FrameListRoot"
-;  V18 PInvokeFrame [V18    ] (  8,  8   )  struct (64) [rbp-0x80]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V19 tmp15        [V19,T05] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V06._ptr (fldOffset=0x0)" P-DEP
-;  V20 tmp16        [V20,T06] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V06._handle (fldOffset=0x8)" P-DEP
-;* V21 tmp17        [V21    ] (  0,  0   )    long  ->  zero-ref    "field V13._ptr (fldOffset=0x0)" P-INDEP
-;* V22 tmp18        [V22    ] (  0,  0   )    long  ->  zero-ref    "field V13._handle (fldOffset=0x8)" P-INDEP
-;  V23 cse0         [V23,T08] (  3,  3   )     ref  ->  [rbp-0x98]  spill-single-def "CSE #01: aggressive"
+;  V16 tmp12        [V16    ] (  3,  1.50)    long  ->  [rbp-0x48]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V17 tmp13        [V17    ] (  2,  1   )    long  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
+;  V18 tmp14        [V18,T12] (  2,  1   )    long  ->  rax         "Inline stloc first use temp"
+;  V19 tmp15        [V19,T11] (  2,  2   )   byref  ->  [rbp-0xA8]  spill-single-def "Inlining Arg"
+;* V20 tmp16        [V20    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;* V21 tmp17        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Runtime.CompilerServices.RawData>
+;* V22 tmp18        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Runtime.CompilerServices.RawData>
+;  V23 tmp19        [V23,T07] (  2,  4   )    long  ->  rax         "Single return block return value"
+;  V24 FramesRoot   [V24,T00] ( 10,  8   )    long  ->  r13         "Pinvoke FrameListRoot"
+;  V25 PInvokeFrame [V25    ] ( 12, 10   )  struct (64) [rbp-0x90]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V26 tmp22        [V26,T05] (  3,  5   )    long  ->  [rbp-0x40]  do-not-enreg[] "field V06._ptr (fldOffset=0x0)" P-DEP
+;  V27 tmp23        [V27,T06] (  3,  5   )    long  ->  [rbp-0x38]  do-not-enreg[] "field V06._handle (fldOffset=0x8)" P-DEP
+;* V28 tmp24        [V28    ] (  0,  0   )    long  ->  zero-ref    "field V13._ptr (fldOffset=0x0)" P-INDEP
+;* V29 tmp25        [V29    ] (  0,  0   )    long  ->  zero-ref    "field V13._handle (fldOffset=0x8)" P-INDEP
+;  V30 cse0         [V30,T09] (  3,  3   )     ref  ->  [rbp-0xB0]  spill-single-def "CSE #02: aggressive"
 ;
-; Lcl frame size = 120
+; Lcl frame size = 136
 
 G_M52896_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 120
+       sub      rsp, 136
        vzeroupper 
-       lea      rbp, [rsp+0xA0]
+       lea      rbp, [rsp+0xB0]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
-       mov      bword ptr [rbp-0x88], rdi
-       mov      r14, rsi
-       mov      r15d, edx
-						;; size=44 bbWeight=1 PerfScore 10.50
+       mov      bword ptr [rbp-0x98], rdi
+       mov      r15, rsi
+       mov      r14d, edx
+						;; size=47 bbWeight=1 PerfScore 10.50
 G_M52896_IG02:
-       lea      rdi, [rbp-0x78]
+       lea      rdi, [rbp-0x88]
        call     CORINFO_HELP_INIT_PINVOKE_FRAME
        mov      r13, rax
        mov      rdi, rsp
-       mov      qword ptr [rbp-0x60], rdi
+       mov      qword ptr [rbp-0x70], rdi
        mov      rdi, rbp
-       mov      qword ptr [rbp-0x50], rdi
-       mov      gword ptr [rbp-0x90], r14
-       mov      rdi, r14
+       mov      qword ptr [rbp-0x60], rdi
+       mov      gword ptr [rbp-0xA0], r15
+       mov      rdi, r15
        call     System.Object:GetType():System.Type:this
        mov      r12, rax
-       mov      gword ptr [rbp-0x98], r12
+       mov      gword ptr [rbp-0xB0], r12
        mov      gword ptr [rbp-0x30], r12
        vxorps   xmm0, xmm0, xmm0
        vmovups  xmmword ptr [rbp-0x40], xmm0
        lea      rdi, [rbp-0x30]
        mov      qword ptr [rbp-0x40], rdi
        mov      rdi, gword ptr [rbp-0x30]
        test     rdi, rdi
        jne      SHORT G_M52896_IG04
-						;; size=81 bbWeight=1 PerfScore 13.83
+						;; size=84 bbWeight=1 PerfScore 13.83
 G_M52896_IG03:
        xor      esi, esi
        jmp      SHORT G_M52896_IG05
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M52896_IG04:
        mov      rsi, qword ptr [rdi+0x18]
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M52896_IG05:
        mov      qword ptr [rbp-0x38], rsi
        lea      rdi, [rbp-0x30]
        mov      rsi, qword ptr [rbp-0x38]
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; function address
-       mov      qword ptr [rbp-0x68], rax
+       mov      qword ptr [rbp-0x78], rax
        lea      rax, G_M52896_IG08
-       mov      qword ptr [rbp-0x58], rax
-       lea      rax, [rbp-0x78]
+       mov      qword ptr [rbp-0x68], rax
+       lea      rax, [rbp-0x88]
        mov      qword ptr [r13+0x08], rax
        mov      byte  ptr [r13+0x04], 0
-						;; size=52 bbWeight=1 PerfScore 8.50
+						;; size=55 bbWeight=1 PerfScore 8.50
 G_M52896_IG06:
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
 						;; size=10 bbWeight=1 PerfScore 0.25
 G_M52896_IG07:
        call     [rax]System.Runtime.InteropServices.Marshal:<SizeOfHelper>g____PInvoke|1_0(System.Runtime.CompilerServices.QCallTypeHandle,int):int
 						;; size=2 bbWeight=1 PerfScore 3.00
 G_M52896_IG08:
        mov      byte  ptr [r13+0x04], 1
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      dword ptr [rcx], 0
        je       SHORT G_M52896_IG09
        mov      rdi, 0xD1FFAB1E
        call     [rdi]CORINFO_HELP_STOP_FOR_GC
 						;; size=32 bbWeight=1 PerfScore 8.50
 G_M52896_IG09:
-       mov      rdi, qword ptr [rbp-0x70]
+       mov      rdi, qword ptr [rbp-0x80]
        mov      qword ptr [r13+0x08], rdi
        mov      edi, eax
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.NativeMemory:Alloc(ulong):ulong
        call     [rax]System.Runtime.InteropServices.NativeMemory:Alloc(ulong):ulong
        mov      rbx, rax
-       test     r15d, 0xD1FFAB1E
-       je       SHORT G_M52896_IG11
-						;; size=34 bbWeight=1 PerfScore 7.00
+       test     r14d, 0xD1FFAB1E
+       je       G_M52896_IG16
+						;; size=38 bbWeight=1 PerfScore 7.00
 G_M52896_IG10:
-       mov      r14, bword ptr [rbp-0x88]
-       cmp      byte  ptr [r14], r14b
-       lea      rdx, bword ptr [r14+0x08]
-       mov      rdi, gword ptr [rbp-0x90]
-       mov      rsi, rbx
-       mov      rax, 0xD1FFAB1E      ; code for System.StubHelpers.StubHelpers:FmtClassUpdateNativeInternal(System.Object,ulong,byref)
-       call     [rax]System.StubHelpers.StubHelpers:FmtClassUpdateNativeInternal(System.Object,ulong,byref)
-       mov      bword ptr [rbp-0x88], r14
-						;; size=43 bbWeight=0.50 PerfScore 5.00
+       mov      r15, bword ptr [rbp-0x98]
+       cmp      byte  ptr [r15], r15b
+       mov      bword ptr [rbp-0x98], r15
+       lea      r12, bword ptr [r15+0x08]
+       mov      bword ptr [rbp-0xA8], r12
+       mov      rdi, gword ptr [rbp-0xA0]
+       mov      rdi, qword ptr [rdi]
+       lea      rsi, [rbp-0x48]
+       lea      rdx, [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; function address
+       mov      qword ptr [rbp-0x78], rax
+       lea      rax, G_M52896_IG13
+       mov      qword ptr [rbp-0x68], rax
+       lea      rax, [rbp-0x88]
+       mov      qword ptr [r13+0x08], rax
+       mov      byte  ptr [r13+0x04], 0
+						;; size=87 bbWeight=0.50 PerfScore 8.12
 G_M52896_IG11:
-       test     r15d, 0xD1FFAB1E
+       mov      rax, 0xD1FFAB1E      ; code for System.Runtime.InteropServices.Marshal:<TryGetStructMarshalStub>g____PInvoke|23_0(long,ulong,ulong):int
+						;; size=10 bbWeight=0.50 PerfScore 0.12
+G_M52896_IG12:
+       call     [rax]System.Runtime.InteropServices.Marshal:<TryGetStructMarshalStub>g____PInvoke|23_0(long,ulong,ulong):int
+						;; size=2 bbWeight=0.50 PerfScore 1.50
+G_M52896_IG13:
+       mov      byte  ptr [r13+0x04], 1
+       mov      rcx, 0xD1FFAB1E      ; function address
+       cmp      dword ptr [rcx], 0
+       je       SHORT G_M52896_IG14
+       mov      rdi, 0xD1FFAB1E
+       call     [rdi]CORINFO_HELP_STOP_FOR_GC
+						;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M52896_IG14:
+       mov      rdi, qword ptr [rbp-0x80]
+       mov      qword ptr [r13+0x08], rdi
+       cmp      qword ptr [rbp-0x48], 0
        je       SHORT G_M52896_IG15
+       mov      rax, qword ptr [rbp-0x48]
+       mov      r15, gword ptr [rbp-0xA0]
+       lea      rdi, bword ptr [r15+0x08]
+       mov      rsi, rbx
+       mov      rcx, bword ptr [rbp-0xA8]
+       xor      edx, edx
+       call     rax
+       jmp      SHORT G_M52896_IG16
+						;; size=46 bbWeight=0.50 PerfScore 7.00
+G_M52896_IG15:
+       mov      r15, gword ptr [rbp-0xA0]
+       lea      rsi, bword ptr [r15+0x08]
+       mov      rdi, rbx
+       mov      rdx, qword ptr [rbp-0x50]
+       mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
+       call     [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
+						;; size=30 bbWeight=0.50 PerfScore 3.00
+G_M52896_IG16:
+       test     r14d, 0xD1FFAB1E
+       je       SHORT G_M52896_IG20
 						;; size=9 bbWeight=1 PerfScore 1.25
-G_M52896_IG12:
-       mov      r14, bword ptr [rbp-0x88]
-       mov      dword ptr [r14+0x18], 2
+G_M52896_IG17:
+       mov      r15, bword ptr [rbp-0x98]
+       mov      dword ptr [r15+0x18], 2
 						;; size=15 bbWeight=0.50 PerfScore 1.00
-G_M52896_IG13:
-       mov      rsi, gword ptr [rbp-0x98]
-       mov      rdi, r14
+G_M52896_IG18:
+       mov      rsi, gword ptr [rbp-0xB0]
+       mov      rdi, r15
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        mov      rax, rbx
 						;; size=18 bbWeight=1 PerfScore 2.50
-G_M52896_IG14:
-       add      rsp, 120
+G_M52896_IG19:
+       add      rsp, 136
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=1 PerfScore 4.25
-G_M52896_IG15:
-       mov      r14, bword ptr [rbp-0x88]
-       jmp      SHORT G_M52896_IG13
+						;; size=18 bbWeight=1 PerfScore 4.25
+G_M52896_IG20:
+       mov      r15, bword ptr [rbp-0x98]
+       jmp      SHORT G_M52896_IG18
 						;; size=9 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 372, prolog size 31, PerfScore 69.21, instruction count 90, allocated bytes for code 372 (MethodHash=1187315f) for method System.StubHelpers.AsAnyMarshaler:ConvertLayoutToNative(System.Object,int):long:this (FullOpts)
+; Total bytes of code 552, prolog size 34, PerfScore 88.21, instruction count 124, allocated bytes for code 552 (MethodHash=1187315f) for method System.StubHelpers.AsAnyMarshaler:ConvertLayoutToNative(System.Object,int):long:this (FullOpts)
129 (87.76 % of base) - System.Array:CopyImplCastCheckEachElement(System.Array,int,System.Array,int,int)
 ; Assembly listing for method System.Array:CopyImplCastCheckEachElement(System.Array,int,System.Array,int,int) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
-; partially interruptible
+; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T04] (  4,  4   )     ref  ->  rdi         class-hnd single-def <System.Array>
-;  V01 arg1         [V01,T05] (  3,  3   )     int  ->  rsi         single-def
-;  V02 arg2         [V02,T03] (  5,  5   )     ref  ->  rdx         class-hnd single-def <System.Array>
-;  V03 arg3         [V03,T06] (  3,  3   )     int  ->  rcx         single-def
-;  V04 arg4         [V04,T02] (  4,  7   )     int  ->  rbx         single-def
-;  V05 loc0         [V05,T09] (  2,  5   )    long  ->  r15        
-;  V06 loc1         [V06,T07] (  2,  5   )   byref  ->  r14         single-def
-;  V07 loc2         [V07,T08] (  2,  5   )   byref  ->  r13         single-def
-;  V08 loc3         [V08,T00] (  5, 17   )     int  ->  r12        
-;* V09 loc4         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Object>
+;  V00 arg0         [V00,T13] (  4,  4   )     ref  ->  rdi         class-hnd single-def <System.Array>
+;  V01 arg1         [V01,T15] (  3,  3   )     int  ->  rsi         single-def
+;  V02 arg2         [V02,T14] (  4,  4   )     ref  ->  rdx         class-hnd single-def <System.Array>
+;  V03 arg3         [V03,T16] (  3,  3   )     int  ->  rcx         single-def
+;  V04 arg4         [V04,T11] (  4,  7   )     int  ->  rbx         single-def
+;  V05 loc0         [V05,T10] (  5, 14   )    long  ->  r15        
+;  V06 loc1         [V06,T17] (  2,  5   )   byref  ->  r14         single-def
+;  V07 loc2         [V07,T18] (  2,  5   )   byref  ->  r13         single-def
+;  V08 loc3         [V08,T06] (  6, 21   )     int  ->  r12        
+;  V09 loc4         [V09,T09] (  5, 14   )     ref  ->  rsi         class-hnd <System.Object>
 ;# V10 OutArgs      [V10    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V11 tmp1         [V11    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;* V12 tmp2         [V12    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
-;  V13 cse0         [V13,T01] (  3, 12   )    long  ->  [rbp-0x30]  spill-single-def "CSE #01: aggressive"
+;  V11 tmp1         [V11,T12] (  3,  8   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Object>
+;  V12 tmp2         [V12,T07] (  4, 21   )    long  ->  rdi         "Inline stloc first use temp"
+;  V13 tmp3         [V13,T19] (  2,  4   )     int  ->  r10         "Inline return value spill temp"
+;* V14 tmp4         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <int[]>
+;  V15 tmp5         [V15,T04] (  4, 34   )   byref  ->  rax         "Inline stloc first use temp"
+;  V16 tmp6         [V16,T03] (  4, 49   )     int  ->  rcx         "Inline stloc first use temp"
+;  V17 tmp7         [V17,T01] (  5, 65   )     int  ->  rdx         "Inline stloc first use temp"
+;  V18 tmp8         [V18,T02] (  5, 58   )   byref  ->   r8         "Inline stloc first use temp"
+;  V19 tmp9         [V19,T00] (  5, 66   )     int  ->   r9         "Inline stloc first use temp"
+;  V20 tmp10        [V20,T05] (  2, 32   )    long  ->  r10         "Inline stloc first use temp"
+;  V21 tmp11        [V21,T08] (  3, 18   )    long  ->  r10         "Inline stloc first use temp"
+;* V22 tmp12        [V22    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V23 tmp13        [V23,T21] (  2,  2   )     ref  ->  rax         "Field obj"
+;  V24 cse0         [V24,T20] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M43951_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      ebx, r8d
 						;; size=19 bbWeight=1 PerfScore 7.75
 G_M43951_IG02:
        mov      rax, qword ptr [rdx]
        mov      r15, qword ptr [rax+0x30]
-       lea      rax, bword ptr [rdi+0x08]
+       lea      r8, bword ptr [rdi+0x08]
        mov      rdi, qword ptr [rdi]
        mov      edi, dword ptr [rdi+0x04]
        add      rdi, -16
-       add      rdi, rax
+       add      rdi, r8
        movsxd   rsi, esi
        lea      r14, bword ptr [rdi+8*rsi]
-       lea      rsi, bword ptr [rdx+0x08]
-       mov      rdi, qword ptr [rdx]
-       mov      edi, dword ptr [rdi+0x04]
+       add      rdx, 8
+       mov      edi, dword ptr [rax+0x04]
        add      rdi, -16
-       add      rsi, rdi
-       movsxd   rdi, ecx
-       lea      r13, bword ptr [rsi+8*rdi]
+       add      rdi, rdx
+       movsxd   rsi, ecx
+       lea      r13, bword ptr [rdi+8*rsi]
        xor      r12d, r12d
        test     ebx, ebx
-       jle      SHORT G_M43951_IG04
-						;; size=62 bbWeight=1 PerfScore 17.00
+       jle      G_M43951_IG13
+						;; size=63 bbWeight=1 PerfScore 14.75
 G_M43951_IG03:
-       movsxd   rax, r12d
-       mov      qword ptr [rbp-0x30], rax
-       mov      rsi, gword ptr [r14+8*rax]
+       movsxd   rdi, r12d
+       mov      rsi, gword ptr [r14+8*rdi]
+       test     rsi, rsi
+       je       SHORT G_M43951_IG09
+						;; size=12 bbWeight=4 PerfScore 14.00
+G_M43951_IG04:
+       mov      rdi, qword ptr [rsi]
+       cmp      rdi, r15
+       je       SHORT G_M43951_IG09
+						;; size=8 bbWeight=2 PerfScore 6.50
+G_M43951_IG05:
+       mov      rax, 0xD1FFAB1E      ; data for System.Runtime.CompilerServices.CastHelpers:s_table
+       mov      rax, gword ptr [rax]
+       add      rax, 16
+       rorx     rcx, rdi, 32
+       xor      rcx, r15
+       mov      rdx, 0xD1FFAB1E
+       imul     rcx, rdx
+       mov      edx, dword ptr [rax]
+       shrx     rcx, rcx, rdx
+       xor      edx, edx
+       align    [0 bytes for IG06]
+						;; size=49 bbWeight=1 PerfScore 8.25
+G_M43951_IG06:
+       lea      r8d, [rcx+0x01]
+       movsxd   r8, r8d
+       lea      r8, [r8+2*r8]
+       lea      r8, bword ptr [rax+8*r8]
+       mov      r9d, dword ptr [r8]
+       mov      r10, qword ptr [r8+0x08]
+       and      r9d, -2
+       cmp      r10, rdi
+       jne      SHORT G_M43951_IG10
+						;; size=31 bbWeight=16 PerfScore 116.00
+G_M43951_IG07:
+       mov      r10, r15
+       xor      r10, qword ptr [r8+0x10]
+       cmp      r10, 1
+       ja       SHORT G_M43951_IG10
+						;; size=13 bbWeight=8 PerfScore 36.00
+G_M43951_IG08:
+       cmp      r9d, dword ptr [r8]
+       jne      SHORT G_M43951_IG11
+       cmp      r10d, 1
+       jne      SHORT G_M43951_IG11
+						;; size=11 bbWeight=2 PerfScore 10.50
+G_M43951_IG09:
+       jmp      SHORT G_M43951_IG12
+						;; size=2 bbWeight=2 PerfScore 4.00
+G_M43951_IG10:
+       test     r9d, r9d
+       je       SHORT G_M43951_IG11
+       inc      edx
+       add      ecx, edx
+       and      ecx, dword ptr [rax+0x04]
+       cmp      edx, 8
+       jl       SHORT G_M43951_IG06
+						;; size=17 bbWeight=16 PerfScore 96.00
+G_M43951_IG11:
        mov      rdi, r15
-       mov      rcx, 0xD1FFAB1E      ; code for System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-       call     [rcx]System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object
-       mov      rdi, qword ptr [rbp-0x30]
-       lea      rdi, bword ptr [r13+8*rdi]
+       call     System.Runtime.CompilerServices.CastHelpers:ChkCastAny_NoCacheLookup(ulong,System.Object):System.Object
        mov      rsi, rax
+						;; size=11 bbWeight=2 PerfScore 3.00
+G_M43951_IG12:
+       movsxd   rdi, r12d
+       lea      rdi, bword ptr [r13+8*rdi]
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        inc      r12d
        cmp      r12d, ebx
-       jl       SHORT G_M43951_IG03
-						;; size=51 bbWeight=4 PerfScore 50.00
-G_M43951_IG04:
+       jl       G_M43951_IG03
+						;; size=25 bbWeight=4 PerfScore 19.00
+G_M43951_IG13:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 147, prolog size 16, PerfScore 79.00, instruction count 49, allocated bytes for code 147 (MethodHash=e2b95450) for method System.Array:CopyImplCastCheckEachElement(System.Array,int,System.Array,int,int) (FullOpts)
+; Total bytes of code 276, prolog size 19, PerfScore 340.00, instruction count 87, allocated bytes for code 280 (MethodHash=e2b95450) for method System.Array:CopyImplCastCheckEachElement(System.Array,int,System.Array,int,int) (FullOpts)
45 (5.74 % of base) - System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this
 ; Assembly listing for method System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 58 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 50 single block inlinees; 12 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 14,  8.50)     ref  ->  rbx         this class-hnd single-def <System.Xml.Schema.TypedObject>
 ;  V01 arg1         [V01,T01] ( 14,  8.50)     ref  ->  r15         class-hnd single-def <System.Xml.Schema.TypedObject>
-;  V02 loc0         [V02,T04] (  8,  4   )     ref  ->  rax         class-hnd single-def <System.Array>
-;  V03 loc1         [V03,T02] (  9,  4.50)     ref  ->  rdi         class-hnd exact single-def <System.Xml.Schema.XmlAtomicValue[]>
-;  V04 loc2         [V04,T05] (  8,  4   )     ref  ->  rax         class-hnd single-def <System.Array>
-;  V05 loc3         [V05,T03] (  9,  4.50)     ref  ->  rdi         class-hnd exact single-def <System.Xml.Schema.XmlAtomicValue[]>
+;  V02 loc0         [V02,T10] (  7,  3.50)     ref  ->  rax         class-hnd single-def <System.Array>
+;  V03 loc1         [V03,T02] (  8,  4   )     ref  ->  rdi         class-hnd exact single-def <System.Xml.Schema.XmlAtomicValue[]>
+;  V04 loc2         [V04,T11] (  7,  3.50)     ref  ->  rax         class-hnd single-def <System.Array>
+;  V05 loc3         [V05,T03] (  8,  4   )     ref  ->  rdi         class-hnd exact single-def <System.Xml.Schema.XmlAtomicValue[]>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V07 tmp1         [V07    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V08 tmp2         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Xml.Schema.XmlSchemaDatatype>
 ;* V09 tmp3         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V10 tmp4         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V11 tmp5         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V12 tmp6         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V13 tmp7         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V14 tmp8         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Xml.Schema.XmlSchemaDatatype>
 ;* V15 tmp9         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Object>
 ;* V16 tmp10        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Xml.Schema.XmlSchemaDatatype>
 ;* V17 tmp11        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Schema.TypedObject+DecimalStruct>
 ;* V18 tmp12        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Schema.TypedObject+DecimalStruct>
-;  V19 tmp13        [V19,T36] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
+;  V19 tmp13        [V19,T37] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V21 tmp15        [V21,T19] (  3,  3   )     int  ->  rsi         "impAppendStmt"
-;  V22 tmp16        [V22,T23] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V21 tmp15        [V21,T20] (  3,  3   )     int  ->  rsi         "impAppendStmt"
+;  V22 tmp16        [V22,T24] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;* V23 tmp17        [V23    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V24 tmp18        [V24,T06] (  4,  4   )     int  ->  rsi         "Inlining Arg"
+;  V24 tmp18        [V24,T04] (  4,  4   )     int  ->  rsi         "Inlining Arg"
 ;* V25 tmp19        [V25    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V26 tmp20        [V26,T24] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
-;  V27 tmp21        [V27,T37] (  2,  1   )     int  ->  rdi         "Inline return value spill temp"
+;* V26 tmp20        [V26,T43] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V27 tmp21        [V27,T38] (  2,  1   )     int  ->  rcx         "Inline return value spill temp"
 ;* V28 tmp22        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V29 tmp23        [V29,T20] (  3,  3   )     int  ->  rdi         "impAppendStmt"
+;  V29 tmp23        [V29,T21] (  3,  3   )     int  ->  rcx         "impAppendStmt"
 ;  V30 tmp24        [V30,T25] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
 ;* V31 tmp25        [V31    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V32 tmp26        [V32,T07] (  4,  4   )     int  ->  rdi         "Inlining Arg"
+;  V32 tmp26        [V32,T05] (  4,  4   )     int  ->  rcx         "Inlining Arg"
 ;* V33 tmp27        [V33    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V34 tmp28        [V34,T26] (  2,  2   )   byref  ->  rcx         single-def "Inlining Arg"
-;  V35 tmp29        [V35,T38] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
+;* V34 tmp28        [V34,T44] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V35 tmp29        [V35,T39] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
 ;* V36 tmp30        [V36    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V37 tmp31        [V37,T21] (  3,  3   )     int  ->  rsi         "impAppendStmt"
-;  V38 tmp32        [V38,T27] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
+;  V37 tmp31        [V37,T22] (  3,  3   )     int  ->  rsi         "impAppendStmt"
+;  V38 tmp32        [V38,T26] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
 ;* V39 tmp33        [V39    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V40 tmp34        [V40,T08] (  4,  4   )     int  ->  rsi         "Inlining Arg"
+;  V40 tmp34        [V40,T06] (  4,  4   )     int  ->  rsi         "Inlining Arg"
 ;* V41 tmp35        [V41    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V42 tmp36        [V42,T28] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
-;  V43 tmp37        [V43,T39] (  2,  1   )     int  ->  rdi         "Inline return value spill temp"
+;* V42 tmp36        [V42,T45] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V43 tmp37        [V43,T40] (  2,  1   )     int  ->  rcx         "Inline return value spill temp"
 ;* V44 tmp38        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V45 tmp39        [V45,T22] (  3,  3   )     int  ->  rdi         "impAppendStmt"
-;  V46 tmp40        [V46,T29] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
+;  V45 tmp39        [V45,T23] (  3,  3   )     int  ->  rcx         "impAppendStmt"
+;  V46 tmp40        [V46,T27] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
 ;* V47 tmp41        [V47    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V48 tmp42        [V48,T09] (  4,  4   )     int  ->  rdi         "Inlining Arg"
+;  V48 tmp42        [V48,T07] (  4,  4   )     int  ->  rcx         "Inlining Arg"
 ;* V49 tmp43        [V49    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V50 tmp44        [V50,T30] (  2,  2   )   byref  ->  rcx         single-def "Inlining Arg"
-;  V51 tmp45        [V51,T31] (  2,  2   )     int  ->  rax         "Single return block return value"
-;  V52 tmp46        [V52,T12] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V53 tmp47        [V53,T13] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V54 tmp48        [V54,T14] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V55 tmp49        [V55,T15] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V56 tmp50        [V56,T16] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V57 tmp51        [V57,T17] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
-;  V58 cse0         [V58,T32] (  3,  1.50)     ref  ->  rdi         "CSE #01: moderate"
-;  V59 cse1         [V59,T33] (  3,  1.50)     ref  ->  rsi         "CSE #02: moderate"
-;  V60 cse2         [V60,T34] (  3,  1.50)     int  ->  rsi         "CSE #04: moderate"
-;  V61 cse3         [V61,T35] (  3,  1.50)     int  ->  rsi         "CSE #07: moderate"
-;  V62 rat0         [V62,T10] (  5,  3.75)     ref  ->  rdi         "replacement local"
-;  V63 rat1         [V63,T40] (  2,  1   )    long  ->  rsi         "CSE for expectedClsNode"
-;  V64 rat2         [V64,T11] (  5,  3.75)     ref  ->  rdi         "replacement local"
-;  V65 rat3         [V65,T41] (  2,  1   )    long  ->  rsi         "CSE for expectedClsNode"
-;  V66 rat4         [V66,T18] (  3,  3   )     ref  ->  rdi         "virtual vtable call"
+;* V50 tmp44        [V50,T46] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V51 tmp45        [V51,T28] (  2,  2   )     int  ->  rax         "Single return block return value"
+;  V52 tmp46        [V52,T13] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V53 tmp47        [V53,T14] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V54 tmp48        [V54,T15] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V55 tmp49        [V55,T16] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V56 tmp50        [V56,T17] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V57 tmp51        [V57,T18] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V58 cse0         [V58,T12] (  6,  3   )     int  ->  r14         multi-def "CSE #04: moderate"
+;  V59 cse1         [V59,T31] (  3,  1.50)     int  ->  rdi         "CSE #06: moderate"
+;  V60 cse2         [V60,T32] (  3,  1.50)     int  ->  rdi         "CSE #13: moderate"
+;  V61 cse3         [V61,T29] (  3,  1.50)     ref  ->  rdi         "CSE #01: moderate"
+;  V62 cse4         [V62,T30] (  3,  1.50)     ref  ->  rsi         "CSE #02: moderate"
+;  V63 cse5         [V63,T33] (  3,  1.50)     int  ->  rsi         "CSE #07: moderate"
+;  V64 cse6         [V64,T34] (  3,  1.50)     int  ->  rsi         "CSE #14: moderate"
+;  V65 cse7         [V65,T35] (  2,  1   )    long  ->  rdi         "CSE #05: moderate"
+;  V66 cse8         [V66,T36] (  2,  1   )    long  ->  rdi         "CSE #12: moderate"
+;  V67 rat0         [V67,T08] (  5,  3.75)     ref  ->  rdi         "replacement local"
+;  V68 rat1         [V68,T41] (  2,  1   )    long  ->  rsi         "CSE for expectedClsNode"
+;  V69 rat2         [V69,T09] (  5,  3.75)     ref  ->  rdi         "replacement local"
+;  V70 rat3         [V70,T42] (  2,  1   )    long  ->  rsi         "CSE for expectedClsNode"
+;  V71 rat4         [V71,T19] (  3,  3   )     ref  ->  rdi         "virtual vtable call"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M7783_IG01:
        push     rbp
        push     r15
+       push     r14
        push     rbx
-       lea      rbp, [rsp+0x10]
+       push     rax
+       lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
-						;; size=15 bbWeight=1 PerfScore 4.00
+						;; size=18 bbWeight=1 PerfScore 6.00
 G_M7783_IG02:
        mov      edi, dword ptr [rbx+0x28]
        cmp      edi, dword ptr [r15+0x28]
        jne      G_M7783_IG28
 						;; size=13 bbWeight=1 PerfScore 6.00
 G_M7783_IG03:
        mov      rdi, gword ptr [rbx+0x20]
        mov      rsi, gword ptr [r15+0x20]
        cmp      rdi, rsi
        je       SHORT G_M7783_IG05
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x58]
        call     [rax+0x18]System.Xml.Schema.XmlSchemaDatatype:IsComparable(System.Xml.Schema.XmlSchemaDatatype):ubyte:this
        test     eax, eax
        je       G_M7783_IG28
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Xml.Schema.TypedObject:SetDecimal():this
        call     [rax]System.Xml.Schema.TypedObject:SetDecimal():this
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Xml.Schema.TypedObject:SetDecimal():this
        call     [rax]System.Xml.Schema.TypedObject:SetDecimal():this
        mov      rdi, gword ptr [rbx+0x08]
        cmp      byte  ptr [rdi+0x10], 0
        je       SHORT G_M7783_IG05
        mov      rdi, gword ptr [r15+0x08]
        cmp      byte  ptr [rdi+0x10], 0
        je       SHORT G_M7783_IG05
        mov      rdi, rbx
        mov      rsi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Xml.Schema.TypedObject:ListDValueEquals(System.Xml.Schema.TypedObject):ubyte:this
 						;; size=97 bbWeight=0.50 PerfScore 16.62
 G_M7783_IG04:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax]System.Xml.Schema.TypedObject:ListDValueEquals(System.Xml.Schema.TypedObject):ubyte:this
-						;; size=7 bbWeight=0.50 PerfScore 1.75
+						;; size=13 bbWeight=0.50 PerfScore 2.12
 G_M7783_IG05:
        cmp      byte  ptr [rbx+0x2C], 0
        je       SHORT G_M7783_IG07
        cmp      byte  ptr [r15+0x2C], 0
        je       G_M7783_IG20
        mov      rdi, gword ptr [rbx+0x20]
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdx, gword ptr [r15+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x08]System.Xml.Schema.XmlSchemaDatatype:Compare(System.Object,System.Object):int:this
        test     eax, eax
        sete     al
        movzx    rax, al
 						;; size=47 bbWeight=0.50 PerfScore 11.25
 G_M7783_IG06:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=5 bbWeight=0.50 PerfScore 1.25
+						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M7783_IG07:
        cmp      byte  ptr [r15+0x2C], 0
        je       SHORT G_M7783_IG11
        mov      rsi, gword ptr [r15+0x10]
        mov      rdi, 0xD1FFAB1E      ; System.Array
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        mov      rdi, rax
        test     rdi, rdi
        je       SHORT G_M7783_IG10
 						;; size=41 bbWeight=0.50 PerfScore 5.50
 G_M7783_IG08:
        mov      rsi, 0xD1FFAB1E      ; System.Xml.Schema.XmlAtomicValue[]
        cmp      qword ptr [rdi], rsi
        je       SHORT G_M7783_IG10
 						;; size=15 bbWeight=0.25 PerfScore 1.06
 G_M7783_IG09:
        xor      rdi, rdi
 						;; size=2 bbWeight=0.12 PerfScore 0.03
 G_M7783_IG10:
        test     rdi, rdi
        je       SHORT G_M7783_IG13
        cmp      dword ptr [rdi+0x08], 1
        jne      G_M7783_IG28
        mov      rsi, qword ptr [rdi]
-       mov      esi, dword ptr [rsi+0x04]
-       add      esi, -24
+       mov      r14d, dword ptr [rsi+0x04]
+       lea      esi, [r14-0x18]
        shr      esi, 3
        je       G_M7783_IG17
        cmp      esi, 1
        je       G_M7783_IG17
        jmp      G_M7783_IG34
-						;; size=47 bbWeight=0.50 PerfScore 7.12
+						;; size=49 bbWeight=0.50 PerfScore 7.25
 G_M7783_IG11:
        mov      rdi, gword ptr [rbx+0x10]
        mov      rsi, gword ptr [r15+0x10]
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
 						;; size=15 bbWeight=0.50 PerfScore 4.00
 G_M7783_IG12:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+						;; size=14 bbWeight=0.50 PerfScore 2.12
 G_M7783_IG13:
        mov      esi, dword ptr [rax+0x08]
        test     esi, esi
        jl       G_M7783_IG35
        mov      edi, esi
        cmp      edi, 1
        jne      G_M7783_IG28
        mov      rdi, qword ptr [rax]
        mov      edi, dword ptr [rdi+0x04]
-       add      edi, -24
-       shr      edi, 3
+       lea      ecx, [rdi-0x18]
+       shr      ecx, 3
        je       SHORT G_M7783_IG14
-       cmp      edi, 1
+       cmp      ecx, 1
        jne      G_M7783_IG34
-						;; size=45 bbWeight=0.50 PerfScore 5.88
+						;; size=45 bbWeight=0.50 PerfScore 6.00
 G_M7783_IG14:
-       xor      edi, edi
-       mov      rcx, qword ptr [rax]
-       cmp      dword ptr [rcx+0x04], 24
+       xor      ecx, ecx
+       cmp      edi, 24
        jbe      SHORT G_M7783_IG15
-       mov      edi, dword ptr [rax+0x14]
-       neg      edi
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+       mov      ecx, dword ptr [rax+0x14]
+       neg      ecx
+						;; size=12 bbWeight=0.50 PerfScore 1.88
 G_M7783_IG15:
        mov      esi, esi
-       cmp      edi, esi
+       cmp      ecx, esi
        jae      G_M7783_IG33
-       movsxd   rsi, edi
+       movsxd   rsi, ecx
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Array:InternalGetValue(long):System.Object:this
        call     [rax]System.Array:InternalGetValue(long):System.Object:this
        mov      rdi, rax
        mov      rsi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
 						;; size=42 bbWeight=0.50 PerfScore 5.75
 G_M7783_IG16:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+						;; size=14 bbWeight=0.50 PerfScore 2.12
 G_M7783_IG17:
        xor      esi, esi
-       mov      rax, qword ptr [rdi]
-       cmp      dword ptr [rax+0x04], 24
+       cmp      r14d, 24
        jbe      SHORT G_M7783_IG18
        mov      esi, dword ptr [rdi+0x14]
        neg      esi
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+						;; size=13 bbWeight=0.50 PerfScore 1.88
 G_M7783_IG18:
        mov      eax, dword ptr [rdi+0x08]
        cmp      esi, eax
        jae      G_M7783_IG33
        movsxd   rsi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Array:InternalGetValue(long):System.Object:this
        call     [rax]System.Array:InternalGetValue(long):System.Object:this
        mov      rdi, rax
        mov      rsi, gword ptr [rbx+0x10]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
 						;; size=40 bbWeight=0.50 PerfScore 6.50
 G_M7783_IG19:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+						;; size=14 bbWeight=0.50 PerfScore 2.12
 G_M7783_IG20:
        mov      rsi, gword ptr [rbx+0x10]
        mov      rdi, 0xD1FFAB1E      ; System.Array
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        mov      rdi, rax
        test     rdi, rdi
        je       SHORT G_M7783_IG23
 						;; size=34 bbWeight=0.50 PerfScore 3.50
 G_M7783_IG21:
        mov      rsi, 0xD1FFAB1E      ; System.Xml.Schema.XmlAtomicValue[]
        cmp      qword ptr [rdi], rsi
        je       SHORT G_M7783_IG23
 						;; size=15 bbWeight=0.25 PerfScore 1.06
 G_M7783_IG22:
        xor      rdi, rdi
 						;; size=2 bbWeight=0.12 PerfScore 0.03
 G_M7783_IG23:
        test     rdi, rdi
        je       SHORT G_M7783_IG24
        cmp      dword ptr [rdi+0x08], 1
        jne      G_M7783_IG28
        mov      rax, qword ptr [rdi]
-       mov      esi, dword ptr [rax+0x04]
-       add      esi, -24
+       mov      r14d, dword ptr [rax+0x04]
+       lea      esi, [r14-0x18]
        shr      esi, 3
-       je       SHORT G_M7783_IG30
+       je       G_M7783_IG30
        cmp      esi, 1
        je       SHORT G_M7783_IG30
        jmp      G_M7783_IG34
-						;; size=39 bbWeight=0.50 PerfScore 7.12
+						;; size=45 bbWeight=0.50 PerfScore 7.25
 G_M7783_IG24:
        mov      esi, dword ptr [rax+0x08]
        test     esi, esi
        jl       G_M7783_IG35
        mov      edi, esi
        cmp      edi, 1
        jne      SHORT G_M7783_IG28
        mov      rdi, qword ptr [rax]
        mov      edi, dword ptr [rdi+0x04]
-       add      edi, -24
-       shr      edi, 3
+       lea      ecx, [rdi-0x18]
+       shr      ecx, 3
        je       SHORT G_M7783_IG25
-       cmp      edi, 1
+       cmp      ecx, 1
        jne      G_M7783_IG34
-						;; size=41 bbWeight=0.50 PerfScore 5.88
+						;; size=41 bbWeight=0.50 PerfScore 6.00
 G_M7783_IG25:
-       xor      edi, edi
-       mov      rcx, qword ptr [rax]
-       cmp      dword ptr [rcx+0x04], 24
+       xor      ecx, ecx
+       cmp      edi, 24
        jbe      SHORT G_M7783_IG26
-       mov      edi, dword ptr [rax+0x14]
-       neg      edi
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+       mov      ecx, dword ptr [rax+0x14]
+       neg      ecx
+						;; size=12 bbWeight=0.50 PerfScore 1.88
 G_M7783_IG26:
        mov      esi, esi
-       cmp      edi, esi
+       cmp      ecx, esi
        jae      SHORT G_M7783_IG33
-       movsxd   rsi, edi
+       movsxd   rsi, ecx
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Array:InternalGetValue(long):System.Object:this
        call     [rax]System.Array:InternalGetValue(long):System.Object:this
        mov      rdi, rax
        mov      rsi, gword ptr [r15+0x10]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
 						;; size=38 bbWeight=0.50 PerfScore 5.75
 G_M7783_IG27:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+						;; size=14 bbWeight=0.50 PerfScore 2.12
 G_M7783_IG28:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M7783_IG29:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=5 bbWeight=0.50 PerfScore 1.25
+						;; size=11 bbWeight=0.50 PerfScore 1.62
 G_M7783_IG30:
        xor      esi, esi
-       mov      rax, qword ptr [rdi]
-       cmp      dword ptr [rax+0x04], 24
+       cmp      r14d, 24
        jbe      SHORT G_M7783_IG31
        mov      esi, dword ptr [rdi+0x14]
        neg      esi
-						;; size=16 bbWeight=0.50 PerfScore 4.25
+						;; size=13 bbWeight=0.50 PerfScore 1.88
 G_M7783_IG31:
        mov      eax, dword ptr [rdi+0x08]
        cmp      esi, eax
        jae      SHORT G_M7783_IG33
        movsxd   rsi, esi
        mov      rax, 0xD1FFAB1E      ; code for System.Array:InternalGetValue(long):System.Object:this
        call     [rax]System.Array:InternalGetValue(long):System.Object:this
        mov      rdi, rax
        mov      rsi, gword ptr [r15+0x10]
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
 						;; size=36 bbWeight=0.50 PerfScore 6.50
 G_M7783_IG32:
+       add      rsp, 8
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        tail.jmp [rax+0x10]System.Object:Equals(System.Object):ubyte:this
-						;; size=8 bbWeight=0.50 PerfScore 1.75
+						;; size=14 bbWeight=0.50 PerfScore 2.12
 G_M7783_IG33:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowIndexOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowIndexOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M7783_IG34:
        mov      edi, 58
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 G_M7783_IG35:
        call     CORINFO_HELP_OVERFLOW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 784, prolog size 15, PerfScore 133.69, instruction count 232, allocated bytes for code 784 (MethodHash=7608e198) for method System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)
+; Total bytes of code 829, prolog size 18, PerfScore 129.69, instruction count 246, allocated bytes for code 829 (MethodHash=7608e198) for method System.Xml.Schema.TypedObject:Equals(System.Xml.Schema.TypedObject):ubyte:this (FullOpts)

Note: some changes were skipped as they were too large to fit into a comment.

Larger list of diffs: https://gist.github.com/MihuBot/1adba84dbb9a3d5f61ca461625587e45

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 18, 2024

Top method improvements

-22 (-3.69 % of base) - Microsoft.VisualBasic.CompilerServices.Utils:CopyArray(System.Array,System.Array):System.Array
 ; Assembly listing for method Microsoft.VisualBasic.CompilerServices.Utils:CopyArray(System.Array,System.Array):System.Array (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 19 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T02] ( 15, 16   )     ref  ->  rbx         class-hnd single-def <System.Array>
-;  V01 arg1         [V01,T03] ( 12, 14.50)     ref  ->  r15         class-hnd single-def <System.Array>
+;  V00 arg0         [V00,T02] ( 13, 15   )     ref  ->  rbx         class-hnd single-def <System.Array>
+;  V01 arg1         [V01,T03] ( 11, 14   )     ref  ->  r15         class-hnd single-def <System.Array>
 ;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Array>
 ;  V03 loc1         [V03,T09] (  6,  3   )     int  ->  r14        
-;  V04 loc2         [V04,T00] (  6, 20.50)     int  ->  r12        
+;  V04 loc2         [V04,T00] (  6, 20.50)     int  ->  [rbp-0x2C] 
 ;  V05 loc3         [V05,T06] (  3,  5   )     int  ->  r13         single-def
 ;* V06 loc4         [V06    ] (  0,  0   )     int  ->  zero-ref    single-def
-;  V07 loc5         [V07,T04] (  5,  6   )     int  ->  r13         single-def
-;  V08 loc6         [V08,T05] (  5,  6   )     int  ->  r14         single-def
+;  V07 loc5         [V07,T04] (  5,  6   )     int  ->  r14         single-def
+;  V08 loc6         [V08,T05] (  5,  6   )     int  ->  r13         single-def
 ;  V09 loc7         [V09,T08] (  2,  4.50)     int  ->  r12         single-def
-;  V10 loc8         [V10,T01] (  6, 20.50)     int  ->  [rbp-0x2C] 
-;  V11 loc9         [V11,T07] (  3,  5   )     int  ->  [rbp-0x30]  spill-single-def
+;  V10 loc8         [V10,T01] (  6, 20.50)     int  ->  [rbp-0x30] 
+;  V11 loc9         [V11,T07] (  3,  5   )     int  ->  [rbp-0x34]  spill-single-def
 ;# V12 OutArgs      [V12    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V13 tmp1         [V13,T20] (  2,  2   )     int  ->  rdi         "impAppendStmt"
+;  V13 tmp1         [V13,T18] (  2,  2   )     int  ->  rdi         "impAppendStmt"
 ;* V14 tmp2         [V14    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V15 tmp3         [V15,T28] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.ArrayTypeMismatchException>
-;  V16 tmp4         [V16,T23] (  2,  1   )     int  ->  r12        
-;  V17 tmp5         [V17,T29] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidCastException>
+;  V15 tmp3         [V15,T31] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <System.ArrayTypeMismatchException>
+;  V16 tmp4         [V16,T24] (  2,  1   )     int  ->  r12        
+;  V17 tmp5         [V17,T32] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.InvalidCastException>
 ;* V18 tmp6         [V18    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V19 tmp7         [V19,T10] (  3,  3   )     int  ->  rdi         "impAppendStmt"
 ;  V20 tmp8         [V20,T15] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V21 tmp9         [V21,T24] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
+;  V21 tmp9         [V21,T25] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
 ;* V22 tmp10        [V22    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V23 tmp11        [V23,T11] (  3,  3   )     int  ->  rsi         "impAppendStmt"
 ;  V24 tmp12        [V24,T16] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V25 tmp13        [V25,T25] (  2,  1   )     int  ->  r13         "Inline return value spill temp"
+;  V25 tmp13        [V25,T26] (  2,  1   )     int  ->  r13         "Inline return value spill temp"
 ;* V26 tmp14        [V26    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V27 tmp15        [V27,T12] (  3,  3   )     int  ->  r13         "impAppendStmt"
-;  V28 tmp16        [V28,T17] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V29 tmp17        [V29,T26] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
+;* V28 tmp16        [V28,T29] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V29 tmp17        [V29,T27] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
 ;* V30 tmp18        [V30    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V31 tmp19        [V31,T13] (  3,  3   )     int  ->  rsi         "impAppendStmt"
-;  V32 tmp20        [V32,T18] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V33 tmp21        [V33,T27] (  2,  1   )     int  ->  r14         "Inline return value spill temp"
+;  V32 tmp20        [V32,T17] (  2,  2   )   byref  ->  r12         single-def "Inlining Arg"
+;  V33 tmp21        [V33,T28] (  2,  1   )     int  ->  r13         "Inline return value spill temp"
 ;* V34 tmp22        [V34    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V35 tmp23        [V35,T14] (  3,  3   )     int  ->  r14         "impAppendStmt"
-;  V36 tmp24        [V36,T19] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V37 cse0         [V37,T21] (  3,  1.50)     int  ->  rsi         "CSE #02: moderate"
-;  V38 cse1         [V38,T22] (  3,  1.50)     int  ->  r14         "CSE #03: moderate"
-;  TEMP_01                                     int  ->  [rbp-0x34]
+;  V35 tmp23        [V35,T19] (  2,  2   )     int  ->  r13         "impAppendStmt"
+;* V36 tmp24        [V36,T30] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V37 cse0         [V37,T20] (  3,  1.50)     int  ->  r13         "CSE #04: moderate"
+;  V38 cse1         [V38,T21] (  3,  1.50)     int  ->  r13         "CSE #10: moderate"
+;  V39 cse2         [V39,T22] (  3,  1.50)     int  ->  rsi         "CSE #06: moderate"
+;  V40 cse3         [V40,T23] (  3,  1.50)     int  ->  r13         "CSE #11: moderate"
+;  V41 cse4         [V41,T14] (  3,  1.50)    long  ->  r12         "CSE #07: moderate"
+;  TEMP_01                                     int  ->  [rbp-0x38]
 ;
 ; Lcl frame size = 24
 
 G_M17495_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=25 bbWeight=1 PerfScore 7.25
 G_M17495_IG02:
        test     rbx, rbx
        je       G_M17495_IG07
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M17495_IG03:
        mov      edi, dword ptr [rbx+0x08]
        test     edi, edi
        jl       G_M17495_IG12
        mov      r14d, edi
        test     r14d, r14d
        je       G_M17495_IG07
        mov      rdi, qword ptr [r15]
-       mov      edi, dword ptr [rdi+0x04]
-       add      edi, -24
-       shr      edi, 3
+       mov      r13d, dword ptr [rdi+0x04]
+       add      r13d, -24
+       shr      r13d, 3
+       mov      edi, r13d
        mov      esi, 1
        test     edi, edi
        cmove    edi, esi
-       mov      rsi, qword ptr [rbx]
+       mov      r12, qword ptr [rbx]
+       mov      rsi, r12
        mov      esi, dword ptr [rsi+0x04]
        add      esi, -24
        shr      esi, 3
        mov      eax, 1
        test     esi, esi
        cmove    esi, eax
        cmp      edi, esi
        jne      G_M17495_IG11
-       mov      rdi, qword ptr [r15]
-       mov      r13d, dword ptr [rdi+0x04]
-       add      r13d, -24
-       shr      r13d, 3
        mov      edi, 1
        test     r13d, r13d
        cmove    r13d, edi
        sub      r13d, 2
        jo       G_M17495_IG12
-       xor      r12d, r12d
+       xor      eax, eax
        test     r13d, r13d
        jl       SHORT G_M17495_IG05
-						;; size=120 bbWeight=0.50 PerfScore 12.62
+						;; size=113 bbWeight=0.50 PerfScore 10.50
 G_M17495_IG04:
        mov      rdi, r15
-       mov      esi, r12d
-       mov      rax, 0xD1FFAB1E      ; code for System.Array:GetUpperBound(int):int:this
-       call     [rax]System.Array:GetUpperBound(int):int:this
-       mov      dword ptr [rbp-0x34], eax
+       mov      dword ptr [rbp-0x2C], eax
+       mov      esi, eax
+       mov      rcx, 0xD1FFAB1E      ; code for System.Array:GetUpperBound(int):int:this
+       call     [rcx]System.Array:GetUpperBound(int):int:this
+       mov      dword ptr [rbp-0x38], eax
        mov      rdi, rbx
-       mov      esi, r12d
+       mov      esi, dword ptr [rbp-0x2C]
        mov      rcx, 0xD1FFAB1E      ; code for System.Array:GetUpperBound(int):int:this
        call     [rcx]System.Array:GetUpperBound(int):int:this
-       cmp      dword ptr [rbp-0x34], eax
+       cmp      dword ptr [rbp-0x38], eax
        jne      G_M17495_IG10
-       add      r12d, 1
+       mov      esi, dword ptr [rbp-0x2C]
+       add      esi, 1
        jo       G_M17495_IG12
-       cmp      r12d, r13d
+       cmp      esi, r13d
+       mov      eax, esi
        jle      SHORT G_M17495_IG04
-						;; size=63 bbWeight=4 PerfScore 56.00
+						;; size=69 bbWeight=4 PerfScore 68.00
 G_M17495_IG05:
        mov      esi, dword ptr [r15+0x08]
        test     esi, esi
        jl       G_M17495_IG12
        cmp      r14d, esi
        cmovg    r14d, esi
-       mov      rsi, qword ptr [rbx]
-       mov      esi, dword ptr [rsi+0x04]
-       add      esi, -24
-       shr      esi, 3
+       mov      r13d, dword ptr [r12+0x04]
+       add      r13d, -24
+       shr      r13d, 3
+       mov      esi, r13d
+       test     esi, esi
        je       G_M17495_IG09
        cmp      esi, 1
        jle      G_M17495_IG09
-       mov      rsi, qword ptr [rbx]
-       mov      r14d, dword ptr [rsi+0x04]
-       add      r14d, -24
-       shr      r14d, 3
-       mov      esi, 1
-       test     r14d, r14d
-       cmove    r14d, esi
-       sub      r14d, 1
+       sub      r13d, 1
        jo       G_M17495_IG12
-       mov      esi, r14d
+       mov      esi, r13d
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Array:GetLength(int):int:this
        call     [rax]System.Array:GetLength(int):int:this
-       mov      r13d, eax
-       mov      esi, r14d
+       mov      r14d, eax
+       mov      esi, r13d
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Array:GetLength(int):int:this
        call     [rax]System.Array:GetLength(int):int:this
-       mov      r14d, eax
-       test     r14d, r14d
+       mov      r13d, eax
+       test     r13d, r13d
        je       SHORT G_M17495_IG07
-       cmp      r13d, r14d
-       mov      r12d, r13d
-       cmovg    r12d, r14d
+       cmp      r14d, r13d
+       mov      r12d, r14d
+       cmovg    r12d, r13d
        mov      eax, dword ptr [rbx+0x08]
        test     eax, eax
        jl       G_M17495_IG12
        cdq      
-       idiv     edx:eax, r13d
+       idiv     edx:eax, r14d
        sub      eax, 1
        jo       G_M17495_IG12
-       mov      dword ptr [rbp-0x30], eax
+       mov      dword ptr [rbp-0x34], eax
        xor      r9d, r9d
        test     eax, eax
        jl       SHORT G_M17495_IG07
-						;; size=174 bbWeight=0.50 PerfScore 30.00
+						;; size=153 bbWeight=0.50 PerfScore 26.50
 G_M17495_IG06:
        mov      ecx, r9d
-       imul     ecx, r14d
+       imul     ecx, r13d
        jo       G_M17495_IG12
-       mov      dword ptr [rbp-0x2C], r9d
+       mov      dword ptr [rbp-0x30], r9d
        mov      esi, r9d
-       imul     esi, r13d
+       imul     esi, r14d
        jo       G_M17495_IG12
        mov      rdi, rbx
        mov      rdx, r15
        mov      r8d, r12d
        mov      r10, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [r10]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      r9d, dword ptr [rbp-0x2C]
+       mov      r9d, dword ptr [rbp-0x30]
        add      r9d, 1
        jo       G_M17495_IG12
-       mov      eax, dword ptr [rbp-0x30]
+       mov      eax, dword ptr [rbp-0x34]
        cmp      r9d, eax
        jle      SHORT G_M17495_IG06
 						;; size=74 bbWeight=4 PerfScore 64.00
 G_M17495_IG07:
        mov      rax, r15
 						;; size=3 bbWeight=1 PerfScore 0.25
 G_M17495_IG08:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M17495_IG09:
        mov      rdi, rbx
        mov      rsi, r15
        mov      edx, r14d
        mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,System.Array,int)
        call     [rax]System.Array:Copy(System.Array,System.Array,int)
        jmp      SHORT G_M17495_IG07
 						;; size=23 bbWeight=0.50 PerfScore 3.00
 G_M17495_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.ArrayTypeMismatchException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ArrayTypeMismatchException:.ctor():this
        call     [rax]System.ArrayTypeMismatchException:.ctor():this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M17495_IG11:
        mov      rdi, 0xD1FFAB1E      ; System.InvalidCastException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.InvalidCastException:.ctor():this
        call     [rax]System.InvalidCastException:.ctor():this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=42 bbWeight=0 PerfScore 0.00
 G_M17495_IG12:
        call     CORINFO_HELP_OVERFLOW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 596, prolog size 19, PerfScore 178.62, instruction count 161, allocated bytes for code 596 (MethodHash=39a4bba8) for method Microsoft.VisualBasic.CompilerServices.Utils:CopyArray(System.Array,System.Array):System.Array (FullOpts)
+; Total bytes of code 574, prolog size 19, PerfScore 185.00, instruction count 156, allocated bytes for code 574 (MethodHash=39a4bba8) for method Microsoft.VisualBasic.CompilerServices.Utils:CopyArray(System.Array,System.Array):System.Array (FullOpts)
-18 (-2.46 % of base) - Microsoft.VisualBasic.Information:TypeName(System.Object):System.String
 ; Assembly listing for method Microsoft.VisualBasic.Information:TypeName(System.Object):System.String (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 19 single block inlinees; 9 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 9 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T02] (  5,  4   )     ref  ->  rbx         class-hnd single-def <System.Object>
 ;  V01 loc0         [V01,T07] (  3,  2   )     ref  ->  rax         class-hnd <System.String>
 ;  V02 loc1         [V02,T00] ( 27, 13.50)     ref  ->  [rbp-0x30]  class-hnd <System.String>
-;  V03 loc2         [V03,T21] (  2,  1   )   ubyte  ->  r15         must-init single-def
+;  V03 loc2         [V03,T20] (  2,  1   )   ubyte  ->  r15         must-init single-def
 ;  V04 loc3         [V04,T01] ( 12,  6   )     ref  ->  r14         class-hnd <System.Type>
 ;* V05 loc4         [V05    ] (  0,  0   )     int  ->  zero-ref   
-;  V06 loc5         [V06,T16] (  3,  1.50)     int  ->  rsi         single-def
-;  V07 loc6         [V07,T05] (  5,  2.50)     ref  ->  rax         class-hnd single-def <System.Array>
+;  V06 loc5         [V06,T15] (  3,  1.50)     int  ->  rsi         single-def
+;  V07 loc6         [V07,T05] (  4,  2   )     ref  ->  rax         class-hnd single-def <System.Array>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T22] (  2,  1   )     int  ->  rax         "Inline return value spill temp"
+;  V09 tmp1         [V09,T21] (  2,  1   )     int  ->  rax         "Inline return value spill temp"
 ;* V10 tmp2         [V10    ] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
 ;* V11 tmp3         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp4         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.RuntimeType>
 ;* V13 tmp5         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.RuntimeType>
 ;* V14 tmp6         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.RuntimeType[]>
 ;* V15 tmp7         [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Runtime.CompilerServices.TypeHandle>
 ;* V16 tmp8         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.RuntimeType>
 ;* V17 tmp9         [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TypeHandle>
 ;* V18 tmp10        [V18    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V19 tmp11        [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.String>
-;  V20 tmp12        [V20,T15] (  2,  1   )     ref  ->  r12         class-hnd "Inline stloc first use temp" <System.String>
-;  V21 tmp13        [V21,T20] (  2,  1   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.String>
-;* V22 tmp14        [V22,T26] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V23 tmp15        [V23,T27] (  0,  0   )    long  ->  zero-ref    single-def "Inline stloc first use temp"
+;  V20 tmp12        [V20,T14] (  2,  1   )     ref  ->  r12         class-hnd "Inline stloc first use temp" <System.String>
+;  V21 tmp13        [V21,T19] (  2,  1   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.String>
+;* V22 tmp14        [V22,T27] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V23 tmp15        [V23,T28] (  0,  0   )    long  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V24 tmp16        [V24,T03] (  4,  4   )     ref  ->  rax         class-hnd exact single-def "dup spill" <System.String>
 ;* V25 tmp17        [V25    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp18        [V26    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V27 tmp19        [V27,T08] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V28 tmp20        [V28,T12] (  2,  2   )     int  ->  rdx         "Inlining Arg"
-;  V29 tmp21        [V29,T23] (  2,  1   )     int  ->  rax         single-def "Inline return value spill temp"
-;  V30 tmp22        [V30,T24] (  2,  1   )     int  ->  rdi         "Inline return value spill temp"
-;  V31 tmp23        [V31,T17] (  3,  1.50)     int  ->  rdi         single-def "Inline stloc first use temp"
-;  V32 tmp24        [V32,T13] (  2,  2   )     int  ->  rdi         "impAppendStmt"
+;  V28 tmp20        [V28,T11] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;  V29 tmp21        [V29,T22] (  2,  1   )     int  ->  rax         single-def "Inline return value spill temp"
+;  V30 tmp22        [V30,T23] (  2,  1   )     int  ->  rdi         "Inline return value spill temp"
+;  V31 tmp23        [V31,T16] (  3,  1.50)     int  ->  rdi         single-def "Inline stloc first use temp"
+;  V32 tmp24        [V32,T12] (  2,  2   )     int  ->  rdi         "impAppendStmt"
 ;  V33 tmp25        [V33,T09] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V34 tmp26        [V34,T25] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
-;  V35 tmp27        [V35,T18] (  3,  1.50)     int  ->  rsi         single-def "Inline stloc first use temp"
-;  V36 tmp28        [V36,T14] (  2,  2   )     int  ->  rsi         "impAppendStmt"
-;  V37 tmp29        [V37,T10] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
+;  V34 tmp26        [V34,T24] (  2,  1   )     int  ->  rsi         "Inline return value spill temp"
+;  V35 tmp27        [V35,T25] (  2,  1   )     int  ->  rsi         single-def "Inline stloc first use temp"
+;  V36 tmp28        [V36,T13] (  2,  2   )     int  ->  rsi         "impAppendStmt"
+;* V37 tmp29        [V37,T26] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V38 tmp30        [V38    ] (  0,  0   )    long  ->  zero-ref    "field V15.m_asTAddr (fldOffset=0x0)" P-INDEP
 ;* V39 tmp31        [V39    ] (  0,  0   )    long  ->  zero-ref    "field V17.m_asTAddr (fldOffset=0x0)" P-INDEP
 ;* V40 tmp32        [V40    ] (  0,  0   )     int  ->  zero-ref    "index expr"
-;  V41 tmp33        [V41,T11] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V42 cse0         [V42,T19] (  3,  1.50)    long  ->  r12         "CSE #04: moderate"
-;  V43 cse1         [V43,T06] (  5,  2.50)    long  ->  r13         "CSE #02: moderate"
-;  V44 rat0         [V44,T04] (  3,  2.94)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
+;  V41 tmp33        [V41,T10] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V42 cse0         [V42,T17] (  3,  1.50)     int  ->  rsi         "CSE #09: moderate"
+;  V43 cse1         [V43,T18] (  3,  1.50)    long  ->  r12         "CSE #04: moderate"
+;  V44 cse2         [V44,T06] (  5,  2.50)    long  ->  r13         "CSE #02: moderate"
+;  V45 rat0         [V45,T04] (  3,  2.94)     int  ->  rax         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 8
 
 G_M18802_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        mov      rbx, rdi
        xor      r15d, r15d
 						;; size=22 bbWeight=1 PerfScore 8.00
 G_M18802_IG02:
        test     rbx, rbx
        jne      SHORT G_M18802_IG04
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M18802_IG03:
        mov      rax, 0xD1FFAB1E      ; 'Nothing'
        jmp      G_M18802_IG27
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG04:
        mov      rdi, rbx
        call     System.Object:GetType():System.Type:this
        mov      r14, rax
        mov      rdi, r14
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x58]
        call     [rax+0x10]System.Type:IsArrayImpl():ubyte:this
        test     eax, eax
        je       SHORT G_M18802_IG05
        mov      r15d, 1
        mov      rdi, r14
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x68]
        call     [rax+0x08]System.Type:GetElementType():System.Type:this
        mov      r14, rax
 						;; size=50 bbWeight=0.50 PerfScore 8.88
 G_M18802_IG05:
        mov      rdi, r14
        mov      r13, qword ptr [r14]
        mov      r12, qword ptr [r13+0x70]
        call     [r12+0x30]System.Type:get_IsEnum():ubyte:this
        test     eax, eax
        je       SHORT G_M18802_IG07
        mov      rdi, r14
        mov      rax, qword ptr [r13+0x40]
        call     [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
        mov      r12, rax
 						;; size=32 bbWeight=0.50 PerfScore 7.00
 G_M18802_IG06:
        lea      rdi, bword ptr [r12+0x0C]
        mov      edx, dword ptr [r12+0x08]
        mov      esi, 43
        mov      rax, 0xD1FFAB1E      ; code for System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
        call     [rax]System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short],System.PackedSpanHelpers+NopTransform](byref,short,int):int
        mov      esi, eax
        test     esi, esi
        jl       G_M18802_IG22
        add      esi, 1
        jo       G_M18802_IG28
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for System.String:Substring(int):System.String:this
        call     [rax]System.String:Substring(int):System.String:this
        mov      r12, rax
        jmp      G_M18802_IG22
 						;; size=69 bbWeight=0.50 PerfScore 7.25
 G_M18802_IG07:
        mov      rdi, r14
        mov      rax, qword ptr [r13+0x98]
        call     [rax+0x10]System.Type:GetTypeCodeImpl():int:this
        add      eax, -2
        cmp      eax, 16
        ja       G_M18802_IG18
 						;; size=25 bbWeight=0.50 PerfScore 3.38
 G_M18802_IG08:
        mov      eax, eax
        lea      rcx, [reloc @RWD00]
        mov      ecx, dword ptr [rcx+4*rax]
        lea      rdx, G_M18802_IG02
        add      rcx, rdx
        jmp      rcx
 						;; size=24 bbWeight=0.47 PerfScore 2.83
 G_M18802_IG09:
        mov      r12, 0xD1FFAB1E      ; 'String'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG10:
        mov      r12, 0xD1FFAB1E      ; 'Date'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG11:
        mov      r12, 0xD1FFAB1E      ; 'Decimal'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG12:
        mov      r12, 0xD1FFAB1E      ; 'Double'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG13:
        mov      r12, 0xD1FFAB1E      ; 'Single'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG14:
        mov      r12, 0xD1FFAB1E      ; 'Long'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG15:
        mov      r12, 0xD1FFAB1E      ; 'Integer'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG16:
        mov      r12, 0xD1FFAB1E      ; 'Short'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG17:
        mov      r12, 0xD1FFAB1E      ; 'Byte'
        jmp      G_M18802_IG22
 						;; size=15 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG18:
        mov      rdi, r14
        mov      rax, qword ptr [r13+0x40]
        call     [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this
        mov      gword ptr [rbp-0x30], rax
        mov      rdi, r14
        call     [r12+0x20]System.Type:IsCOMObjectImpl():ubyte:this
        test     eax, eax
        mov      r12, gword ptr [rbp-0x30]
        je       G_M18802_IG06
        mov      rdi, r12
        mov      rsi, 0xD1FFAB1E      ; '__ComObject'
        mov      rax, 0xD1FFAB1E      ; code for System.String:CompareOrdinal(System.String,System.String):int
        call     [rax]System.String:CompareOrdinal(System.String,System.String):int
        test     eax, eax
        jne      G_M18802_IG06
        mov      edi, 10
        call     System.String:FastAllocateString(int):System.String
        cmp      byte  ptr [rax], al
        lea      rsi, bword ptr [rax+0x0C]
        mov      rdi, 0xD1FFAB1E
        vmovdqu  xmm0, xmmword ptr [rdi]
        vmovdqu  xmm1, xmmword ptr [rdi+0x04]
        vmovdqu  xmmword ptr [rsi], xmm0
        vmovdqu  xmmword ptr [rsi+0x04], xmm1
        mov      r12, rax
        jmp      G_M18802_IG06
 						;; size=119 bbWeight=0.50 PerfScore 18.00
 G_M18802_IG19:
        mov      r12, 0xD1FFAB1E      ; 'Char'
        jmp      SHORT G_M18802_IG22
 						;; size=12 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG20:
        mov      r12, 0xD1FFAB1E      ; 'Boolean'
        jmp      SHORT G_M18802_IG22
 						;; size=12 bbWeight=0.50 PerfScore 1.12
 G_M18802_IG21:
        mov      r12, 0xD1FFAB1E      ; 'DBNull'
 						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M18802_IG22:
        test     r15d, r15d
        je       G_M18802_IG26
        mov      rsi, rbx
        mov      rdi, 0xD1FFAB1E      ; System.Array
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        mov      rdi, qword ptr [rax]
-       mov      edi, dword ptr [rdi+0x04]
-       add      edi, -24
-       shr      edi, 3
+       mov      esi, dword ptr [rdi+0x04]
+       add      esi, -24
+       shr      esi, 3
+       mov      edi, esi
+       test     edi, edi
        je       SHORT G_M18802_IG23
        cmp      edi, 1
        jne      SHORT G_M18802_IG24
-						;; size=53 bbWeight=0.50 PerfScore 6.00
+						;; size=57 bbWeight=0.50 PerfScore 6.25
 G_M18802_IG23:
        mov      rdi, r12
        mov      rsi, 0xD1FFAB1E      ; '[]'
        mov      rax, 0xD1FFAB1E      ; code for System.String:Concat(System.String,System.String):System.String
        call     [rax]System.String:Concat(System.String,System.String):System.String
        mov      r12, rax
        jmp      SHORT G_M18802_IG25
 						;; size=30 bbWeight=0.50 PerfScore 3.00
 G_M18802_IG24:
-       mov      rsi, qword ptr [rax]
-       mov      esi, dword ptr [rsi+0x04]
-       add      esi, -24
-       shr      esi, 3
-       mov      edi, 1
-       test     esi, esi
-       cmove    esi, edi
        sub      esi, 1
        jo       SHORT G_M18802_IG28
        mov      edi, 44
        call     System.String:.ctor(ushort,int):this
        mov      rdx, rax
        mov      rdi, r12
        mov      rsi, 0xD1FFAB1E      ; '['
        mov      rcx, 0xD1FFAB1E      ; ']'
        mov      rax, 0xD1FFAB1E      ; code for System.String:Concat(System.String,System.String,System.String,System.String):System.String
        call     [rax]System.String:Concat(System.String,System.String,System.String,System.String):System.String
        mov      r12, rax
-						;; size=78 bbWeight=0.50 PerfScore 6.25
+						;; size=56 bbWeight=0.50 PerfScore 3.50
 G_M18802_IG25:
        mov      rdi, r12
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.VisualBasic.Information:OldVBFriendlyNameOfTypeName(System.String):System.String
        call     [rax]Microsoft.VisualBasic.Information:OldVBFriendlyNameOfTypeName(System.String):System.String
        mov      r12, rax
 						;; size=18 bbWeight=0.50 PerfScore 1.88
 G_M18802_IG26:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M18802_IG27:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M18802_IG28:
        call     CORINFO_HELP_OVERFLOW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 RWD00  	dd	G_M18802_IG21 - G_M18802_IG02
        	dd	G_M18802_IG20 - G_M18802_IG02
        	dd	G_M18802_IG19 - G_M18802_IG02
        	dd	G_M18802_IG18 - G_M18802_IG02
        	dd	G_M18802_IG17 - G_M18802_IG02
        	dd	G_M18802_IG16 - G_M18802_IG02
        	dd	G_M18802_IG18 - G_M18802_IG02
        	dd	G_M18802_IG15 - G_M18802_IG02
        	dd	G_M18802_IG18 - G_M18802_IG02
        	dd	G_M18802_IG14 - G_M18802_IG02
        	dd	G_M18802_IG18 - G_M18802_IG02
        	dd	G_M18802_IG13 - G_M18802_IG02
        	dd	G_M18802_IG12 - G_M18802_IG02
        	dd	G_M18802_IG11 - G_M18802_IG02
        	dd	G_M18802_IG10 - G_M18802_IG02
        	dd	G_M18802_IG18 - G_M18802_IG02
        	dd	G_M18802_IG09 - G_M18802_IG02
 
 
-; Total bytes of code 733, prolog size 16, PerfScore 91.71, instruction count 167, allocated bytes for code 733 (MethodHash=0ea9b68d) for method Microsoft.VisualBasic.Information:TypeName(System.Object):System.String (FullOpts)
+; Total bytes of code 715, prolog size 16, PerfScore 89.21, instruction count 162, allocated bytes for code 715 (MethodHash=0ea9b68d) for method Microsoft.VisualBasic.Information:TypeName(System.Object):System.String (FullOpts)
-13 (-2.51 % of base) - System.Composition.TypedParts.Discovery.TypeInspector:AddMetadata(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.Type,System.Object)
 ; Assembly listing for method System.Composition.TypedParts.Discovery.TypeInspector:AddMetadata(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.Type,System.Object) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 19 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 15 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
-;  V01 arg1         [V01,T02] (  6,  4.50)     ref  ->  r15         class-hnd single-def <System.String>
+;  V00 arg0         [V00,T00] (  6,  4.50)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IDictionary`2[System.String,System.Object]>
+;  V01 arg1         [V01,T01] (  6,  4.50)     ref  ->  r15         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T04] (  4,  3   )     ref  ->  r13         class-hnd single-def <System.Type>
 ;  V03 arg3         [V03,T03] (  5,  3.50)     ref  ->  r14         class-hnd single-def <System.Object>
 ;  V04 loc0         [V04    ] (  3,  2   )     ref  ->  [rbp-0x30]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Object>
 ;  V05 loc1         [V05,T07] (  6,  3   )     ref  ->  r12         class-hnd single-def <System.Array>
-;  V06 loc2         [V06,T10] (  4,  2   )     ref  ->  r13         class-hnd single-def <System.Array>
-;  V07 loc3         [V07,T00] ( 14,  7   )     ref  ->  r13         class-hnd single-def <System.Array>
+;  V06 loc2         [V06,T11] (  4,  2   )     ref  ->  r13         class-hnd single-def <System.Array>
+;  V07 loc3         [V07,T02] ( 11,  5.50)     ref  ->  r13         class-hnd single-def <System.Array>
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V09 tmp1         [V09,T11] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Object>
-;  V10 tmp2         [V10,T16] (  2,  1   )     int  ->  rdx         "Inline return value spill temp"
+;  V09 tmp1         [V09,T12] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Object>
+;  V10 tmp2         [V10,T17] (  2,  1   )     int  ->  rdi         "Inline return value spill temp"
 ;* V11 tmp3         [V11    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V12 tmp4         [V12,T08] (  3,  3   )     int  ->  rdx         "impAppendStmt"
-;  V13 tmp5         [V13,T12] (  2,  2   )   byref  ->  rdx         single-def "Inlining Arg"
+;  V12 tmp4         [V12,T08] (  3,  3   )     int  ->  rdi         "impAppendStmt"
+;  V13 tmp5         [V13,T13] (  2,  2   )   byref  ->  rdx         single-def "Inlining Arg"
 ;* V14 tmp6         [V14    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V15 tmp7         [V15,T05] (  4,  4   )     int  ->  rdx         "Inlining Arg"
+;  V15 tmp7         [V15,T05] (  4,  4   )     int  ->  rdi         "Inlining Arg"
 ;* V16 tmp8         [V16    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V17 tmp9         [V17,T13] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V18 tmp10        [V18,T17] (  2,  1   )     int  ->  rdx         "Inline return value spill temp"
+;* V17 tmp9         [V17,T19] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V18 tmp10        [V18,T18] (  2,  1   )     int  ->  rdi         "Inline return value spill temp"
 ;* V19 tmp11        [V19    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;  V20 tmp12        [V20,T09] (  3,  3   )     int  ->  rdx         "impAppendStmt"
-;  V21 tmp13        [V21,T14] (  2,  2   )   byref  ->  rdx         single-def "Inlining Arg"
+;  V20 tmp12        [V20,T09] (  3,  3   )     int  ->  rdi         "impAppendStmt"
+;  V21 tmp13        [V21,T14] (  2,  2   )   byref  ->  r12         single-def "Inlining Arg"
 ;* V22 tmp14        [V22    ] (  0,  0   )    long  ->  zero-ref    "Inline return value spill temp"
-;  V23 tmp15        [V23,T06] (  4,  4   )     int  ->  rdx         "Inlining Arg"
+;  V23 tmp15        [V23,T06] (  4,  4   )     int  ->  rdi         "Inlining Arg"
 ;* V24 tmp16        [V24    ] (  0,  0   )   byref  ->  zero-ref    "Inline stloc first use temp"
-;  V25 tmp17        [V25,T15] (  2,  2   )   byref  ->  rdi         single-def "Inlining Arg"
+;* V25 tmp17        [V25,T20] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V26 cse0         [V26,T15] (  3,  1.50)     int  ->  rdx         "CSE #02: moderate"
+;  V27 cse1         [V27,T16] (  3,  1.50)     int  ->  rdx         "CSE #03: moderate"
+;  V28 cse2         [V28,T10] (  3,  1.50)    long  ->  r12         "CSE #01: moderate"
 ;
 ; Lcl frame size = 8
 
 G_M22168_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        lea      rbp, [rsp+0x30]
        xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      rbx, rdi
        mov      r15, rsi
        mov      r13, rdx
        mov      r14, rcx
 						;; size=34 bbWeight=1 PerfScore 9.75
 G_M22168_IG02:
        lea      rdx, [rbp-0x30]
        mov      rdi, rbx
        mov      rsi, r15
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
        call     [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this
        test     eax, eax
        jne      SHORT G_M22168_IG05
 						;; size=27 bbWeight=1 PerfScore 5.50
 G_M22168_IG03:
        mov      rdi, rbx
        mov      rdx, r14
        mov      rsi, r15
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon):this
        call     [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:Add(System.__Canon,System.__Canon):this
        nop      
 						;; size=23 bbWeight=0.50 PerfScore 2.12
 G_M22168_IG04:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M22168_IG05:
        mov      rsi, gword ptr [rbp-0x30]
        mov      rdi, 0xD1FFAB1E      ; System.Array
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        mov      r12, rax
        test     r12, r12
        je       G_M22168_IG07
        mov      esi, dword ptr [r12+0x08]
        test     esi, esi
        jl       G_M22168_IG15
        inc      esi
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Array:CreateInstance(System.Type,int):System.Array
        call     [rax]System.Array:CreateInstance(System.Type,int):System.Array
        mov      r13, rax
        mov      edx, dword ptr [r12+0x08]
        test     edx, edx
        jl       G_M22168_IG15
        mov      rdi, r12
        mov      rsi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,System.Array,int)
        call     [rax]System.Array:Copy(System.Array,System.Array,int)
        mov      edx, dword ptr [r12+0x08]
        test     edx, edx
        jl       G_M22168_IG15
        mov      rdi, r13
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Array:SetValue(System.Object,int):this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Array:SetValue(System.Object,int):this
        mov      rdi, rbx
        mov      rdx, r13
        mov      rsi, r15
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this
        call     [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this
        nop      
 						;; size=158 bbWeight=0.50 PerfScore 17.25
 G_M22168_IG06:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M22168_IG07:
        mov      rdi, r13
        mov      esi, 2
        mov      rax, 0xD1FFAB1E      ; code for System.Array:CreateInstance(System.Type,int):System.Array
        call     [rax]System.Array:CreateInstance(System.Type,int):System.Array
        mov      r13, rax
        mov      rsi, gword ptr [rbp-0x30]
-       mov      rdx, qword ptr [r13]
+       mov      r12, qword ptr [r13]
+       mov      rdx, r12
        mov      edx, dword ptr [rdx+0x04]
-       add      edx, -24
-       shr      edx, 3
+       lea      edi, [rdx-0x18]
+       shr      edi, 3
        je       SHORT G_M22168_IG08
-       cmp      edx, 1
+       cmp      edi, 1
        jne      G_M22168_IG14
-						;; size=51 bbWeight=0.50 PerfScore 6.00
+						;; size=54 bbWeight=0.50 PerfScore 6.25
 G_M22168_IG08:
-       xor      edx, edx
-       mov      rdi, qword ptr [r13]
-       cmp      dword ptr [rdi+0x04], 24
+       xor      edi, edi
+       cmp      edx, 24
        jbe      SHORT G_M22168_IG09
-       mov      edx, dword ptr [r13+0x14]
-       neg      edx
-						;; size=18 bbWeight=0.50 PerfScore 4.25
+       mov      edi, dword ptr [r13+0x14]
+       neg      edi
+						;; size=13 bbWeight=0.50 PerfScore 1.88
 G_M22168_IG09:
-       mov      edi, dword ptr [r13+0x08]
-       cmp      edx, edi
-       jae      G_M22168_IG13
-       movsxd   rdx, edx
+       mov      edx, dword ptr [r13+0x08]
+       cmp      edi, edx
+       jae      SHORT G_M22168_IG13
+       movsxd   rdx, edi
        mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Array:InternalSetValue(System.Object,long):this
        call     [rax]System.Array:InternalSetValue(System.Object,long):this
-       mov      rdx, qword ptr [r13]
-       mov      edx, dword ptr [rdx+0x04]
-       add      edx, -24
-       shr      edx, 3
+       mov      edx, dword ptr [r12+0x04]
+       lea      edi, [rdx-0x18]
+       shr      edi, 3
        je       SHORT G_M22168_IG10
-       cmp      edx, 1
+       cmp      edi, 1
        jne      SHORT G_M22168_IG14
-						;; size=50 bbWeight=0.50 PerfScore 7.00
+						;; size=44 bbWeight=0.50 PerfScore 6.12
 G_M22168_IG10:
-       mov      edx, 1
-       mov      rdi, qword ptr [r13]
-       cmp      dword ptr [rdi+0x04], 24
+       mov      edi, 1
+       cmp      edx, 24
        jbe      SHORT G_M22168_IG11
-       mov      edx, dword ptr [r13+0x14]
-       neg      edx
-       inc      edx
-						;; size=23 bbWeight=0.50 PerfScore 4.38
+       mov      edi, dword ptr [r13+0x14]
+       neg      edi
+       inc      edi
+						;; size=18 bbWeight=0.50 PerfScore 2.00
 G_M22168_IG11:
-       mov      edi, dword ptr [r13+0x08]
-       cmp      edx, edi
+       mov      edx, dword ptr [r13+0x08]
+       cmp      edi, edx
        jae      SHORT G_M22168_IG13
-       movsxd   rdx, edx
+       movsxd   rdx, edi
        mov      rdi, r13
        mov      rsi, r14
        mov      rax, 0xD1FFAB1E      ; code for System.Array:InternalSetValue(System.Object,long):this
        call     [rax]System.Array:InternalSetValue(System.Object,long):this
        mov      rdi, rbx
        mov      rdx, r13
        mov      rsi, r15
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this
        call     [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:set_Item(System.__Canon,System.__Canon):this
        nop      
 						;; size=52 bbWeight=0.50 PerfScore 5.75
 G_M22168_IG12:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M22168_IG13:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowIndexOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowIndexOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M22168_IG14:
        mov      edi, 58
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentException(int)
        call     [rax]System.ThrowHelper:ThrowArgumentException(int)
        int3     
 						;; size=18 bbWeight=0 PerfScore 0.00
 G_M22168_IG15:
        call     CORINFO_HELP_OVERFLOW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 518, prolog size 22, PerfScore 68.38, instruction count 150, allocated bytes for code 518 (MethodHash=4d95a967) for method System.Composition.TypedParts.Discovery.TypeInspector:AddMetadata(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.Type,System.Object) (FullOpts)
+; Total bytes of code 505, prolog size 22, PerfScore 63.00, instruction count 148, allocated bytes for code 505 (MethodHash=4d95a967) for method System.Composition.TypedParts.Discovery.TypeInspector:AddMetadata(System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String,System.Type,System.Object) (FullOpts)

Note: some changes were skipped as they were too large to fit into a comment.

Larger list of diffs: https://gist.github.com/MihuBot/4f6a2bc13c8d1bb81e412143cc807700

@MihuBot
Copy link
Owner Author

MihuBot commented Jul 18, 2024

@MichalPetryka

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant