MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] xtqqczze/dotnet-runtime/MemoryExtensionsNullCheck #513

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 14 minutes.

Diffs

Diffs ``` Found 291 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 41782944 Total bytes of diff: 41782826 Total bytes of delta: -118 (-0.00 % of base) Total relative delta: -0.47 diff is an improvement. relative diff is an improvement. Top file regressions (bytes): 89 : System.Private.CoreLib.dasm (0.00 % of base) 78 : System.Diagnostics.DiagnosticSource.dasm (0.03 % of base) 45 : System.Security.Cryptography.Pkcs.dasm (0.01 % of base) 6 : System.Net.Security.dasm (0.00 % of base) 6 : System.Reflection.Metadata.dasm (0.00 % of base) 5 : Microsoft.Extensions.FileProviders.Physical.dasm (0.02 % of base) 2 : System.Data.Odbc.dasm (0.00 % of base) 2 : System.Private.Xml.dasm (0.00 % of base) 1 : System.Net.Ping.dasm (0.00 % of base) Top file improvements (bytes): -172 : System.Text.Json.dasm (-0.01 % of base) -96 : System.Numerics.Tensors.dasm (-0.01 % of base) -53 : System.Net.Http.dasm (-0.01 % of base) -28 : System.Security.Cryptography.Cose.dasm (-0.04 % of base) -3 : System.Security.Cryptography.dasm (-0.00 % of base) 14 total files with Code Size differences (5 improved, 9 regressed), 245 unchanged. Top method regressions (bytes): 38 (2.11 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[double](double[]):System.Memory`1[double] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[int](int[]):System.Memory`1[int] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[long](long[]):System.Memory`1[long] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[short](short[]):System.Memory`1[short] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Nullable`1[int]](System.Nullable`1[int][]):System.Memory`1[System.Nullable`1[int]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Memory`1[System.Numerics.Vector`1[float]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[ubyte](ubyte[]):System.Memory`1[ubyte] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[double]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[int]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[long]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[short]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[System.Numerics.Vector`1[float]]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[ubyte]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 7 (0.60 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts) 7 (4.14 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] (FullOpts) 6 (1.17 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SubjectIdentifier:MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts) 5 (6.76 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingWildCardChangeToken:ArrayEquals(ubyte[],ubyte[]):ubyte (FullOpts) 5 (3.88 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] (FullOpts) 3 (1.09 % of base) : System.Net.Security.dasm - System.Net.Security.SslApplicationProtocol:.ctor(ubyte[]):this (FullOpts) 3 (2.48 % of base) : System.Net.Security.dasm - System.Net.Security.SslSessionsCache+SslCredKey:Equals(System.Net.Security.SslSessionsCache+SslCredKey):ubyte:this (FullOpts) 3 (1.72 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteBytes(ubyte[]):this (FullOpts) 3 (0.49 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBuilder:Sign(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Blob,System.Func`2[System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob],ubyte[]]):this (FullOpts) 3 (1.74 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:set_Salt(ubyte[]):this (FullOpts) 2 (2.56 % of base) : System.Security.Cryptography.Pkcs.dasm - Internal.Cryptography.PkcsHelpers:AreByteArraysEqual(ubyte[],ubyte[]):ubyte (FullOpts) 2 (0.99 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcHandle:GetDiagnosticField(byref):short:this (FullOpts) 2 (0.16 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument+d__69:MoveNext():this (FullOpts) 2 (2.30 % of base) : System.Private.Xml.dasm - System.Xml.Schema.DatatypeImplementation:Compare(ubyte[],ubyte[]):int (FullOpts) 1 (0.03 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping+d__76:MoveNext():this (FullOpts) Top method improvements (bytes): -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -33 (-2.79 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -20 (-1.66 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts) -8 (-4.30 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts) -8 (-3.15 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -8 (-2.42 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Span`1[System.Numerics.Vector`1[float]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Span`1[double]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Span`1[int]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Span`1[long]) (FullOpts) -6 (-9.23 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Span`1[short]) (FullOpts) -6 (-6.59 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Span`1[System.Nullable`1[int]]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts) -6 (-9.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Span`1[ubyte]) (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-1.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -6 (-1.25 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -4 (-1.97 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts) -4 (-3.70 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:Encode(System.Formats.Cbor.CborWriter):System.ReadOnlyMemory`1[ubyte] (FullOpts) -4 (-1.67 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromInt32(int):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -4 (-1.27 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromString(System.String):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -3 (-1.58 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Memory`1[System.Numerics.Vector`1[float]]) (FullOpts) -3 (-1.65 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Memory`1[ubyte]) (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) Top method regressions (percentages): 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[double](double[]):System.Memory`1[double] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[int](int[]):System.Memory`1[int] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[long](long[]):System.Memory`1[long] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[short](short[]):System.Memory`1[short] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Nullable`1[int]](System.Nullable`1[int][]):System.Memory`1[System.Nullable`1[int]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Memory`1[System.Numerics.Vector`1[float]] (FullOpts) 31 (52.54 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[ubyte](ubyte[]):System.Memory`1[ubyte] (FullOpts) 5 (6.76 % of base) : Microsoft.Extensions.FileProviders.Physical.dasm - Microsoft.Extensions.FileProviders.Physical.PollingWildCardChangeToken:ArrayEquals(ubyte[],ubyte[]):ubyte (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 11 (6.71 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) 7 (4.14 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] (FullOpts) 5 (3.88 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.__Canon](System.__Canon[]):System.Span`1[System.__Canon] (FullOpts) 2 (2.56 % of base) : System.Security.Cryptography.Pkcs.dasm - Internal.Cryptography.PkcsHelpers:AreByteArraysEqual(ubyte[],ubyte[]):ubyte (FullOpts) 3 (2.48 % of base) : System.Net.Security.dasm - System.Net.Security.SslSessionsCache+SslCredKey:Equals(System.Net.Security.SslSessionsCache+SslCredKey):ubyte:this (FullOpts) 2 (2.30 % of base) : System.Private.Xml.dasm - System.Xml.Schema.DatatypeImplementation:Compare(ubyte[],ubyte[]):int (FullOpts) 38 (2.11 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) 3 (1.74 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.Rfc2898DeriveBytes:set_Salt(ubyte[]):this (FullOpts) 3 (1.72 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.BlobWriter:WriteBytes(ubyte[]):this (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[double]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[int]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[long]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[short]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[System.Numerics.Vector`1[float]]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 13 (1.58 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.Metrics.Measurement`1[ubyte]:ToArray(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Collections.Generic.KeyValuePair`2[System.String,System.Object][] (FullOpts) 6 (1.17 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.SubjectIdentifier:MatchesCertificate(System.Security.Cryptography.X509Certificates.X509Certificate2):ubyte:this (FullOpts) 3 (1.09 % of base) : System.Net.Security.dasm - System.Net.Security.SslApplicationProtocol:.ctor(ubyte[]):this (FullOpts) 2 (0.99 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcHandle:GetDiagnosticField(byref):short:this (FullOpts) 7 (0.60 % of base) : System.Security.Cryptography.dasm - Internal.Cryptography.Helpers:AreSamePublicECParameters(System.Security.Cryptography.ECParameters,System.Security.Cryptography.ECParameters):ubyte (FullOpts) 3 (0.49 % of base) : System.Reflection.Metadata.dasm - System.Reflection.PortableExecutable.PEBuilder:Sign(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Blob,System.Func`2[System.Collections.Generic.IEnumerable`1[System.Reflection.Metadata.Blob],ubyte[]]):this (FullOpts) 2 (0.16 % of base) : System.Text.Json.dasm - System.Text.Json.JsonDocument+d__69:MoveNext():this (FullOpts) 1 (0.03 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping+d__76:MoveNext():this (FullOpts) Top method improvements (percentages): -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -108 (-26.34 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[double](double[]):System.Span`1[double] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[int](int[]):System.Span`1[int] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[long](long[]):System.Span`1[long] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[short](short[]):System.Span`1[short] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Nullable`1[int]](System.Nullable`1[int][]):System.Span`1[System.Nullable`1[int]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][]):System.Span`1[System.Numerics.Vector`1[float]] (FullOpts) -6 (-25.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:AsSpan[ubyte](ubyte[]):System.Span`1[ubyte] (FullOpts) -6 (-9.68 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Span`1[ubyte]) (FullOpts) -6 (-9.23 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Span`1[short]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Span`1[double]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Span`1[int]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Span`1[long]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Span`1[System.Nullable`1[int]]) (FullOpts) -6 (-9.09 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Span`1[System.Numerics.Vector`1[float]]) (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[double]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[int]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[long]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[short]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.__Canon]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Nullable`1[int]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[System.Numerics.Vector`1[float]]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetLengths(System.Span`1[long]):this (FullOpts) -6 (-8.57 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.Tensor`1[ubyte]:System.Numerics.Tensors.IReadOnlyTensor,T>.GetStrides(System.Span`1[long]):this (FullOpts) -6 (-6.59 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Span`1[System.__Canon]) (FullOpts) -8 (-4.30 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[short](short[],System.Memory`1[short]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[double](double[],System.Memory`1[double]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[int](int[],System.Memory`1[int]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[long](long[],System.Memory`1[long]) (FullOpts) -8 (-4.28 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Nullable`1[int]](System.Nullable`1[int][],System.Memory`1[System.Nullable`1[int]]) (FullOpts) -4 (-3.70 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:Encode(System.Formats.Cbor.CborWriter):System.ReadOnlyMemory`1[ubyte] (FullOpts) -8 (-3.15 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(System.ReadOnlySpan`1[ubyte]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[double]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[int]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[long]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[short]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Nullable`1[int]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.Numerics.Vector`1[float]]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -5 (-3.05 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.MemoryConverter`1[ubyte]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) -33 (-2.79 % of base) : System.Net.Http.dasm - System.Net.Http.QPack.QPackEncoder:EncodeValueString(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -8 (-2.42 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromBytes(ubyte[]):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -4 (-1.97 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.__Canon](System.__Canon[],System.Memory`1[System.__Canon]) (FullOpts) -4 (-1.67 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromInt32(int):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -20 (-1.66 % of base) : System.Net.Http.dasm - System.Net.Http.HPack.HPackEncoder:EncodeStringLiterals(System.ReadOnlySpan`1[System.String],ubyte[],System.Text.Encoding,System.Span`1[ubyte],byref):ubyte (FullOpts) -3 (-1.65 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[ubyte](ubyte[],System.Memory`1[ubyte]) (FullOpts) -3 (-1.58 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:CopyTo[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float][],System.Memory`1[System.Numerics.Vector`1[float]]) (FullOpts) -4 (-1.27 % of base) : System.Security.Cryptography.Cose.dasm - System.Security.Cryptography.Cose.CoseHeaderValue:FromString(System.String):System.Security.Cryptography.Cose.CoseHeaderValue (FullOpts) -6 (-1.26 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedBasePoint(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -6 (-1.25 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.EccKeyFormatHelper:WriteUncompressedPublicKey(byref,System.Formats.Asn1.AsnWriter) (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) -1 (-0.06 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.PasswordBasedEncryption:Encrypt(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.SymmetricAlgorithm,ubyte,System.Formats.Asn1.AsnWriter,System.Security.Cryptography.PbeParameters,System.ReadOnlySpan`1[ubyte],ubyte[],System.Span`1[ubyte]):int (FullOpts) 95 total methods with Code Size differences (59 improved, 36 regressed), 255750 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 1 month ago

Top method regressions

38 (2.11 % of base) - System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this ```diff ; Assembly listing for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash: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; 37 single block inlinees; 17 inlinees without PGO data +; 0 inlinees with PGO data; 36 single block inlinees; 18 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T07] ( 11, 8.50) ref -> rbx this class-hnd single-def ; V01 arg1 [V01,T27] ( 5, 3.50) ubyte -> r15 single-def ;* V02 loc0 [V02 ] ( 0, 0 ) struct ( 8) zero-ref single-def ; V03 loc1 [V03,T19] ( 15, 7.50) ref -> r14 class-hnd exact single-def ; V04 loc2 [V04,T37] ( 3, 3.50) ubyte -> r13 ;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ; V06 loc4 [V06,T58] ( 3, 1.50) byref -> rdx single-def ; V07 loc5 [V07,T66] ( 3, 1.50) struct (24) [rbp-0x40] do-not-enreg[SF] must-init ld-addr-op ; V08 loc6 [V08 ] ( 10, 5 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op single-def ; V09 loc7 [V09,T21] ( 4, 6.50) ref -> r12 class-hnd single-def ; V10 loc8 [V10,T20] ( 8, 7.50) ref -> [rbp-0xC8] class-hnd exact spill-single-def ;* V11 loc9 [V11,T77] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg ld-addr-op ; V12 loc10 [V12,T28] ( 3, 5 ) ref -> rbx class-hnd exact single-def ;* V13 loc11 [V13,T85] ( 0, 0 ) int -> zero-ref ; V14 loc12 [V14 ] ( 5, 16 ) struct (16) [rbp-0x60] do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op ; V15 loc13 [V15,T11] ( 4, 8 ) ref -> r13 class-hnd exact ; V16 loc14 [V16,T51] ( 4, 2 ) ref -> rax class-hnd single-def ;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V19 tmp2 [V19,T53] ( 3, 2 ) int -> rdi ; V20 tmp3 [V20,T87] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ; V21 tmp4 [V21,T42] ( 3, 3 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" ; V22 tmp5 [V22,T82] ( 1, 1 ) struct (32) [rbp-0x80] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" ; V23 tmp6 [V23,T15] ( 2, 8 ) ref -> rax class-hnd exact "dup spill" ;* V24 tmp7 [V24 ] ( 0, 0 ) ref -> zero-ref ;* V25 tmp8 [V25 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V26 tmp9 [V26 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V27 tmp10 [V27,T88] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V28 tmp11 [V28,T89] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" ; V29 tmp12 [V29,T83] ( 1, 1 ) struct (32) [rbp-0xA0] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" ;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret single-def "Return value temp for multireg return" ;* V31 tmp14 [V31 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V32 tmp15 [V32 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" ;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ; V34 tmp17 [V34,T92] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" ; V35 tmp18 [V35,T90] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" ; V36 tmp19 [V36,T93] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impImportAndPushBox" ; V37 tmp20 [V37,T91] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ;* V38 tmp21 [V38 ] ( 0, 0 ) long -> zero-ref class-hnd exact "NewObj constructor temp" ;* V39 tmp22 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V40 tmp23 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V41 tmp24 [V41,T43] ( 3, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" ;* V42 tmp25 [V42 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V43 tmp26 [V43,T38] ( 6, 3 ) byref -> r13 "Inline stloc first use temp" ; V44 tmp27 [V44,T40] ( 6, 3 ) int -> rdx "Inline stloc first use temp" ;* V45 tmp28 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" ;* V46 tmp29 [V46 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V47 tmp30 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ;* V48 tmp31 [V48 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" ;* V49 tmp32 [V49 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" ; V50 tmp33 [V50,T67] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp" ;* V51 tmp34 [V51 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp" ;* V52 tmp35 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" ;* V53 tmp36 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ; V54 tmp37 [V54,T54] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" ;* V55 tmp38 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V56 tmp39 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp40 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V58 tmp41 [V58 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V59 tmp42 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V60 tmp43 [V60 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V61 tmp44 [V61,T39] ( 6, 3 ) byref -> r12 "Inline stloc first use temp" ; V62 tmp45 [V62,T41] ( 6, 3 ) int -> rdx "Inline stloc first use temp" ; V63 tmp46 [V63,T30] ( 4, 4 ) byref -> r13 single-def "Inlining Arg" ; V64 tmp47 [V64,T35] ( 7, 3.50) ref -> rdi class-hnd single-def "Inline stloc first use temp" ;* V65 tmp48 [V65 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" ;* V66 tmp49 [V66 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ;* V67 tmp50 [V67 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" ;* V68 tmp51 [V68 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op single-def "Inline stloc first use temp" ; V69 tmp52 [V69,T68] ( 3, 1.50) long -> rdi single-def "Inline stloc first use temp" ; V70 tmp53 [V70,T69] ( 3, 1.50) int -> rsi single-def "Inline stloc first use temp" ;* V71 tmp54 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" ;* V72 tmp55 [V72 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ; V73 tmp56 [V73,T55] ( 2, 2 ) byref -> rdx single-def "Inlining Arg" ;* V74 tmp57 [V74 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V75 tmp58 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V76 tmp59 [V76 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V77 tmp60 [V77,T00] ( 5, 26 ) ref -> rdi class-hnd exact "Inlining Arg" ;* V78 tmp61 [V78 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" ; V79 tmp62 [V79,T05] ( 2, 8 ) int -> rdi "spilling unroll qmark" ;* V80 tmp63 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V81 tmp64 [V81,T16] ( 2, 8 ) ref -> rsi class-hnd "Inlining Arg" ;* V82 tmp65 [V82 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V83 tmp66 [V83,T17] ( 2, 8 ) ref -> rdi class-hnd "Inlining Arg" ;* V84 tmp67 [V84 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -;* V85 tmp68 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" -; V86 tmp69 [V86,T18] ( 2, 8 ) ref -> rdx class-hnd "dup spill" -; V87 tmp70 [V87,T04] ( 6, 12 ) ref -> rdx -;* V88 tmp71 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" -;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" -; V90 tmp73 [V90,T12] ( 4, 8 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" -; V91 tmp74 [V91,T02] ( 4, 16 ) ref -> rdi class-hnd "Inlining Arg" -;* V92 tmp75 [V92 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V93 tmp76 [V93 ] ( 5, 20 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" -;* V94 tmp77 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V95 tmp78 [V95,T31] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" -;* V96 tmp79 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V97 tmp80 [V97 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V98 tmp81 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V99 tmp82 [V99 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -;* V100 tmp83 [V100 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +;* V85 tmp68 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" +;* V86 tmp69 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" +; V87 tmp70 [V87,T18] ( 2, 8 ) ref -> rdx class-hnd "dup spill" +; V88 tmp71 [V88,T04] ( 6, 12 ) ref -> rdx +;* V89 tmp72 [V89 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" +;* V90 tmp73 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" +; V91 tmp74 [V91,T12] ( 4, 8 ) ref -> [rbp-0xD0] class-hnd "Inline return value spill temp" +; V92 tmp75 [V92,T02] ( 4, 16 ) ref -> rdi class-hnd "Inlining Arg" +;* V93 tmp76 [V93 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" +; V94 tmp77 [V94 ] ( 5, 20 ) struct (16) [rbp-0xB0] do-not-enreg[SFA] multireg-arg must-init ld-addr-op "NewObj constructor temp" +;* V95 tmp78 [V95 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" +; V96 tmp79 [V96,T31] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" +;* V97 tmp80 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V98 tmp81 [V98 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +;* V99 tmp82 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V101 tmp84 [V101 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" -;* V102 tmp85 [V102 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V103 tmp86 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V104 tmp87 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V106 tmp89 [V106 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" -; V107 tmp90 [V107,T52] ( 3, 2 ) ref -> [rbp-0xD8] do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP -; V108 tmp91 [V108,T36] ( 7, 3.50) ref -> [rbp-0x50] do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP -; V109 tmp92 [V109,T78] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP -; V110 tmp93 [V110,T70] ( 3, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP -; V111 tmp94 [V111 ] ( 4, 14 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP -; V112 tmp95 [V112 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP -;* V113 tmp96 [V113 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP -;* V114 tmp97 [V114 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP -; V115 tmp98 [V115,T33] ( 2, 4 ) byref -> [rbp-0xE0] spill-single-def "field V25._reference (fldOffset=0x0)" P-INDEP -; V116 tmp99 [V116,T34] ( 2, 4 ) int -> [rbp-0xB4] spill-single-def "field V25._length (fldOffset=0x8)" P-INDEP -;* V117 tmp100 [V117 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP -;* V118 tmp101 [V118 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP -; V119 tmp102 [V119,T59] ( 3, 1.50) byref -> rax "field V30._reference (fldOffset=0x0)" P-INDEP -; V120 tmp103 [V120,T71] ( 3, 1.50) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP -;* V121 tmp104 [V121 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP -;* V122 tmp105 [V122 ] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP -;* V123 tmp106 [V123 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0xc)" P-INDEP -;* V124 tmp107 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP -;* V125 tmp108 [V125 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x8)" P-INDEP -;* V126 tmp109 [V126 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP -;* V127 tmp110 [V127 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP -; V128 tmp111 [V128,T60] ( 3, 1.50) byref -> rsi single-def "field V46._reference (fldOffset=0x0)" P-INDEP -; V129 tmp112 [V129,T72] ( 3, 1.50) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP -;* V130 tmp113 [V130 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-DEP -;* V131 tmp114 [V131 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-DEP -; V132 tmp115 [V132,T74] ( 2, 1 ) byref -> r13 "field V49._reference (fldOffset=0x0)" P-INDEP -; V133 tmp116 [V133,T79] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP -;* V134 tmp117 [V134 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP -;* V135 tmp118 [V135 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP -;* V136 tmp119 [V136 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP -;* V137 tmp120 [V137 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP -; V138 tmp121 [V138,T61] ( 3, 1.50) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP -; V139 tmp122 [V139,T73] ( 3, 1.50) int -> rdx single-def "field V65._length (fldOffset=0x8)" P-INDEP -;* V140 tmp123 [V140 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP -;* V141 tmp124 [V141 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP -; V142 tmp125 [V142,T75] ( 2, 1 ) byref -> r12 "field V68._reference (fldOffset=0x0)" P-INDEP -; V143 tmp126 [V143,T80] ( 2, 1 ) int -> rdx "field V68._length (fldOffset=0x8)" P-INDEP -;* V144 tmp127 [V144 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP -;* V145 tmp128 [V145 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP -; V146 tmp129 [V146,T22] ( 3, 6 ) byref -> rax "field V84._reference (fldOffset=0x0)" P-INDEP -; V147 tmp130 [V147,T25] ( 3, 6 ) int -> rcx "field V84._length (fldOffset=0x8)" P-INDEP -;* V148 tmp131 [V148 ] ( 0, 0 ) ref -> zero-ref "field V92._object (fldOffset=0x0)" P-INDEP -;* V149 tmp132 [V149 ] ( 0, 0 ) int -> zero-ref "field V92._index (fldOffset=0x8)" P-INDEP -;* V150 tmp133 [V150 ] ( 0, 0 ) int -> zero-ref "field V92._length (fldOffset=0xc)" P-INDEP -; V151 tmp134 [V151,T08] ( 3, 10 ) ref -> [rbp-0xB0] do-not-enreg[] "field V93._object (fldOffset=0x0)" P-DEP -; V152 tmp135 [V152,T09] ( 3, 10 ) int -> [rbp-0xA8] do-not-enreg[] "field V93._index (fldOffset=0x8)" P-DEP -; V153 tmp136 [V153,T10] ( 3, 10 ) int -> [rbp-0xA4] do-not-enreg[] "field V93._length (fldOffset=0xc)" P-DEP -; V154 tmp137 [V154,T23] ( 3, 6 ) byref -> rsi "field V94._reference (fldOffset=0x0)" P-INDEP -; V155 tmp138 [V155,T13] ( 4, 8 ) int -> rdi "field V94._length (fldOffset=0x8)" P-INDEP -;* V156 tmp139 [V156 ] ( 0, 0 ) byref -> zero-ref "field V96._reference (fldOffset=0x0)" P-INDEP -;* V157 tmp140 [V157 ] ( 0, 0 ) int -> zero-ref "field V96._length (fldOffset=0x8)" P-INDEP -;* V158 tmp141 [V158 ] ( 0, 0 ) byref -> zero-ref "field V98._reference (fldOffset=0x0)" P-INDEP -;* V159 tmp142 [V159 ] ( 0, 0 ) int -> zero-ref "field V98._length (fldOffset=0x8)" P-INDEP -;* V160 tmp143 [V160 ] ( 0, 0 ) byref -> zero-ref "field V102._reference (fldOffset=0x0)" P-INDEP -;* V161 tmp144 [V161 ] ( 0, 0 ) int -> zero-ref "field V102._length (fldOffset=0x8)" P-INDEP -;* V162 tmp145 [V162 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP -;* V163 tmp146 [V163 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP -;* V164 tmp147 [V164 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP -;* V165 tmp148 [V165 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP -;* V166 tmp149 [V166 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP -;* V167 tmp150 [V167 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP -; V168 tmp151 [V168,T81] ( 2, 1 ) ubyte -> rsi single-def "V07.[000..001)" -;* V169 tmp152 [V169 ] ( 0, 0 ) long -> zero-ref single-def "V106.[000..008)" -; V170 tmp153 [V170,T56] ( 2, 2 ) ref -> rdi single-def "V106.[008..016)" -;* V171 tmp154 [V171 ] ( 0, 0 ) ref -> zero-ref single-def "V106.[016..024)" -;* V172 tmp155 [V172 ] ( 0, 0 ) ubyte -> zero-ref single-def "V106.[028..029)" -; V173 tmp156 [V173,T44] ( 3, 3 ) byref -> rdi single-def "Spilling address for field-by-field copy" -; V174 tmp157 [V174,T94] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V175 tmp158 [V175,T76] ( 2, 1 ) ref -> r13 single-def "Field obj" -; V176 tmp159 [V176,T45] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V177 tmp160 [V177,T46] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V178 tmp161 [V178,T47] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V179 tmp162 [V179,T48] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V180 tmp163 [V180,T49] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V181 tmp164 [V181,T50] ( 3, 3 ) ref -> rdi single-def "argument with side effect" -; V182 tmp165 [V182,T06] ( 3, 12 ) ref -> rdi "arr expr" -; V183 tmp166 [V183,T14] ( 3, 8 ) ref -> rsi "argument with side effect" -; V184 tmp167 [V184,T95] ( 2, 0 ) ref -> rsi "argument with side effect" -; V185 tmp168 [V185,T96] ( 2, 0 ) ref -> rsi "argument with side effect" -; V186 tmp169 [V186,T57] ( 2, 2 ) ref -> rsi single-def "argument with side effect" -; V187 tmp170 [V187,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V188 PSPSym [V188,T84] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym" -; V189 cse0 [V189,T24] ( 3, 6 ) ref -> rdi "CSE #10: moderate" -; V190 cse1 [V190,T26] ( 3, 6 ) int -> rsi "CSE #11: moderate" -; V191 cse2 [V191,T62] ( 3, 1.50) ref -> rdx "CSE #01: conservative" -; V192 cse3 [V192,T63] ( 3, 1.50) ref -> rdi "CSE #02: conservative" -; V193 cse4 [V193,T64] ( 3, 1.50) ref -> rdi "CSE #03: conservative" -; V194 cse5 [V194,T65] ( 3, 1.50) ref -> rdi "CSE #05: conservative" -; V195 cse6 [V195,T29] ( 3, 5 ) int -> [rbp-0xB8] spill-single-def "CSE #12: moderate" -; V196 rat0 [V196,T01] ( 5, 16.50) long -> [rbp-0xC0] "Widened IV V13" -; V197 rat1 [V197,T03] ( 4, 14 ) ref -> r13 "replacement local" -; V198 rat2 [V198,T32] ( 3, 4 ) long -> rdi "CSE for expectedClsNode" -; V199 rat3 [V199,T86] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" +;* V102 tmp85 [V102 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt" +;* V103 tmp86 [V103 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V104 tmp87 [V104 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V105 tmp88 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V106 tmp89 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V107 tmp90 [V107 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "stack allocated ref class temp" +; V108 tmp91 [V108,T52] ( 3, 2 ) ref -> [rbp-0xD8] do-not-enreg[H] EH-live "field V02._name (fldOffset=0x0)" P-INDEP +; V109 tmp92 [V109,T36] ( 7, 3.50) ref -> [rbp-0x50] do-not-enreg[] "field V08._object (fldOffset=0x0)" P-DEP +; V110 tmp93 [V110,T78] ( 2, 1 ) int -> [rbp-0x48] do-not-enreg[] "field V08._index (fldOffset=0x8)" P-DEP +; V111 tmp94 [V111,T70] ( 3, 1.50) int -> [rbp-0x44] do-not-enreg[] "field V08._length (fldOffset=0xc)" P-DEP +; V112 tmp95 [V112 ] ( 4, 14 ) ref -> [rbp-0x60] do-not-enreg[X] addr-exposed "field V14.AttrType (fldOffset=0x0)" P-DEP +; V113 tmp96 [V113 ] ( 3, 10 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V14.AttrValues (fldOffset=0x8)" P-DEP +;* V114 tmp97 [V114 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP +;* V115 tmp98 [V115 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP +; V116 tmp99 [V116,T22] ( 3, 6 ) byref -> [rbp-0xE0] "field V25._reference (fldOffset=0x0)" P-INDEP +; V117 tmp100 [V117,T25] ( 3, 6 ) int -> [rbp-0xB4] "field V25._length (fldOffset=0x8)" P-INDEP +;* V118 tmp101 [V118 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP +;* V119 tmp102 [V119 ] ( 0, 0 ) int -> zero-ref "field V26._length (fldOffset=0x8)" P-INDEP +; V120 tmp103 [V120,T59] ( 3, 1.50) byref -> rax "field V30._reference (fldOffset=0x0)" P-INDEP +; V121 tmp104 [V121,T71] ( 3, 1.50) int -> rdx "field V30._length (fldOffset=0x8)" P-INDEP +;* V122 tmp105 [V122 ] ( 0, 0 ) ref -> zero-ref "field V31._object (fldOffset=0x0)" P-INDEP +;* V123 tmp106 [V123 ] ( 0, 0 ) int -> zero-ref "field V31._index (fldOffset=0x8)" P-INDEP +;* V124 tmp107 [V124 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0xc)" P-INDEP +;* V125 tmp108 [V125 ] ( 0, 0 ) byref -> zero-ref single-def "field V33._reference (fldOffset=0x0)" P-INDEP +;* V126 tmp109 [V126 ] ( 0, 0 ) int -> zero-ref single-def "field V33._length (fldOffset=0x8)" P-INDEP +;* V127 tmp110 [V127 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP +;* V128 tmp111 [V128 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP +; V129 tmp112 [V129,T60] ( 3, 1.50) byref -> rsi single-def "field V46._reference (fldOffset=0x0)" P-INDEP +; V130 tmp113 [V130,T72] ( 3, 1.50) int -> rdx single-def "field V46._length (fldOffset=0x8)" P-INDEP +;* V131 tmp114 [V131 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-DEP +;* V132 tmp115 [V132 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-DEP +; V133 tmp116 [V133,T74] ( 2, 1 ) byref -> r13 "field V49._reference (fldOffset=0x0)" P-INDEP +; V134 tmp117 [V134,T79] ( 2, 1 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP +;* V135 tmp118 [V135 ] ( 0, 0 ) byref -> zero-ref single-def "field V55._reference (fldOffset=0x0)" P-INDEP +;* V136 tmp119 [V136 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP +;* V137 tmp120 [V137 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP +;* V138 tmp121 [V138 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP +; V139 tmp122 [V139,T61] ( 3, 1.50) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP +; V140 tmp123 [V140,T73] ( 3, 1.50) int -> rdx single-def "field V65._length (fldOffset=0x8)" P-INDEP +;* V141 tmp124 [V141 ] ( 0, 0 ) byref -> zero-ref "field V67._reference (fldOffset=0x0)" P-DEP +;* V142 tmp125 [V142 ] ( 0, 0 ) int -> zero-ref "field V67._length (fldOffset=0x8)" P-DEP +; V143 tmp126 [V143,T75] ( 2, 1 ) byref -> r12 "field V68._reference (fldOffset=0x0)" P-INDEP +; V144 tmp127 [V144,T80] ( 2, 1 ) int -> rdx "field V68._length (fldOffset=0x8)" P-INDEP +;* V145 tmp128 [V145 ] ( 0, 0 ) byref -> zero-ref single-def "field V74._reference (fldOffset=0x0)" P-INDEP +;* V146 tmp129 [V146 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP +; V147 tmp130 [V147,T33] ( 2, 4 ) byref -> rax "field V84._reference (fldOffset=0x0)" P-INDEP +; V148 tmp131 [V148,T34] ( 2, 4 ) int -> rcx "field V84._length (fldOffset=0x8)" P-INDEP +;* V149 tmp132 [V149 ] ( 0, 0 ) byref -> zero-ref "field V85._reference (fldOffset=0x0)" P-INDEP +;* V150 tmp133 [V150 ] ( 0, 0 ) int -> zero-ref "field V85._length (fldOffset=0x8)" P-INDEP +;* V151 tmp134 [V151 ] ( 0, 0 ) ref -> zero-ref "field V93._object (fldOffset=0x0)" P-INDEP +;* V152 tmp135 [V152 ] ( 0, 0 ) int -> zero-ref "field V93._index (fldOffset=0x8)" P-INDEP +;* V153 tmp136 [V153 ] ( 0, 0 ) int -> zero-ref "field V93._length (fldOffset=0xc)" P-INDEP +; V154 tmp137 [V154,T08] ( 3, 10 ) ref -> [rbp-0xB0] do-not-enreg[] "field V94._object (fldOffset=0x0)" P-DEP +; V155 tmp138 [V155,T09] ( 3, 10 ) int -> [rbp-0xA8] do-not-enreg[] "field V94._index (fldOffset=0x8)" P-DEP +; V156 tmp139 [V156,T10] ( 3, 10 ) int -> [rbp-0xA4] do-not-enreg[] "field V94._length (fldOffset=0xc)" P-DEP +; V157 tmp140 [V157,T23] ( 3, 6 ) byref -> rsi "field V95._reference (fldOffset=0x0)" P-INDEP +; V158 tmp141 [V158,T13] ( 4, 8 ) int -> rdi "field V95._length (fldOffset=0x8)" P-INDEP +;* V159 tmp142 [V159 ] ( 0, 0 ) byref -> zero-ref "field V97._reference (fldOffset=0x0)" P-INDEP +;* V160 tmp143 [V160 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP +;* V161 tmp144 [V161 ] ( 0, 0 ) byref -> zero-ref "field V99._reference (fldOffset=0x0)" P-INDEP +;* V162 tmp145 [V162 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP +;* V163 tmp146 [V163 ] ( 0, 0 ) byref -> zero-ref "field V103._reference (fldOffset=0x0)" P-INDEP +;* V164 tmp147 [V164 ] ( 0, 0 ) int -> zero-ref "field V103._length (fldOffset=0x8)" P-INDEP +;* V165 tmp148 [V165 ] ( 0, 0 ) byref -> zero-ref "field V104._reference (fldOffset=0x0)" P-INDEP +;* V166 tmp149 [V166 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP +;* V167 tmp150 [V167 ] ( 0, 0 ) byref -> zero-ref "field V105._reference (fldOffset=0x0)" P-INDEP +;* V168 tmp151 [V168 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP +;* V169 tmp152 [V169 ] ( 0, 0 ) byref -> zero-ref "field V106._reference (fldOffset=0x0)" P-INDEP +;* V170 tmp153 [V170 ] ( 0, 0 ) int -> zero-ref "field V106._length (fldOffset=0x8)" P-INDEP +; V171 tmp154 [V171,T81] ( 2, 1 ) ubyte -> rsi single-def "V07.[000..001)" +;* V172 tmp155 [V172 ] ( 0, 0 ) long -> zero-ref single-def "V107.[000..008)" +; V173 tmp156 [V173,T56] ( 2, 2 ) ref -> rdi single-def "V107.[008..016)" +;* V174 tmp157 [V174 ] ( 0, 0 ) ref -> zero-ref single-def "V107.[016..024)" +;* V175 tmp158 [V175 ] ( 0, 0 ) ubyte -> zero-ref single-def "V107.[028..029)" +; V176 tmp159 [V176,T44] ( 3, 3 ) byref -> rdi single-def "Spilling address for field-by-field copy" +; V177 tmp160 [V177,T94] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V178 tmp161 [V178,T76] ( 2, 1 ) ref -> r13 single-def "Field obj" +; V179 tmp162 [V179,T45] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V180 tmp163 [V180,T46] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V181 tmp164 [V181,T47] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V182 tmp165 [V182,T48] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V183 tmp166 [V183,T49] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V184 tmp167 [V184,T50] ( 3, 3 ) ref -> rdi single-def "argument with side effect" +; V185 tmp168 [V185,T06] ( 3, 12 ) ref -> rdi "arr expr" +; V186 tmp169 [V186,T14] ( 3, 8 ) ref -> rsi "argument with side effect" +; V187 tmp170 [V187,T95] ( 2, 0 ) ref -> rsi "argument with side effect" +; V188 tmp171 [V188,T96] ( 2, 0 ) ref -> rsi "argument with side effect" +; V189 tmp172 [V189,T57] ( 2, 2 ) ref -> rsi single-def "argument with side effect" +; V190 tmp173 [V190,T97] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V191 PSPSym [V191,T84] ( 1, 1 ) long -> [rbp-0xF0] do-not-enreg[V] "PSPSym" +; V192 cse0 [V192,T24] ( 3, 6 ) ref -> rdi "CSE #10: moderate" +; V193 cse1 [V193,T26] ( 3, 6 ) int -> rsi "CSE #11: moderate" +; V194 cse2 [V194,T62] ( 3, 1.50) ref -> rdx "CSE #01: conservative" +; V195 cse3 [V195,T63] ( 3, 1.50) ref -> rdi "CSE #02: conservative" +; V196 cse4 [V196,T64] ( 3, 1.50) ref -> rdi "CSE #03: conservative" +; V197 cse5 [V197,T65] ( 3, 1.50) ref -> rdi "CSE #05: conservative" +; V198 cse6 [V198,T29] ( 3, 5 ) int -> [rbp-0xB8] spill-single-def "CSE #12: moderate" +; V199 rat0 [V199,T01] ( 5, 16.50) long -> [rbp-0xC0] "Widened IV V13" +; V200 rat1 [V200,T03] ( 4, 14 ) ref -> r13 "replacement local" +; V201 rat2 [V201,T32] ( 3, 4 ) long -> rdi "CSE for expectedClsNode" +; V202 rat3 [V202,T86] ( 3, 12 ) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 200 G_M28512_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 200 lea rbp, [rsp+0xF0] vxorps xmm8, xmm8, xmm8 vmovdqu32 zmmword ptr [rbp-0xB0], zmm8 vmovdqu32 zmmword ptr [rbp-0x70], zmm8 xor eax, eax mov qword ptr [rbp-0x30], rax mov qword ptr [rbp-0xF0], rsp mov rbx, rdi mov r15d, esi ;; size=69 bbWeight=1 PerfScore 13.83 G_M28512_IG02: mov rdi, gword ptr [rbx+0x10] mov esi, 1 mov rax, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName call [rax]Internal.Cryptography.PkcsHelpers:GetDigestAlgorithm(System.String,ubyte):System.Security.Cryptography.HashAlgorithmName mov gword ptr [rbp-0xD8], rax ;; size=28 bbWeight=1 PerfScore 6.50 G_M28512_IG03: mov rdi, gword ptr [rbp-0xD8] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash call [rax]System.Security.Cryptography.IncrementalHash:CreateHash(System.Security.Cryptography.HashAlgorithmName):System.Security.Cryptography.IncrementalHash mov r14, rax ;; size=22 bbWeight=1 PerfScore 4.50 G_M28512_IG04: cmp gword ptr [rbx+0x40], 0 jne G_M28512_IG08 ;; size=11 bbWeight=1 PerfScore 4.00 G_M28512_IG05: mov rdx, gword ptr [rbx+0x30] cmp byte ptr [rdx+0x22], 0 je G_M28512_IG17 cmp byte ptr [rdx], dl add rdx, 40 lea rdi, bword ptr [rdx+0x30] movzx rsi, byte ptr [rdi] ;; size=28 bbWeight=0.50 PerfScore 5.88 G_M28512_IG06: vmovdqu xmm0, xmmword ptr [rdi] vmovdqu xmmword ptr [rbp-0x40], xmm0 mov rax, qword ptr [rdi+0x10] mov qword ptr [rbp-0x30], rax ;; size=17 bbWeight=0.50 PerfScore 4.00 G_M28512_IG07: test esi, esi je G_M28512_IG17 mov rdi, gword ptr [rbp-0x38] mov rsi, qword ptr [rbp-0x30] mov rdx, gword ptr [rdx+0x28] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte] call [rax]System.Security.Cryptography.Pkcs.SignedCms:GetContent(System.ReadOnlyMemory`1[ubyte],System.String):System.ReadOnlyMemory`1[ubyte] mov gword ptr [rbp-0x50], rax mov qword ptr [rbp-0x48], rdx xor r13, r13 xor edx, edx cmp gword ptr [rbp-0x50], 0 je G_M28512_IG15 mov rdx, gword ptr [rbp-0x50] mov rdi, qword ptr [rdx] test dword ptr [rdi], 0xD1FFAB1E je G_M28512_IG13 mov r13, gword ptr [rbp-0x50] add r13, 16 mov rdi, gword ptr [rbp-0x50] mov edx, dword ptr [rdi+0x08] jmp G_M28512_IG14 ;; size=95 bbWeight=0.50 PerfScore 13.62 G_M28512_IG08: mov r13, gword ptr [rbx+0x40] add r13, 144 xor r12, r12 xor edx, edx mov rdi, gword ptr [r13] test rdi, rdi je SHORT G_M28512_IG11 mov rdx, qword ptr [rdi] test dword ptr [rdx], 0xD1FFAB1E je SHORT G_M28512_IG09 lea r12, bword ptr [rdi+0x10] mov edx, dword ptr [rdi+0x08] jmp SHORT G_M28512_IG10 ;; size=45 bbWeight=0.50 PerfScore 8.25 G_M28512_IG09: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this mov r12, rax ;; size=13 bbWeight=0.50 PerfScore 3.62 G_M28512_IG10: mov edi, dword ptr [r13+0x08] and edi, 0xD1FFAB1E mov esi, dword ptr [r13+0x0C] mov eax, esi add rax, rdi mov edx, edx cmp rax, rdx ja G_M28512_IG53 add r12, rdi mov edx, esi ;; size=35 bbWeight=0.50 PerfScore 3.38 G_M28512_IG11: mov rsi, r12 cmp byte ptr [r14+0x1C], 0 jne G_M28512_IG52 mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M28512_IG12 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp G_M28512_IG19 ;; size=38 bbWeight=0.50 PerfScore 8.25 G_M28512_IG12: mov rdi, gword ptr [r14+0x10] mov rdi, gword ptr [rdi+0x18] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp G_M28512_IG19 ;; size=23 bbWeight=0.50 PerfScore 6.50 G_M28512_IG13: mov rdi, gword ptr [rbp-0x50] mov rax, gword ptr [rbp-0x50] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this mov r13, rax ;; size=21 bbWeight=0.50 PerfScore 4.62 G_M28512_IG14: mov edi, dword ptr [rbp-0x48] and edi, 0xD1FFAB1E mov esi, dword ptr [rbp-0x44] add rsi, rdi mov edx, edx cmp rsi, rdx ja G_M28512_IG53 add r13, rdi mov edx, dword ptr [rbp-0x44] ;; size=32 bbWeight=0.50 PerfScore 2.62 G_M28512_IG15: mov rsi, r13 cmp byte ptr [r14+0x1C], 0 jne G_M28512_IG52 mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M28512_IG16 mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp SHORT G_M28512_IG17 ;; size=35 bbWeight=0.50 PerfScore 8.25 G_M28512_IG16: mov rdi, gword ptr [r14+0x10] mov rdi, gword ptr [rdi+0x18] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this ;; size=18 bbWeight=0.50 PerfScore 5.50 G_M28512_IG17: mov rdi, gword ptr [rbx+0x30] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this cmp dword ptr [rdi], edi call [rax]System.Security.Cryptography.Pkcs.SignedCms:GetHashableContentSpan():System.ReadOnlySpan`1[ubyte]:this cmp byte ptr [r14+0x1C], 0 jne G_M28512_IG52 mov rdi, gword ptr [r14+0x08] test rdi, rdi je SHORT G_M28512_IG18 mov rsi, rax mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this jmp SHORT G_M28512_IG19 ;; size=53 bbWeight=0.50 PerfScore 12.38 G_M28512_IG18: mov rdi, gword ptr [r14+0x10] mov rdi, gword ptr [rdi+0x18] mov rsi, rax mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Security.Cryptography.HashProvider:AppendHashData(System.ReadOnlySpan`1[ubyte]):this ;; size=21 bbWeight=0.50 PerfScore 5.62 G_M28512_IG19: cmp gword ptr [rbx+0x40], 0 jne SHORT G_M28512_IG21 ;; size=7 bbWeight=1 PerfScore 4.00 G_M28512_IG20: cmp gword ptr [rbx+0x18], 0 setne dil movzx rdi, dil jmp SHORT G_M28512_IG22 ;; size=15 bbWeight=0.50 PerfScore 3.12 G_M28512_IG21: mov edi, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M28512_IG22: movzx r13, dil cmp gword ptr [rbx+0x18], 0 je SHORT G_M28512_IG24 ;; size=11 bbWeight=1 PerfScore 4.25 G_M28512_IG23: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this call [rax]System.Security.Cryptography.IncrementalHash:GetHashAndReset():ubyte[]:this mov r12, rax mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.AsnWriter call CORINFO_HELP_NEWSFAST mov dword ptr [rax+0x1C], 2 mov gword ptr [rbp-0xC8], rax test r15b, r15b je SHORT G_M28512_IG26 xor edx, edx xor ecx, ecx lea rsi, [rbp-0xA0] mov rdi, rax mov r8, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this call [r8]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this jmp SHORT G_M28512_IG27 ;; size=81 bbWeight=0.50 PerfScore 7.38 G_M28512_IG24: test r15b, r15b je G_M28512_IG45 xor rax, rax ;; size=11 bbWeight=0.50 PerfScore 0.75 G_M28512_IG25: vzeroupper add rsp, 200 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=21 bbWeight=0.50 PerfScore 2.62 G_M28512_IG26: xor edx, edx xor ecx, ecx lea rsi, [rbp-0x80] mov rdi, rax mov r8, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this call [r8]System.Formats.Asn1.AsnWriter:PushSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this ;; size=24 bbWeight=0.50 PerfScore 2.25 G_M28512_IG27: mov rbx, gword ptr [rbx+0x18] xor eax, eax mov ecx, dword ptr [rbx+0x08] mov dword ptr [rbp-0xB8], ecx test ecx, ecx jle G_M28512_IG43 ;; size=23 bbWeight=0.50 PerfScore 3.25 G_M28512_IG28: mov qword ptr [rbp-0xC0], rax mov rdi, rax shl rdi, 4 ;; size=14 bbWeight=4 PerfScore 7.00 G_M28512_IG29: vmovdqu xmm0, xmmword ptr [rbx+rdi+0x10] vmovdqu xmmword ptr [rbp-0x60], xmm0 ;; size=11 bbWeight=4 PerfScore 20.00 G_M28512_IG30: lea rdi, [rbp-0x60] mov rsi, gword ptr [rbp-0xC8] mov rdx, 0xD1FFAB1E ; code for System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this call [rdx]System.Security.Cryptography.Asn1.AttributeAsn:Encode(System.Formats.Asn1.AsnWriter):this mov rdi, gword ptr [rbp-0x60] test rdi, rdi je G_M28512_IG42 ;; size=36 bbWeight=4 PerfScore 28.00 G_M28512_IG31: cmp dword ptr [rdi+0x08], 20 jne G_M28512_IG42 ;; size=10 bbWeight=1 PerfScore 4.00 G_M28512_IG32: vmovups ymm0, ymmword ptr [rdi+0x0C] vpxor ymm0, ymm0, ymmword ptr [reloc @RWD00] vmovups ymm1, ymmword ptr [rdi+0x14] vpternlogq ymm0, ymm1, ymmword ptr [reloc @RWD32], -10 vptest ymm0, ymm0 sete dil movzx rdi, dil test edi, edi je G_M28512_IG42 mov rdi, gword ptr [rbp-0x60] mov rsi, gword ptr [rbp-0x58] mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject call [rax]System.Security.Cryptography.Pkcs.SignerInfo:MakeAttribute(System.Security.Cryptography.Asn1.AttributeAsn):System.Security.Cryptography.CryptographicAttributeObject mov rdi, gword ptr [rax+0x08] mov rdi, gword ptr [rdi+0x08] mov rsi, rdi mov esi, dword ptr [rsi+0x10] cmp esi, 1 jne G_M28512_IG51 test esi, esi je G_M28512_IG50 mov rdi, gword ptr [rdi+0x08] cmp dword ptr [rdi+0x08], 0 jbe G_M28512_IG54 mov rsi, gword ptr [rdi+0x10] mov r13, rsi test r13, r13 je SHORT G_M28512_IG34 ;; size=127 bbWeight=2 PerfScore 90.00 G_M28512_IG33: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.Pkcs.Pkcs9MessageDigest cmp qword ptr [r13], rdi jne G_M28512_IG49 ;; size=20 bbWeight=1 PerfScore 4.25 G_M28512_IG34: test r12, r12 jne SHORT G_M28512_IG35 xor rax, rax xor ecx, ecx jmp SHORT G_M28512_IG36 ;; size=11 bbWeight=2 PerfScore 7.50 G_M28512_IG35: lea rax, bword ptr [r12+0x10] mov ecx, dword ptr [r12+0x08] - ;; size=10 bbWeight=2 PerfScore 5.00 -G_M28512_IG36: mov bword ptr [rbp-0xE0], rax mov dword ptr [rbp-0xB4], ecx + mov rax, bword ptr [rbp-0xE0] + mov ecx, dword ptr [rbp-0xB4] + ;; size=36 bbWeight=2 PerfScore 13.00 +G_M28512_IG36: mov rdx, gword ptr [r13+0x18] test rdx, rdx - mov rax, bword ptr [rbp-0xE0] - jne SHORT G_M28512_IG39 + jne G_M28512_IG39 mov rdi, gword ptr [r13+0x10] test rdi, rdi jne SHORT G_M28512_IG37 xor rdx, rdx + mov bword ptr [rbp-0xE0], rax + mov dword ptr [rbp-0xB4], ecx jmp SHORT G_M28512_IG38 - ;; size=42 bbWeight=2 PerfScore 23.50 + ;; size=39 bbWeight=2 PerfScore 21.50 G_M28512_IG37: + mov bword ptr [rbp-0xE0], rax + mov dword ptr [rbp-0xB4], ecx mov gword ptr [rbp-0xB0], rdi xor esi, esi mov dword ptr [rbp-0xA8], esi mov edi, dword ptr [rdi+0x08] mov dword ptr [rbp-0xA4], edi mov rdi, gword ptr [rbp-0xB0] mov rsi, qword ptr [rbp-0xA8] mov rdx, 0xD1FFAB1E ; code for Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[] call [rdx]Internal.Cryptography.PkcsHelpers:DecodeOctetString(System.ReadOnlyMemory`1[ubyte]):ubyte[] mov rdx, rax - ;; size=53 bbWeight=2 PerfScore 21.50 + ;; size=66 bbWeight=2 PerfScore 25.50 G_M28512_IG38: lea rdi, bword ptr [r13+0x18] mov gword ptr [rbp-0xD0], rdx mov rsi, rdx call CORINFO_HELP_ASSIGN_REF mov r13, gword ptr [rbp-0xD0] mov rdx, r13 mov rax, bword ptr [rbp-0xE0] - ;; size=36 bbWeight=2 PerfScore 10.00 + mov ecx, dword ptr [rbp-0xB4] + ;; size=42 bbWeight=2 PerfScore 12.00 G_M28512_IG39: test rdx, rdx jne SHORT G_M28512_IG40 xor rsi, rsi xor edi, edi jmp SHORT G_M28512_IG41 ;; size=11 bbWeight=2 PerfScore 7.50 G_M28512_IG40: lea rsi, bword ptr [rdx+0x10] mov edi, dword ptr [rdx+0x08] ;; size=7 bbWeight=2 PerfScore 5.00 G_M28512_IG41: - cmp dword ptr [rbp-0xB4], edi + cmp ecx, edi jne G_M28512_IG48 mov edx, edi mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte call [rax]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte test eax, eax je G_M28512_IG48 xor r13d, r13d - ;; size=40 bbWeight=2 PerfScore 16.50 + ;; size=36 bbWeight=2 PerfScore 13.00 G_M28512_IG42: mov rsi, qword ptr [rbp-0xC0] inc esi mov edx, dword ptr [rbp-0xB8] cmp edx, esi mov rax, rsi jg G_M28512_IG28 ;; size=26 bbWeight=4 PerfScore 15.00 G_M28512_IG43: test r15b, r15b je SHORT G_M28512_IG44 xor esi, esi xor edx, edx mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:PopSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this cmp dword ptr [rax+0x08], 0 jbe G_M28512_IG54 mov byte ptr [rax+0x10], 49 mov rdi, r14 mov rsi, rax mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this jmp SHORT G_M28512_IG45 ;; size=81 bbWeight=0.50 PerfScore 10.50 G_M28512_IG44: xor esi, esi xor edx, edx mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:PopSetOf(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rdi, gword ptr [rbp-0xC8] mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this mov rsi, rax mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this call [rax]System.Security.Cryptography.IncrementalHash:AppendData(ubyte[]):this ;; size=60 bbWeight=0.50 PerfScore 6.38 G_M28512_IG45: test r13d, r13d jne SHORT G_M28512_IG47 mov rax, r14 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M28512_IG46: vzeroupper add rsp, 200 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=21 bbWeight=0.50 PerfScore 2.62 G_M28512_IG47: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov r14, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String call [rax]System.SR:get_Cryptography_Cms_MissingAuthenticatedAttribute():System.String mov rsi, rax mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this mov rdi, r14 call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M28512_IG48: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_BadHashValue():System.String call [rax]System.SR:get_Cryptography_BadHashValue():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M28512_IG49: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28512_IG50: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28512_IG51: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_BadHashValue():System.String call [rax]System.SR:get_Cryptography_BadHashValue():System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=57 bbWeight=0 PerfScore 0.00 G_M28512_IG52: mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object) call [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object) int3 ;; size=16 bbWeight=0 PerfScore 0.00 G_M28512_IG53: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M28512_IG54: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 G_M28512_IG55: push rbp push r15 push r14 push r13 push r12 push rbx push rax mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp lea rbp, [rbp+0xF0] ;; size=25 bbWeight=0 PerfScore 0.00 G_M28512_IG56: mov rbx, rsi mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.HashAlgorithmName call CORINFO_HELP_NEWSFAST mov r15, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String call [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String mov r14, rax lea rdi, bword ptr [r15+0x08] mov rsi, gword ptr [rbp-0xD8] call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.CryptographicException call CORINFO_HELP_NEWSFAST mov r13, rax mov rsi, r15 mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, r13 mov rdx, rbx mov rax, 0xD1FFAB1E ; code for System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this call [rax]System.Security.Cryptography.CryptographicException:.ctor(System.String,System.Exception):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=118 bbWeight=0 PerfScore 0.00 RWD00 dq 002E0032002E0031h, 002E003000340038h, 0035003300310031h, 0031002E00390034h RWD32 dq 002E003000340038h, 0035003300310031h, 0031002E00390034h, 0034002E0039002Eh -; Total bytes of code 1801, prolog size 69, PerfScore 434.08, instruction count 434, allocated bytes for code 1801 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) +; Total bytes of code 1839, prolog size 69, PerfScore 442.58, instruction count 440, allocated bytes for code 1839 (MethodHash=5b9d909f) for method System.Security.Cryptography.Pkcs.SignerInfo:PrepareDigest(ubyte):System.Security.Cryptography.IncrementalHash:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/2d1cee88efc52aa5f010ace32287de75

MihuBot commented 1 month ago

Top method improvements

-108 (-26.34 % of base) - System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this ```diff ; Assembly listing for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):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; 1 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T08] ( 3, 3 ) ref -> r15 this class-hnd single-def -; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rbx single-def +; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def -;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref +; V03 loc0 [V03,T16] ( 2, 2 ) struct (16) [rbp-0x40] do-not-enreg[SR] multireg-ret must-init ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T16] ( 3, 3 ) long -> r13 "spilling helperCall" +; V05 tmp1 [V05,T14] ( 3, 3 ) long -> r13 "spilling helperCall" ;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V07 tmp3 [V07,T00] ( 5, 10 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" +; V07 tmp3 [V07,T02] ( 3, 6 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" ;* V08 tmp4 [V08 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V09 tmp5 [V09,T14] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox" -; V10 tmp6 [V10,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" -;* V11 tmp7 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V12 tmp8 [V12,T11] ( 4, 4.40) long -> r12 "Inlining Arg" -;* V13 tmp9 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V14 tmp10 [V14,T15] ( 4, 3.20) long -> rdi "Inlining Arg" -; V15 tmp11 [V15,T20] ( 3, 2 ) long -> rax "spilling helperCall" -;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP -;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP -;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP -; V19 tmp15 [V19,T18] ( 4, 2.50) ref -> r12 "field V11._object (fldOffset=0x0)" P-INDEP -;* V20 tmp16 [V20,T22] ( 0, 0 ) int -> zero-ref "field V11._index (fldOffset=0x8)" P-INDEP -; V21 tmp17 [V21,T21] ( 3, 2 ) int -> r13 "field V11._length (fldOffset=0xc)" P-INDEP -; V22 cse0 [V22,T10] ( 6, 4.40) long -> r14 "CSE #01: aggressive" -; V23 rat0 [V23,T09] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" -; V24 rat1 [V24,T01] ( 5, 7.50) ref -> rdi "replacement local" -; V25 rat2 [V25,T19] ( 3, 2.50) long -> r13 "CSE for expectedClsNode" -; V26 rat3 [V26,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V27 rat4 [V27,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable" -; V28 rat5 [V28,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable" -; V29 rat6 [V29,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" -; V30 rat7 [V30,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable" -; V31 rat8 [V31,T13] ( 3, 4 ) long -> rdi "runtime lookup" -; V32 rat9 [V32,T07] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" +; V09 tmp5 [V09,T12] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox" +; V10 tmp6 [V10,T10] ( 3, 4 ) long -> r12 "argument with side effect" +; V11 tmp7 [V11,T13] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V12 cse0 [V12,T08] ( 6, 4.40) long -> r14 "CSE #01: aggressive" +; V13 rat0 [V13,T07] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" +; V14 rat1 [V14,T00] ( 5, 7.50) ref -> rdi "replacement local" +; V15 rat2 [V15,T15] ( 3, 2.50) long -> r13 "CSE for expectedClsNode" +; V16 rat3 [V16,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V17 rat4 [V17,T03] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable" +; V18 rat5 [V18,T04] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable" +; V19 rat6 [V19,T11] ( 3, 4 ) long -> rdi "runtime lookup" +; V20 rat7 [V20,T05] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" ; -; Lcl frame size = 8 +; Lcl frame size = 24 G_M62907_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - push rax - lea rbp, [rsp+0x30] + sub rsp, 24 + lea rbp, [rsp+0x40] + xor eax, eax + mov qword ptr [rbp-0x40], rax mov qword ptr [rbp-0x30], rdi mov r15, rdi mov rbx, rsi - ;; size=26 bbWeight=1 PerfScore 9.00 + ;; size=35 bbWeight=1 PerfScore 9.50 G_M62907_IG02: mov r14, qword ptr [r15] mov rdi, r14 mov rsi, qword ptr [rdi+0x30] mov rsi, qword ptr [rsi+0x18] mov r13, qword ptr [rsi+0x10] test r13, r13 - je G_M62907_IG13 + je G_M62907_IG10 ;; size=27 bbWeight=1 PerfScore 9.50 G_M62907_IG03: mov rdi, qword ptr [r14+0x30] mov rdi, qword ptr [rdi+0x18] mov r12, qword ptr [rdi+0x18] test r12, r12 - je G_M62907_IG14 + je G_M62907_IG11 ;; size=21 bbWeight=1 PerfScore 7.25 G_M62907_IG04: mov rsi, gword ptr [rbx+0x50] mov rdi, rsi test rdi, rdi je SHORT G_M62907_IG07 ;; size=12 bbWeight=1 PerfScore 3.50 G_M62907_IG05: cmp qword ptr [rdi], r13 je SHORT G_M62907_IG07 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M62907_IG06: mov rdi, r13 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS mov rdi, rax ;; size=18 bbWeight=0.25 PerfScore 0.94 G_M62907_IG07: mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this - mov r13, rax - mov rdi, qword ptr [r12+0x18] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - je G_M62907_IG15 - ;; size=35 bbWeight=1 PerfScore 11.75 -G_M62907_IG08: - test r13, r13 - jne G_M62907_IG16 - ;; size=9 bbWeight=1 PerfScore 1.25 -G_M62907_IG09: - xor r12, r12 - xor r13d, r13d - ;; size=6 bbWeight=0.50 PerfScore 0.25 -G_M62907_IG10: + mov rsi, rax + mov rdi, r12 + mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] + call [rax]System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] + mov gword ptr [rbp-0x40], rax + mov qword ptr [rbp-0x38], rdx mov rdi, qword ptr [r14+0x30] mov rdi, qword ptr [rdi+0x18] mov rdi, qword ptr [rdi+0x20] test rdi, rdi - je G_M62907_IG20 - ;; size=21 bbWeight=1 PerfScore 7.25 -G_M62907_IG11: + je SHORT G_M62907_IG12 + ;; size=57 bbWeight=1 PerfScore 19.25 +G_M62907_IG08: call CORINFO_HELP_NEWSFAST - mov r14, rax + mov rdx, rax add rbx, 48 - lea rdi, bword ptr [r14+0x08] - mov rsi, r12 - call CORINFO_HELP_ASSIGN_REF - xor edi, edi - mov dword ptr [r14+0x10], edi - mov dword ptr [r14+0x14], r13d + lea rdi, bword ptr [rdx+0x08] + lea rsi, bword ptr [rbp-0x40] + call CORINFO_HELP_ASSIGN_BYREF + movsq lea rdi, bword ptr [rbx+0x20] - mov rsi, r14 + mov rsi, rdx call CORINFO_HELP_CHECKED_ASSIGN_REF nop - ;; size=47 bbWeight=1 PerfScore 7.50 -G_M62907_IG12: - add rsp, 8 + ;; size=40 bbWeight=1 PerfScore 6.50 +G_M62907_IG09: + add rsp, 24 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 -G_M62907_IG13: +G_M62907_IG10: mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r13, rax jmp G_M62907_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70 -G_M62907_IG14: +G_M62907_IG11: mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r12, rax jmp G_M62907_IG04 ;; size=26 bbWeight=0.20 PerfScore 0.75 -G_M62907_IG15: - mov rdi, r12 - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - jmp G_M62907_IG08 - ;; size=26 bbWeight=0.20 PerfScore 0.75 -G_M62907_IG16: - mov rsi, qword ptr [rdi+0x30] - mov rsi, qword ptr [rsi] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M62907_IG18 - ;; size=16 bbWeight=0.50 PerfScore 3.62 -G_M62907_IG17: - cmp qword ptr [r13], rax - je SHORT G_M62907_IG19 - jmp SHORT G_M62907_IG21 - ;; size=8 bbWeight=0.50 PerfScore 3.00 -G_M62907_IG18: - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - jmp SHORT G_M62907_IG17 - ;; size=17 bbWeight=0.10 PerfScore 0.33 -G_M62907_IG19: - mov r12, r13 - mov r13d, dword ptr [r12+0x08] - jmp G_M62907_IG10 - ;; size=13 bbWeight=0.50 PerfScore 2.12 -G_M62907_IG20: +G_M62907_IG12: mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdi, rax - jmp G_M62907_IG11 - ;; size=26 bbWeight=0.20 PerfScore 0.75 -G_M62907_IG21: - mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException() - call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 + jmp SHORT G_M62907_IG08 + ;; size=23 bbWeight=0.20 PerfScore 0.75 -; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) +; Total bytes of code 302, prolog size 29, PerfScore 64.89, instruction count 82, allocated bytes for code 302 (MethodHash=0c610a44) for method System.Text.Json.Serialization.Converters.MemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) ```
-108 (-26.34 % of base) - System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this ```diff ; Assembly listing for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):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; 2 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T08] ( 3, 3 ) ref -> r15 this class-hnd single-def -; V01 arg1 [V01,T02] ( 4, 4 ) byref -> rbx single-def +; V00 this [V00,T06] ( 3, 3 ) ref -> r15 this class-hnd single-def +; V01 arg1 [V01,T01] ( 4, 4 ) byref -> rbx single-def ;* V02 arg2 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def ;* V03 loc0 [V03 ] ( 0, 0 ) struct (16) zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V05 tmp1 [V05,T16] ( 3, 3 ) long -> r13 "spilling helperCall" -;* V06 tmp2 [V06 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" +; V05 tmp1 [V05,T15] ( 3, 3 ) long -> r13 "spilling helperCall" +; V06 tmp2 [V06,T10] ( 3, 4 ) long -> r12 "spilling helperCall" ;* V07 tmp3 [V07 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V09 tmp5 [V09,T00] ( 5, 10 ) ref -> r14 class-hnd exact single-def "Single-def Box Helper" +; V08 tmp4 [V08,T14] ( 2, 4 ) struct (16) [rbp-0x40] do-not-enreg[SR] multireg-ret must-init "spilled call-like call argument" +; V09 tmp5 [V09,T02] ( 3, 6 ) ref -> rdx class-hnd exact single-def "Single-def Box Helper" ;* V10 tmp6 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V11 tmp7 [V11,T14] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox" -; V12 tmp8 [V12,T03] ( 4, 6 ) ref -> r13 class-hnd single-def "Inlining Arg" -;* V13 tmp9 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V14 tmp10 [V14,T11] ( 4, 4.40) long -> r12 "Inlining Arg" -;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" -; V16 tmp12 [V16,T15] ( 4, 3.20) long -> rdi "Inlining Arg" -; V17 tmp13 [V17,T20] ( 3, 2 ) long -> rax "spilling helperCall" -;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -;* V19 tmp15 [V19 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP -;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP -;* V21 tmp17 [V21 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP -;* V22 tmp18 [V22 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._object (fldOffset=0x0)" P-INDEP -;* V23 tmp19 [V23 ] ( 0, 0 ) int -> zero-ref "field V08._index (fldOffset=0x8)" P-INDEP -;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0xc)" P-INDEP -; V25 tmp21 [V25,T18] ( 4, 2.50) ref -> r12 "field V13._object (fldOffset=0x0)" P-INDEP -;* V26 tmp22 [V26,T22] ( 0, 0 ) int -> zero-ref "field V13._index (fldOffset=0x8)" P-INDEP -; V27 tmp23 [V27,T21] ( 3, 2 ) int -> r13 "field V13._length (fldOffset=0xc)" P-INDEP -;* V28 tmp24 [V28 ] ( 0, 0 ) ref -> zero-ref "field V18._object (fldOffset=0x0)" P-INDEP -;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP -;* V30 tmp26 [V30 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0xc)" P-INDEP -; V31 cse0 [V31,T10] ( 6, 4.40) long -> r14 "CSE #01: moderate" -; V32 rat0 [V32,T09] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" -; V33 rat1 [V33,T01] ( 5, 7.50) ref -> rdi "replacement local" -; V34 rat2 [V34,T19] ( 3, 2.50) long -> r13 "CSE for expectedClsNode" -; V35 rat3 [V35,T12] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" -; V36 rat4 [V36,T04] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable" -; V37 rat5 [V37,T05] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable" -; V38 rat6 [V38,T06] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" -; V39 rat7 [V39,T17] ( 3, 2.80) long -> rax "fgMakeTemp is creating a new local variable" -; V40 rat8 [V40,T13] ( 3, 4 ) long -> rdi "runtime lookup" -; V41 rat9 [V41,T07] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" +; V11 tmp7 [V11,T12] ( 2, 4 ) byref -> rbx single-def "impImportAndPushBox" +;* V12 tmp8 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" +;* V13 tmp9 [V13 ] ( 0, 0 ) ref -> zero-ref single-def "field V03._object (fldOffset=0x0)" P-INDEP +;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP +;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP +;* V16 tmp12 [V16 ] ( 0, 0 ) ref -> zero-ref "field V12._object (fldOffset=0x0)" P-INDEP +;* V17 tmp13 [V17 ] ( 0, 0 ) int -> zero-ref "field V12._index (fldOffset=0x8)" P-INDEP +;* V18 tmp14 [V18 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0xc)" P-INDEP +; V19 tmp15 [V19,T13] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V20 cse0 [V20,T08] ( 6, 4.40) long -> r14 "CSE #01: aggressive" +; V21 rat0 [V21,T07] ( 3, 4.50) ref -> rsi "Spilling to split statement for tree" +; V22 rat1 [V22,T00] ( 5, 7.50) ref -> rdi "replacement local" +; V23 rat2 [V23,T16] ( 3, 2.50) long -> r13 "CSE for expectedClsNode" +; V24 rat3 [V24,T09] ( 3, 4.40) long -> rdi "Spilling to split statement for tree" +; V25 rat4 [V25,T03] ( 3, 5.60) long -> r13 "fgMakeTemp is creating a new local variable" +; V26 rat5 [V26,T04] ( 3, 5.60) long -> r12 "fgMakeTemp is creating a new local variable" +; V27 rat6 [V27,T11] ( 3, 4 ) long -> rdi "runtime lookup" +; V28 rat7 [V28,T05] ( 3, 5.60) long -> rdi "fgMakeTemp is creating a new local variable" ; -; Lcl frame size = 8 +; Lcl frame size = 24 G_M47357_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - push rax - lea rbp, [rsp+0x30] + sub rsp, 24 + lea rbp, [rsp+0x40] + xor eax, eax + mov qword ptr [rbp-0x40], rax mov qword ptr [rbp-0x30], rdi mov r15, rdi mov rbx, rsi - ;; size=26 bbWeight=1 PerfScore 9.00 + ;; size=35 bbWeight=1 PerfScore 9.50 G_M47357_IG02: mov r14, qword ptr [r15] mov rdi, r14 mov rsi, qword ptr [rdi+0x30] mov rsi, qword ptr [rsi+0x18] mov r13, qword ptr [rsi+0x10] test r13, r13 - je G_M47357_IG13 + je G_M47357_IG10 ;; size=27 bbWeight=1 PerfScore 9.50 G_M47357_IG03: mov rdi, qword ptr [r14+0x30] mov rdi, qword ptr [rdi+0x18] mov r12, qword ptr [rdi+0x18] test r12, r12 - je G_M47357_IG14 + je G_M47357_IG11 ;; size=21 bbWeight=1 PerfScore 7.25 G_M47357_IG04: mov rsi, gword ptr [rbx+0x50] mov rdi, rsi test rdi, rdi je SHORT G_M47357_IG07 ;; size=12 bbWeight=1 PerfScore 3.50 G_M47357_IG05: cmp qword ptr [rdi], r13 je SHORT G_M47357_IG07 ;; size=5 bbWeight=0.50 PerfScore 2.00 G_M47357_IG06: mov rdi, r13 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS mov rdi, rax ;; size=18 bbWeight=0.25 PerfScore 0.94 G_M47357_IG07: mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this cmp dword ptr [rdi], edi call [rax]System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this - mov r13, rax - mov rdi, qword ptr [r12+0x18] - mov rdi, qword ptr [rdi+0x10] - test rdi, rdi - je G_M47357_IG15 - ;; size=35 bbWeight=1 PerfScore 11.75 -G_M47357_IG08: - test r13, r13 - jne G_M47357_IG16 - ;; size=9 bbWeight=1 PerfScore 1.25 -G_M47357_IG09: - xor r12, r12 - xor r13d, r13d - ;; size=6 bbWeight=0.50 PerfScore 0.25 -G_M47357_IG10: + mov rsi, rax + mov rdi, r12 + mov rax, 0xD1FFAB1E ; code for System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] + call [rax]System.MemoryExtensions:AsMemory[System.__Canon](System.__Canon[]):System.Memory`1[System.__Canon] + mov gword ptr [rbp-0x40], rax + mov qword ptr [rbp-0x38], rdx mov rdi, qword ptr [r14+0x30] mov rdi, qword ptr [rdi+0x18] mov rdi, qword ptr [rdi+0x28] test rdi, rdi - je G_M47357_IG20 - ;; size=21 bbWeight=1 PerfScore 7.25 -G_M47357_IG11: + je SHORT G_M47357_IG12 + ;; size=57 bbWeight=1 PerfScore 19.25 +G_M47357_IG08: call CORINFO_HELP_NEWSFAST - mov r14, rax + mov rdx, rax add rbx, 48 - lea rdi, bword ptr [r14+0x08] - mov rsi, r12 - call CORINFO_HELP_ASSIGN_REF - xor edi, edi - mov dword ptr [r14+0x10], edi - mov dword ptr [r14+0x14], r13d + lea rdi, bword ptr [rdx+0x08] + lea rsi, bword ptr [rbp-0x40] + call CORINFO_HELP_ASSIGN_BYREF + movsq lea rdi, bword ptr [rbx+0x20] - mov rsi, r14 + mov rsi, rdx call CORINFO_HELP_CHECKED_ASSIGN_REF nop - ;; size=47 bbWeight=1 PerfScore 7.50 -G_M47357_IG12: - add rsp, 8 + ;; size=40 bbWeight=1 PerfScore 6.50 +G_M47357_IG09: + add rsp, 24 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 -G_M47357_IG13: +G_M47357_IG10: mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r13, rax jmp G_M47357_IG03 ;; size=23 bbWeight=0.20 PerfScore 0.70 -G_M47357_IG14: +G_M47357_IG11: mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov r12, rax jmp G_M47357_IG04 ;; size=26 bbWeight=0.20 PerfScore 0.75 -G_M47357_IG15: - mov rdi, r12 - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov rdi, rax - jmp G_M47357_IG08 - ;; size=26 bbWeight=0.20 PerfScore 0.75 -G_M47357_IG16: - mov rsi, qword ptr [rdi+0x30] - mov rsi, qword ptr [rsi] - mov rax, qword ptr [rsi+0x10] - test rax, rax - je SHORT G_M47357_IG18 - ;; size=16 bbWeight=0.50 PerfScore 3.62 -G_M47357_IG17: - cmp qword ptr [r13], rax - je SHORT G_M47357_IG19 - jmp SHORT G_M47357_IG21 - ;; size=8 bbWeight=0.50 PerfScore 3.00 -G_M47357_IG18: - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_CLASS - jmp SHORT G_M47357_IG17 - ;; size=17 bbWeight=0.10 PerfScore 0.33 -G_M47357_IG19: - mov r12, r13 - mov r13d, dword ptr [r12+0x08] - jmp G_M47357_IG10 - ;; size=13 bbWeight=0.50 PerfScore 2.12 -G_M47357_IG20: +G_M47357_IG12: mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_CLASS mov rdi, rax - jmp G_M47357_IG11 - ;; size=26 bbWeight=0.20 PerfScore 0.75 -G_M47357_IG21: - mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArrayTypeMismatchException() - call [rax]System.ThrowHelper:ThrowArrayTypeMismatchException() - int3 - ;; size=13 bbWeight=0 PerfScore 0.00 + jmp SHORT G_M47357_IG08 + ;; size=23 bbWeight=0.20 PerfScore 0.75 -; Total bytes of code 410, prolog size 20, PerfScore 76.46, instruction count 107, allocated bytes for code 410 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) +; Total bytes of code 302, prolog size 29, PerfScore 64.89, instruction count 82, allocated bytes for code 302 (MethodHash=c9ab4702) for method System.Text.Json.Serialization.Converters.ReadOnlyMemoryConverter`1[System.__Canon]:ConvertCollection(byref,System.Text.Json.JsonSerializerOptions):this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/9e604cc6895aba1d5a43d27add98a67c

MihuBot commented 1 month ago

@xtqqczze