MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [EgorBo] Fix PHI non-null pattern #477

Open MihuBot opened 2 weeks ago

MihuBot commented 2 weeks ago

Job completed in 14 minutes. https://github.com/dotnet/runtime/pull/104493

Diffs

Diffs ``` Found 288 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 41563833 Total bytes of diff: 41562544 Total bytes of delta: -1289 (-0.00 % of base) Total relative delta: -2.38 diff is an improvement. relative diff is an improvement. Top file regressions (bytes): 2 : System.Linq.Expressions.dasm (0.00 % of base) Top file improvements (bytes): -332 : System.Linq.dasm (-0.03 % of base) -260 : System.Security.Cryptography.dasm (-0.02 % of base) -217 : System.Private.CoreLib.dasm (-0.00 % of base) -80 : System.Private.Xml.dasm (-0.00 % of base) -66 : ILCompiler.Reflection.ReadyToRun.dasm (-0.03 % of base) -43 : System.ComponentModel.TypeConverter.dasm (-0.01 % of base) -40 : System.Net.Ping.dasm (-0.08 % of base) -37 : System.Net.Http.dasm (-0.00 % of base) -30 : Microsoft.Extensions.Http.dasm (-0.04 % of base) -24 : System.Data.Common.dasm (-0.00 % of base) -23 : System.Text.Json.dasm (-0.00 % of base) -19 : System.DirectoryServices.Protocols.dasm (-0.01 % of base) -18 : System.Runtime.Numerics.dasm (-0.02 % of base) -17 : System.Private.DataContractSerialization.dasm (-0.00 % of base) -12 : runincontext.dasm (-0.08 % of base) -12 : Microsoft.VisualBasic.Core.dasm (-0.00 % of base) -10 : System.Text.RegularExpressions.dasm (-0.00 % of base) -9 : System.Configuration.ConfigurationManager.dasm (-0.00 % of base) -7 : Microsoft.CSharp.dasm (-0.00 % of base) -5 : System.Net.Primitives.dasm (-0.01 % of base) -5 : System.Net.HttpListener.dasm (-0.00 % of base) -5 : System.Net.Mail.dasm (-0.00 % of base) -5 : Microsoft.Extensions.DependencyModel.dasm (-0.01 % of base) -5 : System.IO.Packaging.dasm (-0.01 % of base) -5 : Microsoft.Extensions.Configuration.FileExtensions.dasm (-0.10 % of base) -3 : System.Diagnostics.Process.dasm (-0.00 % of base) -2 : System.Formats.Tar.dasm (-0.00 % of base) 28 total files with Code Size differences (27 improved, 1 regressed), 231 unchanged. Top method regressions (bytes): 11 (1.31 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts) 7 (0.18 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts) Top method improvements (bytes): -74 (-9.01 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) -74 (-8.79 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) -68 (-4.08 % of base) : System.Private.CoreLib.dasm - System.IO.File+d__101:MoveNext():this (FullOpts) -50 (-10.66 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition:GetSlotState(ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable,ushort):System.String:this (FullOpts) -47 (-13.35 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.LiteHashProvider:CreateKmac(System.String,System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],ubyte):System.Security.Cryptography.LiteKmac (FullOpts) -40 (-8.62 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.UnixCommandLinePing:GetPingUtilityPath(ubyte):System.String (FullOpts) -40 (-1.84 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:Decode(System.ReadOnlySpan`1[ubyte]):this (FullOpts) -39 (-7.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.GlobalizationMode:LoadAppLocalIcuCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts) -27 (-1.88 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:WriteLiteralHeader(System.String,System.ReadOnlySpan`1[System.String],System.Text.Encoding,byref):this (FullOpts) -25 (-0.84 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.DependencyInjection.SocketsHttpHandlerBuilderExtensions+SocketsHttpHandlerConfiguration:PrintMembers(System.Text.StringBuilder):ubyte:this (FullOpts) -25 (-0.96 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:VerifyX509Signature(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.X509Certificates.PublicKey,System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn):ubyte (FullOpts) -24 (-1.06 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[double,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[int,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[long,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[short,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.20 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Nullable`1[int],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[ubyte,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-8.68 % of base) : System.Text.Json.dasm - System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NodeWrongType(System.ReadOnlySpan`1[System.String]) (FullOpts) -19 (-1.94 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:InternalConnectToServer():int:this (FullOpts) -17 (-4.75 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.SchemaExporter:IsSpecialXmlType(System.Type,byref,byref,byref):ubyte (FullOpts) -16 (-3.30 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.IServiceProvider,System.Type,System.Type[],System.Object[]):System.Object:this (FullOpts) -15 (-1.77 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts) -12 (-5.04 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlString:op_Explicit(System.Data.SqlTypes.SqlBoolean):System.Data.SqlTypes.SqlString (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts) -11 (-2.74 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts) -11 (-1.74 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncodeToBytes(ubyte[],int,int):ubyte[] (FullOpts) -11 (-2.78 % of base) : System.Private.CoreLib.dasm - System.String:Concat(System.ReadOnlySpan`1[System.String]):System.String (FullOpts) -11 (-2.17 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String (FullOpts) -10 (-1.04 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Strings:GetFormatString(int,int,int,int,int):System.String (FullOpts) -10 (-2.43 % of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:StripSecondsFromPattern(System.String):System.String (FullOpts) -10 (-0.28 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts) -10 (-0.34 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ScanLiteral(int):int:this (FullOpts) -10 (-0.22 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+d__185:MoveNext():this (FullOpts) -9 (-2.12 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.CultureInfoConverter:GetStandardValues(System.ComponentModel.ITypeDescriptorContext):System.ComponentModel.TypeConverter+StandardValuesCollection:this (FullOpts) -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ResetMethodValue():System.Reflection.MethodInfo:this (FullOpts) -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ShouldSerializeMethodValue():System.Reflection.MethodInfo:this (FullOpts) -9 (-2.18 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (FullOpts) -9 (-2.91 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.UInt128):System.Numerics.BigInteger (FullOpts) -7 (-0.37 % of base) : runincontext.dasm - TestRunner:ExecuteAndUnload(System.Collections.Generic.List`1[System.WeakReference],byref,byref):int:this (FullOpts) -6 (-0.26 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:ParseInstanceMethodEntrypoints(ubyte[]):this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts) -5 (-1.82 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.SignatureDecoder:EmitSignatureBinaryFrom(System.Text.StringBuilder,int):this (FullOpts) -5 (-0.14 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.x86.InfoHdrSmall:ToString():System.String:this (FullOpts) -5 (-2.65 % of base) : System.Private.CoreLib.dasm - Interop+Sys:GetUnixVersion():System.String (FullOpts) -5 (-0.24 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendType(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this (FullOpts) -5 (-0.66 % of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this (FullOpts) -5 (-0.12 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:AddRuntimeSpecificAssetGroups(System.String,System.Collections.Generic.IEnumerable`1[Microsoft.Extensions.DependencyModel.RuntimeAssetGroup],ubyte,System.Text.Json.Utf8JsonWriter):ubyte (FullOpts) -5 (-0.64 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:ToString():System.String:this (FullOpts) -5 (-0.45 % of base) : runincontext.dasm - RunInContext:Main(System.String[]):int (FullOpts) -5 (-0.14 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.MgmtConfigurationRecord:SaveAs(System.String,int,ubyte):this (FullOpts) -5 (-2.26 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(int,int):System.String (FullOpts) -5 (-2.23 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(short,int):System.String (FullOpts) -5 (-0.11 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts) -5 (-0.06 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.ManifestBuilder:CreateManifestString():System.String:this (FullOpts) -5 (-1.22 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitGoto(System.Linq.Expressions.GotoExpression):System.Linq.Expressions.Expression:this (FullOpts) -5 (-0.51 % of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:Add(System.Net.Cookie):this (FullOpts) -5 (-0.57 % of base) : System.Net.Http.dasm - System.Net.Http.AuthenticationHelper:TryGetAuthenticationChallenge(System.Net.Http.HttpResponseMessage,ubyte,System.Uri,System.Net.ICredentials,byref):ubyte (FullOpts) -5 (-1.11 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:get_Http2AltSvcOriginUri():ubyte[]:this (FullOpts) -5 (-0.99 % of base) : System.Net.HttpListener.dasm - System.Net.HttpResponseStream:GetChunkSizeBytes(int,ubyte):ubyte[] (FullOpts) -5 (-0.56 % of base) : System.Net.Mail.dasm - System.Net.Mime.SmtpDateTime:ToString():System.String:this (FullOpts) -5 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:AppendParameters(byref,System.Type[],int) (FullOpts) -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddSpace(ubyte,ubyte):this (FullOpts) -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddWord(ubyte,ubyte):this (FullOpts) -5 (-1.31 % of base) : System.Private.CoreLib.dasm - System.Text.TranscodingStream:FinalFlushWriteBuffers():System.ArraySegment`1[ubyte]:this (FullOpts) -5 (-0.09 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.XmlSerializationWriterILGen:WriteMember(System.Xml.Serialization.SourceInfo,System.Xml.Serialization.AttributeAccessor,System.Xml.Serialization.TypeDesc,System.String):this (FullOpts) -5 (-0.11 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this (FullOpts) -5 (-0.09 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextReaderImpl+d__532:MoveNext():this (FullOpts) -5 (-0.50 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextWriter:StartDocument(int):this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[double]:Rent(int):double[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[int]:Rent(int):int[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[long]:Rent(int):long[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[short]:Rent(int):short[]:this (FullOpts) -4 (-0.59 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Numerics.Vector`1[float]]:Rent(int):System.Numerics.Vector`1[float][]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts) -4 (-0.43 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.NameValueSectionHandler:CreateStatic(System.Object,System.Xml.XmlNode,System.String,System.String):System.Object (FullOpts) -4 (-0.73 % of base) : System.Data.Common.dasm - System.Data.DataRowView:CreateChildView(System.Data.DataRelation,ubyte):System.Data.DataView:this (FullOpts) -4 (-1.33 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:Create(System.String,System.String,ubyte,byref):System.IO.FileSystemInfo (FullOpts) -4 (-0.53 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.TempAssemblyCache:Add(System.String,System.Type,System.Xml.Serialization.TempAssembly):this (FullOpts) -3 (-0.27 % of base) : System.Data.Common.dasm - System.Data.Common.ObjectStorage:GetXmlSerializer(System.Type,System.Xml.Serialization.XmlRootAttribute):System.Xml.Serialization.XmlSerializer (FullOpts) -3 (-1.14 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessWaitState:ReleaseRef():this (FullOpts) -3 (-0.69 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:GetStringForPartUriFromAnyUri(System.Uri):System.String (FullOpts) -3 (-0.10 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.IlGen.XmlILStorageMethods:.ctor(System.Type):this (FullOpts) -3 (-0.17 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XmlQueryType:ToString(System.String):System.String:this (FullOpts) -2 (-0.11 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:BindCall(Microsoft.CSharp.RuntimeBinder.ICSharpInvokeOrInvokeMemberBinder,Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[]):Microsoft.CSharp.RuntimeBinder.Semantics.ExprWithArgs:this (FullOpts) -2 (-0.16 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.NewLateBinding:ObjectLateGet(System.Object,System.Type,System.String,System.Object[],System.String[],System.Type[],ubyte[]):System.Object (FullOpts) Top method regressions (percentages): 11 (1.31 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts) 7 (0.18 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts) Top method improvements (percentages): -47 (-13.35 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.LiteHashProvider:CreateKmac(System.String,System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],ubyte):System.Security.Cryptography.LiteKmac (FullOpts) -50 (-10.66 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcTransition:GetSlotState(ILCompiler.Reflection.ReadyToRun.Amd64.GcSlotTable,ushort):System.String:this (FullOpts) -74 (-9.01 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) -74 (-8.79 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) -23 (-8.68 % of base) : System.Text.Json.dasm - System.Text.Json.ThrowHelper:ThrowInvalidOperationException_NodeWrongType(System.ReadOnlySpan`1[System.String]) (FullOpts) -40 (-8.62 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.UnixCommandLinePing:GetPingUtilityPath(ubyte):System.String (FullOpts) -39 (-7.65 % of base) : System.Private.CoreLib.dasm - System.Globalization.GlobalizationMode:LoadAppLocalIcuCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[double,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[int,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[long,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[short,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Nullable`1[int],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.90 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[ubyte,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -23 (-5.20 % of base) : System.Linq.dasm - System.Linq.Enumerable+EnumerableSorter`2[System.__Canon,System.Nullable`1[int]]:QuickSort(int[],int,int):this (FullOpts) -12 (-5.04 % of base) : System.Data.Common.dasm - System.Data.SqlTypes.SqlString:op_Explicit(System.Data.SqlTypes.SqlBoolean):System.Data.SqlTypes.SqlString (FullOpts) -17 (-4.75 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.SchemaExporter:IsSpecialXmlType(System.Type,byref,byref,byref):ubyte (FullOpts) -68 (-4.08 % of base) : System.Private.CoreLib.dasm - System.IO.File+d__101:MoveNext():this (FullOpts) -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddSpace(ubyte,ubyte):this (FullOpts) -5 (-3.38 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexCharClass:AddWord(ubyte,ubyte):this (FullOpts) -16 (-3.30 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectTypeDescriptionProvider:CreateInstance(System.IServiceProvider,System.Type,System.Type[],System.Object[]):System.Object:this (FullOpts) -9 (-2.91 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.UInt128):System.Numerics.BigInteger (FullOpts) -11 (-2.78 % of base) : System.Private.CoreLib.dasm - System.String:Concat(System.ReadOnlySpan`1[System.String]):System.String (FullOpts) -11 (-2.74 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts) -6 (-2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts) -5 (-2.65 % of base) : System.Private.CoreLib.dasm - Interop+Sys:GetUnixVersion():System.String (FullOpts) -10 (-2.43 % of base) : System.Private.CoreLib.dasm - System.Globalization.CultureData:StripSecondsFromPattern(System.String):System.String (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts) -11 (-2.43 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts) -5 (-2.26 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(int,int):System.String (FullOpts) -5 (-2.23 % of base) : System.Private.CoreLib.dasm - System.Convert:ToString(short,int):System.String (FullOpts) -9 (-2.18 % of base) : System.Runtime.Numerics.dasm - System.Numerics.BigInteger:op_Implicit(System.Int128):System.Numerics.BigInteger (FullOpts) -11 (-2.17 % of base) : System.Private.CoreLib.dasm - System.String:JoinCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String]):System.String (FullOpts) -9 (-2.12 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.CultureInfoConverter:GetStandardValues(System.ComponentModel.ITypeDescriptorContext):System.ComponentModel.TypeConverter+StandardValuesCollection:this (FullOpts) -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ResetMethodValue():System.Reflection.MethodInfo:this (FullOpts) -9 (-2.03 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.ReflectPropertyDescriptor:get_ShouldSerializeMethodValue():System.Reflection.MethodInfo:this (FullOpts) -19 (-1.94 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:InternalConnectToServer():int:this (FullOpts) -27 (-1.88 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:WriteLiteralHeader(System.String,System.ReadOnlySpan`1[System.String],System.Text.Encoding,byref):this (FullOpts) -40 (-1.84 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509AuthorityKeyIdentifierExtension:Decode(System.ReadOnlySpan`1[ubyte]):this (FullOpts) -5 (-1.82 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.SignatureDecoder:EmitSignatureBinaryFrom(System.Text.StringBuilder,int):this (FullOpts) -15 (-1.77 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts) -11 (-1.74 % of base) : System.Private.CoreLib.dasm - System.Net.WebUtility:UrlEncodeToBytes(ubyte[],int,int):ubyte[] (FullOpts) -4 (-1.33 % of base) : System.Private.CoreLib.dasm - System.IO.FileSystemInfo:Create(System.String,System.String,ubyte,byref):System.IO.FileSystemInfo (FullOpts) -5 (-1.31 % of base) : System.Private.CoreLib.dasm - System.Text.TranscodingStream:FinalFlushWriteBuffers():System.ArraySegment`1[ubyte]:this (FullOpts) -5 (-1.22 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.ExpressionStringBuilder:VisitGoto(System.Linq.Expressions.GotoExpression):System.Linq.Expressions.Expression:this (FullOpts) -2 (-1.14 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts) -3 (-1.14 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessWaitState:ReleaseRef():this (FullOpts) -5 (-1.11 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPool:get_Http2AltSvcOriginUri():ubyte[]:this (FullOpts) -24 (-1.06 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Xslt.XsltLoader:ParseModeListAttribute(int):System.Xml.Xsl.Qil.QilName:this (FullOpts) -10 (-1.04 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.Strings:GetFormatString(int,int,int,int,int):System.String (FullOpts) -5 (-0.99 % of base) : System.Net.HttpListener.dasm - System.Net.HttpResponseStream:GetChunkSizeBytes(int,ubyte):ubyte[] (FullOpts) -25 (-0.96 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.CertificateRequest:VerifyX509Signature(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.X509Certificates.PublicKey,System.Security.Cryptography.Asn1.AlgorithmIdentifierAsn):ubyte (FullOpts) -25 (-0.84 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.DependencyInjection.SocketsHttpHandlerBuilderExtensions+SocketsHttpHandlerConfiguration:PrintMembers(System.Text.StringBuilder):ubyte:this (FullOpts) -2 (-0.83 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatIterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[double]:Rent(int):double[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[int]:Rent(int):int[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[long]:Rent(int):long[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[short]:Rent(int):short[]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.Numerics.Vector`1[float]]:Rent(int):System.Numerics.Vector`1[float][]:this (FullOpts) -4 (-0.73 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts) -4 (-0.73 % of base) : System.Data.Common.dasm - System.Data.DataRowView:CreateChildView(System.Data.DataRelation,ubyte):System.Data.DataView:this (FullOpts) -3 (-0.69 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:GetStringForPartUriFromAnyUri(System.Uri):System.String (FullOpts) -5 (-0.66 % of base) : Microsoft.Extensions.Configuration.FileExtensions.dasm - Microsoft.Extensions.Configuration.FileConfigurationProvider:ToString():System.String:this (FullOpts) -5 (-0.64 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:ToString():System.String:this (FullOpts) -4 (-0.59 % of base) : System.Private.CoreLib.dasm - System.Buffers.ConfigurableArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts) -5 (-0.57 % of base) : System.Net.Http.dasm - System.Net.Http.AuthenticationHelper:TryGetAuthenticationChallenge(System.Net.Http.HttpResponseMessage,ubyte,System.Uri,System.Net.ICredentials,byref):ubyte (FullOpts) -5 (-0.56 % of base) : System.Net.Mail.dasm - System.Net.Mime.SmtpDateTime:ToString():System.String:this (FullOpts) -4 (-0.53 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.TempAssemblyCache:Add(System.String,System.Type,System.Xml.Serialization.TempAssembly):this (FullOpts) -5 (-0.51 % of base) : System.Net.Primitives.dasm - System.Net.CookieContainer:Add(System.Net.Cookie):this (FullOpts) -5 (-0.51 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase:AppendParameters(byref,System.Type[],int) (FullOpts) -5 (-0.50 % of base) : System.Private.Xml.dasm - System.Xml.XmlTextWriter:StartDocument(int):this (FullOpts) -5 (-0.45 % of base) : runincontext.dasm - RunInContext:Main(System.String[]):int (FullOpts) -4 (-0.43 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.NameValueSectionHandler:CreateStatic(System.Object,System.Xml.XmlNode,System.String,System.String):System.Object (FullOpts) -2 (-0.41 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[int]:ToList():System.Collections.Generic.List`1[int]:this (FullOpts) -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[long]:ToList():System.Collections.Generic.List`1[long]:this (FullOpts) -7 (-0.37 % of base) : runincontext.dasm - TestRunner:ExecuteAndUnload(System.Collections.Generic.List`1[System.WeakReference],byref,byref):int:this (FullOpts) -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[short]:ToList():System.Collections.Generic.List`1[short]:this (FullOpts) -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[ubyte]:ToList():System.Collections.Generic.List`1[ubyte]:this (FullOpts) -2 (-0.37 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[double]:ToList():System.Collections.Generic.List`1[double]:this (FullOpts) -2 (-0.35 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackUriHelper:ResolvePartUri(System.Uri,System.Uri):System.Uri (FullOpts) -2 (-0.34 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[System.Numerics.Vector`1[float]]:ToList():System.Collections.Generic.List`1[System.Numerics.Vector`1[float]]:this (FullOpts) -10 (-0.34 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser:ScanLiteral(int):int:this (FullOpts) -2 (-0.32 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) -10 (-0.28 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts) -3 (-0.27 % of base) : System.Data.Common.dasm - System.Data.Common.ObjectStorage:GetXmlSerializer(System.Type,System.Xml.Serialization.XmlRootAttribute):System.Xml.Serialization.XmlSerializer (FullOpts) -6 (-0.26 % of base) : ILCompiler.Reflection.ReadyToRun.dasm - ILCompiler.Reflection.ReadyToRun.ReadyToRunReader:ParseInstanceMethodEntrypoints(ubyte[]):this (FullOpts) -5 (-0.24 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Errors.UserStringBuilder:ErrAppendType(Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.SubstContext):this (FullOpts) -2 (-0.24 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrepend1Iterator`1[System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (FullOpts) -10 (-0.22 % of base) : System.Private.Xml.dasm - System.Xml.DtdParser+d__185:MoveNext():this (FullOpts) -3 (-0.17 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.XmlQueryType:ToString(System.String):System.String:this (FullOpts) 118 total methods with Code Size differences (116 improved, 2 regressed), 252556 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 2 weeks ago

Top method regressions

11 (1.31 % of base) - System.Threading.TimerQueueTimer:get_DisplayString():System.String:this ```diff ; Assembly listing for method System.Threading.TimerQueueTimer:get_DisplayString():System.String: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; 30 single block inlinees; 10 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 9, 8 ) ref -> rbx this class-hnd single-def ; V01 loc0 [V01,T08] ( 4, 3.50) ref -> r15 class-hnd ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T02] ( 4, 6 ) ref -> rax class-hnd single-def "dup spill" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref single-def ; V05 tmp3 [V05,T17] ( 4, 2.50) ref -> rdi ; V06 tmp4 [V06,T00] ( 12, 24 ) ref -> r14 class-hnd exact single-def "dup spill" ;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref single-def ;* V08 tmp6 [V08 ] ( 0, 0 ) ref -> zero-ref single-def ;* V09 tmp7 [V09 ] ( 0, 0 ) int -> zero-ref ;* V10 tmp8 [V10 ] ( 0, 0 ) ref -> zero-ref ;* V11 tmp9 [V11 ] ( 0, 0 ) ref -> zero-ref ;* V12 tmp10 [V12 ] ( 0, 0 ) int -> zero-ref -; V13 tmp11 [V13,T09] ( 5, 3 ) ref -> rdi +; V13 tmp11 [V13,T09] ( 4, 3.50) ref -> rdi ;* V14 tmp12 [V14 ] ( 0, 0 ) ref -> zero-ref single-def ;* V15 tmp13 [V15 ] ( 0, 0 ) ref -> zero-ref single-def ;* V16 tmp14 [V16 ] ( 0, 0 ) int -> zero-ref ;* V17 tmp15 [V17 ] ( 0, 0 ) ref -> zero-ref single-def ;* V18 tmp16 [V18 ] ( 0, 0 ) ref -> zero-ref single-def ;* V19 tmp17 [V19 ] ( 0, 0 ) ref -> zero-ref single-def ;* V20 tmp18 [V20 ] ( 0, 0 ) int -> zero-ref -; V21 tmp19 [V21,T20] ( 3, 2 ) ref -> rdx +; V21 tmp19 [V21,T21] ( 2, 2 ) ref -> rdx ;* V22 tmp20 [V22 ] ( 0, 0 ) ref -> zero-ref single-def ;* V23 tmp21 [V23 ] ( 0, 0 ) ref -> zero-ref single-def ;* V24 tmp22 [V24 ] ( 0, 0 ) int -> zero-ref ;* V25 tmp23 [V25 ] ( 0, 0 ) ref -> zero-ref ;* V26 tmp24 [V26 ] ( 0, 0 ) ref -> zero-ref ;* V27 tmp25 [V27 ] ( 0, 0 ) int -> zero-ref -; V28 tmp26 [V28,T10] ( 5, 3 ) ref -> rdi +; V28 tmp26 [V28,T10] ( 4, 3.50) ref -> rdi ;* V29 tmp27 [V29 ] ( 0, 0 ) ref -> zero-ref single-def ;* V30 tmp28 [V30 ] ( 0, 0 ) ref -> zero-ref single-def ;* V31 tmp29 [V31 ] ( 0, 0 ) int -> zero-ref ;* V32 tmp30 [V32 ] ( 0, 0 ) ref -> zero-ref single-def ;* V33 tmp31 [V33 ] ( 0, 0 ) ref -> zero-ref single-def ;* V34 tmp32 [V34 ] ( 0, 0 ) ref -> zero-ref single-def ;* V35 tmp33 [V35 ] ( 0, 0 ) int -> zero-ref -; V36 tmp34 [V36,T21] ( 3, 2 ) ref -> rdx +; V36 tmp34 [V36,T22] ( 2, 2 ) ref -> rdx ; V37 tmp35 [V37,T03] ( 4, 6 ) ref -> rdi class-hnd single-def "dup spill" ;* V38 tmp36 [V38 ] ( 0, 0 ) ref -> zero-ref single-def ;* V39 tmp37 [V39 ] ( 0, 0 ) ref -> zero-ref single-def ;* V40 tmp38 [V40 ] ( 0, 0 ) int -> zero-ref ;* V41 tmp39 [V41 ] ( 0, 0 ) ref -> zero-ref single-def ;* V42 tmp40 [V42 ] ( 0, 0 ) ref -> zero-ref single-def ;* V43 tmp41 [V43 ] ( 0, 0 ) ref -> zero-ref single-def ;* V44 tmp42 [V44 ] ( 0, 0 ) int -> zero-ref -; V45 tmp43 [V45,T22] ( 3, 2 ) ref -> rdx +; V45 tmp43 [V45,T20] ( 3, 2 ) ref -> rdx ;* V46 tmp44 [V46 ] ( 0, 0 ) ref -> zero-ref single-def ;* V47 tmp45 [V47 ] ( 0, 0 ) ref -> zero-ref single-def ;* V48 tmp46 [V48 ] ( 0, 0 ) int -> zero-ref ; V49 tmp47 [V49,T06] ( 5, 5 ) ref -> rdx ; V50 tmp48 [V50,T11] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Single-def Box Helper" ; V51 tmp49 [V51,T12] ( 3, 3 ) ref -> rdi class-hnd exact single-def "Single-def Box Helper" ;* V52 tmp50 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V53 tmp51 [V53,T13] ( 3, 3 ) long -> rdx "Inlining Arg" ;* V54 tmp52 [V54 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V55 tmp53 [V55 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V56 tmp54 [V56 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V57 tmp55 [V57 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V58 tmp56 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V59 tmp57 [V59,T18] ( 4, 2 ) long -> rax ld-addr-op "Inline ldloca(s) first use temp" +; V59 tmp57 [V59,T18] ( 4, 2 ) long -> r13 ld-addr-op "Inline ldloca(s) first use temp" ;* V60 tmp58 [V60 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" -; V61 tmp59 [V61 ] ( 2, 1 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V62 tmp60 [V62,T23] ( 2, 2 ) long -> rdi "impAppendStmt" +; V61 tmp59 [V61 ] ( 2, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V62 tmp60 [V62,T23] ( 2, 2 ) long -> rsi "impAppendStmt" ;* V63 tmp61 [V63 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V64 tmp62 [V64 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V65 tmp63 [V65 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V66 tmp64 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V67 tmp65 [V67 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V68 tmp66 [V68 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V69 tmp67 [V69 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V70 tmp68 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V71 tmp69 [V71 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V72 tmp70 [V72 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V73 tmp71 [V73 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V74 tmp72 [V74 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V75 tmp73 [V75 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V76 tmp74 [V76 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V77 tmp75 [V77,T27] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V78 tmp76 [V78 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V79 tmp77 [V79 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V80 tmp78 [V80 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V81 tmp79 [V81,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V82 tmp80 [V82 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V83 tmp81 [V83 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ; V84 tmp82 [V84,T14] ( 3, 3 ) long -> rdx "Inlining Arg" ;* V85 tmp83 [V85 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" ;* V86 tmp84 [V86 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V87 tmp85 [V87 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V88 tmp86 [V88 ] ( 0, 0 ) long -> zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V89 tmp87 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" -; V90 tmp88 [V90,T19] ( 4, 2 ) long -> rax ld-addr-op "Inline ldloca(s) first use temp" +; V90 tmp88 [V90,T19] ( 4, 2 ) long -> r12 ld-addr-op "Inline ldloca(s) first use temp" ;* V91 tmp89 [V91 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" -; V92 tmp90 [V92 ] ( 2, 1 ) long -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" -; V93 tmp91 [V93,T24] ( 2, 2 ) long -> rdi "impAppendStmt" +; V92 tmp90 [V92 ] ( 2, 1 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp" +; V93 tmp91 [V93,T24] ( 2, 2 ) long -> rsi "impAppendStmt" ;* V94 tmp92 [V94 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V95 tmp93 [V95 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V96 tmp94 [V96 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V97 tmp95 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V98 tmp96 [V98 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V99 tmp97 [V99 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V100 tmp98 [V100 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V101 tmp99 [V101 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V102 tmp100 [V102 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V103 tmp101 [V103 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V104 tmp102 [V104 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V105 tmp103 [V105 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V106 tmp104 [V106 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V107 tmp105 [V107 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V108 tmp106 [V108,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V109 tmp107 [V109 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" ;* V110 tmp108 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V111 tmp109 [V111 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V112 tmp110 [V112,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V113 tmp111 [V113 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V114 tmp112 [V114 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V115 tmp113 [V115 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V116 tmp114 [V116 ] ( 0, 0 ) long -> zero-ref "field V54._lower (fldOffset=0x0)" P-INDEP ;* V117 tmp115 [V117 ] ( 0, 0 ) long -> zero-ref "field V54._upper (fldOffset=0x8)" P-INDEP ;* V118 tmp116 [V118 ] ( 0, 0 ) long -> zero-ref "field V55._lower (fldOffset=0x0)" P-INDEP ;* V119 tmp117 [V119 ] ( 0, 0 ) long -> zero-ref "field V55._upper (fldOffset=0x8)" P-INDEP ;* V120 tmp118 [V120 ] ( 0, 0 ) long -> zero-ref "field V56._lower (fldOffset=0x0)" P-INDEP ;* V121 tmp119 [V121 ] ( 0, 0 ) long -> zero-ref "field V56._upper (fldOffset=0x8)" P-INDEP ;* V122 tmp120 [V122 ] ( 0, 0 ) long -> zero-ref "field V58._lower (fldOffset=0x0)" P-INDEP -; V123 tmp121 [V123,T15] ( 5, 2.50) long -> rdi "field V58._upper (fldOffset=0x8)" P-INDEP +; V123 tmp121 [V123,T15] ( 5, 2.50) long -> rsi "field V58._upper (fldOffset=0x8)" P-INDEP ;* V124 tmp122 [V124 ] ( 0, 0 ) long -> zero-ref "field V66._lower (fldOffset=0x0)" P-INDEP ;* V125 tmp123 [V125 ] ( 0, 0 ) long -> zero-ref "field V66._upper (fldOffset=0x8)" P-INDEP ;* V126 tmp124 [V126 ] ( 0, 0 ) long -> zero-ref "field V70._lower (fldOffset=0x0)" P-INDEP ;* V127 tmp125 [V127 ] ( 0, 0 ) long -> zero-ref "field V70._upper (fldOffset=0x8)" P-INDEP ;* V128 tmp126 [V128 ] ( 0, 0 ) long -> zero-ref "field V72._lower (fldOffset=0x0)" P-INDEP ;* V129 tmp127 [V129 ] ( 0, 0 ) long -> zero-ref "field V72._upper (fldOffset=0x8)" P-INDEP ;* V130 tmp128 [V130 ] ( 0, 0 ) long -> zero-ref "field V73._lower (fldOffset=0x0)" P-INDEP ;* V131 tmp129 [V131 ] ( 0, 0 ) long -> zero-ref "field V73._upper (fldOffset=0x8)" P-INDEP ;* V132 tmp130 [V132 ] ( 0, 0 ) long -> zero-ref "field V75._lower (fldOffset=0x0)" P-INDEP ;* V133 tmp131 [V133 ] ( 0, 0 ) long -> zero-ref "field V75._upper (fldOffset=0x8)" P-INDEP ;* V134 tmp132 [V134 ] ( 0, 0 ) long -> zero-ref "field V79._lower (fldOffset=0x0)" P-INDEP ;* V135 tmp133 [V135 ] ( 0, 0 ) long -> zero-ref "field V79._upper (fldOffset=0x8)" P-INDEP -; V136 tmp134 [V136,T25] ( 2, 1 ) long -> r13 "field V83._ticks (fldOffset=0x0)" P-INDEP +; V136 tmp134 [V136,T25] ( 2, 1 ) long -> r12 "field V83._ticks (fldOffset=0x0)" P-INDEP ;* V137 tmp135 [V137 ] ( 0, 0 ) long -> zero-ref "field V85._lower (fldOffset=0x0)" P-INDEP ;* V138 tmp136 [V138 ] ( 0, 0 ) long -> zero-ref "field V85._upper (fldOffset=0x8)" P-INDEP ;* V139 tmp137 [V139 ] ( 0, 0 ) long -> zero-ref "field V86._lower (fldOffset=0x0)" P-INDEP ;* V140 tmp138 [V140 ] ( 0, 0 ) long -> zero-ref "field V86._upper (fldOffset=0x8)" P-INDEP ;* V141 tmp139 [V141 ] ( 0, 0 ) long -> zero-ref "field V87._lower (fldOffset=0x0)" P-INDEP ;* V142 tmp140 [V142 ] ( 0, 0 ) long -> zero-ref "field V87._upper (fldOffset=0x8)" P-INDEP ;* V143 tmp141 [V143 ] ( 0, 0 ) long -> zero-ref "field V89._lower (fldOffset=0x0)" P-INDEP -; V144 tmp142 [V144,T16] ( 5, 2.50) long -> rdi "field V89._upper (fldOffset=0x8)" P-INDEP +; V144 tmp142 [V144,T16] ( 5, 2.50) long -> rsi "field V89._upper (fldOffset=0x8)" P-INDEP ;* V145 tmp143 [V145 ] ( 0, 0 ) long -> zero-ref "field V97._lower (fldOffset=0x0)" P-INDEP ;* V146 tmp144 [V146 ] ( 0, 0 ) long -> zero-ref "field V97._upper (fldOffset=0x8)" P-INDEP ;* V147 tmp145 [V147 ] ( 0, 0 ) long -> zero-ref "field V101._lower (fldOffset=0x0)" P-INDEP ;* V148 tmp146 [V148 ] ( 0, 0 ) long -> zero-ref "field V101._upper (fldOffset=0x8)" P-INDEP ;* V149 tmp147 [V149 ] ( 0, 0 ) long -> zero-ref "field V103._lower (fldOffset=0x0)" P-INDEP ;* V150 tmp148 [V150 ] ( 0, 0 ) long -> zero-ref "field V103._upper (fldOffset=0x8)" P-INDEP ;* V151 tmp149 [V151 ] ( 0, 0 ) long -> zero-ref "field V104._lower (fldOffset=0x0)" P-INDEP ;* V152 tmp150 [V152 ] ( 0, 0 ) long -> zero-ref "field V104._upper (fldOffset=0x8)" P-INDEP ;* V153 tmp151 [V153 ] ( 0, 0 ) long -> zero-ref "field V106._lower (fldOffset=0x0)" P-INDEP ;* V154 tmp152 [V154 ] ( 0, 0 ) long -> zero-ref "field V106._upper (fldOffset=0x8)" P-INDEP ;* V155 tmp153 [V155 ] ( 0, 0 ) long -> zero-ref "field V110._lower (fldOffset=0x0)" P-INDEP ;* V156 tmp154 [V156 ] ( 0, 0 ) long -> zero-ref "field V110._upper (fldOffset=0x8)" P-INDEP ; V157 tmp155 [V157,T26] ( 2, 1 ) long -> r13 "field V114._ticks (fldOffset=0x0)" P-INDEP ; V158 tmp156 [V158,T04] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V159 tmp157 [V159,T05] ( 3, 6 ) ref -> rax single-def "argument with side effect" ; V160 tmp158 [V160,T07] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; -; Lcl frame size = 16 +; Lcl frame size = 24 G_M46469_IG01: push rbp push r15 push r14 push r13 + push r12 push rbx - sub rsp, 16 - lea rbp, [rsp+0x30] + sub rsp, 24 + lea rbp, [rsp+0x40] mov rbx, rdi - ;; size=20 bbWeight=1 PerfScore 6.00 + ;; size=22 bbWeight=1 PerfScore 7.00 G_M46469_IG02: mov rdi, gword ptr [rbx+0x20] mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this cmp dword ptr [rdi], edi call [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this test rax, rax jne SHORT G_M46469_IG04 ;; size=36 bbWeight=1 PerfScore 16.75 G_M46469_IG03: xor rdi, rdi jmp SHORT G_M46469_IG05 ;; size=4 bbWeight=0.50 PerfScore 1.12 G_M46469_IG04: mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x50] call [rax+0x20]System.Type:get_FullName():System.String:this mov rdi, rax ;; size=16 bbWeight=0.50 PerfScore 3.75 G_M46469_IG05: mov r15, rdi test r15, r15 je SHORT G_M46469_IG07 ;; size=8 bbWeight=1 PerfScore 1.50 G_M46469_IG06: mov rsi, 0xD1FFAB1E ; '.' mov rax, 0xD1FFAB1E ; code for System.String:Concat(System.String,System.String):System.String call [rax]System.String:Concat(System.String,System.String):System.String mov r15, rax ;; size=25 bbWeight=0.50 PerfScore 1.88 G_M46469_IG07: mov rdi, 0xD1FFAB1E ; System.String[] mov esi, 10 call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov rdx, 0xD1FFAB1E ; 'DueTime = ' mov gword ptr [r14+0x10], rdx cmp dword ptr [rbx+0x48], -1 je SHORT G_M46469_IG09 ;; size=43 bbWeight=1 PerfScore 7.00 G_M46469_IG08: mov edx, dword ptr [rbx+0x48] mov edi, 0x3E8 - lea rax, [rbp-0x28] - mulx rdi, rcx, rdi + lea rax, [rbp-0x30] + mulx rsi, rcx, rdi mov qword ptr [rax], rcx - mov rax, qword ptr [rbp-0x28] + mov r13, qword ptr [rbp-0x30] sar rdx, 63 and rdx, 0x3E8 - sub rdi, rdx - test rdi, rdi - jg G_M46469_IG28 - test rdi, rdi - jne SHORT G_M46469_IG10 - mov rcx, 0xD1FFAB1E - cmp rax, rcx - ja G_M46469_IG28 - jmp SHORT G_M46469_IG10 - ;; size=73 bbWeight=0.50 PerfScore 7.38 + sub rsi, rdx + test rsi, rsi + jg G_M46469_IG22 + test rsi, rsi + jne G_M46469_IG12 + mov rdi, 0xD1FFAB1E + cmp r13, rdi + ja G_M46469_IG22 + jmp G_M46469_IG12 + ;; size=80 bbWeight=0.50 PerfScore 7.38 G_M46469_IG09: mov rdi, 0xD1FFAB1E ; '(not set)' - jmp SHORT G_M46469_IG12 - ;; size=12 bbWeight=0.50 PerfScore 1.12 + ;; size=10 bbWeight=1 PerfScore 0.25 G_M46469_IG10: - cmp rdi, -1 - jl G_M46469_IG28 - cmp rdi, -1 - jne SHORT G_M46469_IG11 - mov rdi, 0xD1FFAB1E - cmp rax, rdi - jb G_M46469_IG28 - ;; size=35 bbWeight=0.50 PerfScore 2.00 -G_M46469_IG11: - lea r13, [rax+4*rax] - add r13, r13 - mov rdi, 0xD1FFAB1E ; System.TimeSpan - call CORINFO_HELP_NEWSFAST - mov rdi, rax - mov qword ptr [rdi+0x08], r13 - ;; size=29 bbWeight=0.50 PerfScore 1.62 -G_M46469_IG12: - test rdi, rdi - jne SHORT G_M46469_IG14 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M46469_IG13: - xor rdx, rdx - jmp SHORT G_M46469_IG15 - ;; size=4 bbWeight=0.50 PerfScore 1.12 -G_M46469_IG14: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x08]System.Object:ToString():System.String:this mov rdx, rax - ;; size=13 bbWeight=0.50 PerfScore 3.62 -G_M46469_IG15: mov rdi, r14 mov esi, 1 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, r14 mov esi, 2 mov rdx, 0xD1FFAB1E ; ', Period = ' mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST cmp dword ptr [rbx+0x4C], -1 - je SHORT G_M46469_IG17 - ;; size=56 bbWeight=1 PerfScore 11.75 -G_M46469_IG16: + je G_M46469_IG14 + ;; size=73 bbWeight=1 PerfScore 19.00 +G_M46469_IG11: mov edx, dword ptr [rbx+0x4C] mov edi, 0x3E8 - lea rax, [rbp-0x30] - mulx rdi, rcx, rdi + lea rax, [rbp-0x38] + mulx rsi, rcx, rdi mov qword ptr [rax], rcx - mov rax, qword ptr [rbp-0x30] + mov r12, qword ptr [rbp-0x38] sar rdx, 63 and rdx, 0x3E8 - sub rdi, rdx - test rdi, rdi - jg G_M46469_IG28 - test rdi, rdi - jne SHORT G_M46469_IG18 - mov rcx, 0xD1FFAB1E - cmp rax, rcx - ja G_M46469_IG28 - jmp SHORT G_M46469_IG18 - ;; size=73 bbWeight=0.50 PerfScore 7.38 -G_M46469_IG17: - mov rdi, 0xD1FFAB1E ; '(not set)' - jmp SHORT G_M46469_IG20 - ;; size=12 bbWeight=0.50 PerfScore 1.12 -G_M46469_IG18: - cmp rdi, -1 - jl G_M46469_IG28 - cmp rdi, -1 - jne SHORT G_M46469_IG19 + sub rsi, rdx + test rsi, rsi + jg G_M46469_IG22 + test rsi, rsi + jne G_M46469_IG17 + mov rdi, 0xD1FFAB1E + cmp r12, rdi + ja G_M46469_IG22 + jmp G_M46469_IG17 + ;; size=80 bbWeight=0.50 PerfScore 7.38 +G_M46469_IG12: + cmp rsi, -1 + jl G_M46469_IG22 + cmp rsi, -1 + jne SHORT G_M46469_IG13 mov rdi, 0xD1FFAB1E - cmp rax, rdi - jb G_M46469_IG28 + cmp r13, rdi + jb G_M46469_IG22 ;; size=35 bbWeight=0.50 PerfScore 2.00 -G_M46469_IG19: - lea r13, [rax+4*rax] - add r13, r13 +G_M46469_IG13: + lea r12, [r13+4*r13] + add r12, r12 mov rdi, 0xD1FFAB1E ; System.TimeSpan call CORINFO_HELP_NEWSFAST mov rdi, rax - mov qword ptr [rdi+0x08], r13 - ;; size=29 bbWeight=0.50 PerfScore 1.62 -G_M46469_IG20: - test rdi, rdi - jne SHORT G_M46469_IG22 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M46469_IG21: - xor rdx, rdx - jmp SHORT G_M46469_IG23 - ;; size=4 bbWeight=0.50 PerfScore 1.12 -G_M46469_IG22: + mov qword ptr [rdi+0x08], r12 + jmp G_M46469_IG10 + ;; size=35 bbWeight=0.50 PerfScore 3.38 +G_M46469_IG14: + mov rdi, 0xD1FFAB1E ; '(not set)' + ;; size=10 bbWeight=1 PerfScore 0.25 +G_M46469_IG15: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x08]System.Object:ToString():System.String:this mov rdx, rax - ;; size=13 bbWeight=0.50 PerfScore 3.62 -G_M46469_IG23: mov rdi, r14 mov esi, 3 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, r14 mov esi, 4 mov rdx, 0xD1FFAB1E ; ', ' mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, r14 mov rdx, r15 mov esi, 5 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, gword ptr [rbx+0x20] mov rax, 0xD1FFAB1E ; code for System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this cmp dword ptr [rdi], edi call [rax]System.MulticastDelegate:GetMethodImpl():System.Reflection.MethodInfo:this mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this mov rdx, rax mov rdi, r14 mov esi, 6 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, r14 mov esi, 7 mov rdx, 0xD1FFAB1E ; '(' mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, gword ptr [rbx+0x28] test rdi, rdi - jne SHORT G_M46469_IG25 - ;; size=166 bbWeight=1 PerfScore 38.50 -G_M46469_IG24: + jne SHORT G_M46469_IG19 + ;; size=179 bbWeight=1 PerfScore 45.75 +G_M46469_IG16: xor rdx, rdx - jmp SHORT G_M46469_IG26 + jmp SHORT G_M46469_IG20 ;; size=4 bbWeight=0.50 PerfScore 1.12 -G_M46469_IG25: +G_M46469_IG17: + cmp rsi, -1 + jl G_M46469_IG22 + cmp rsi, -1 + jne SHORT G_M46469_IG18 + mov rdi, 0xD1FFAB1E + cmp r12, rdi + jb G_M46469_IG22 + ;; size=35 bbWeight=0.50 PerfScore 2.00 +G_M46469_IG18: + lea r13, [r12+4*r12] + add r13, r13 + mov rdi, 0xD1FFAB1E ; System.TimeSpan + call CORINFO_HELP_NEWSFAST + mov rdi, rax + mov qword ptr [rdi+0x08], r13 + jmp G_M46469_IG15 + ;; size=34 bbWeight=0.50 PerfScore 2.62 +G_M46469_IG19: mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x08]System.Object:ToString():System.String:this mov rdx, rax ;; size=13 bbWeight=0.50 PerfScore 3.62 -G_M46469_IG26: +G_M46469_IG20: mov rdi, 0xD1FFAB1E ; 'null' test rdx, rdx cmove rdx, rdi mov rdi, r14 mov esi, 8 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, r14 mov esi, 9 mov rdx, 0xD1FFAB1E ; ')' mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ARRADDR_ST call [rax]CORINFO_HELP_ARRADDR_ST mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.String:Concat(System.String[]):System.String call [rax]System.String:Concat(System.String[]):System.String nop ;; size=83 bbWeight=1 PerfScore 12.25 -G_M46469_IG27: - add rsp, 16 +G_M46469_IG21: + add rsp, 24 pop rbx + pop r12 pop r13 pop r14 pop r15 pop rbp ret - ;; size=13 bbWeight=1 PerfScore 3.75 -G_M46469_IG28: + ;; size=15 bbWeight=1 PerfScore 4.25 +G_M46469_IG22: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong() call [rax]System.ThrowHelper:ThrowArgumentOutOfRange_TimeSpanTooLong() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 842, prolog size 17, PerfScore 145.25, instruction count 198, allocated bytes for code 842 (MethodHash=7db84a7a) for method System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts) +; Total bytes of code 853, prolog size 19, PerfScore 150.25, instruction count 192, allocated bytes for code 853 (MethodHash=7db84a7a) for method System.Threading.TimerQueueTimer:get_DisplayString():System.String:this (FullOpts) ```

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

MihuBot commented 2 weeks ago

Top method improvements

-74 (-9.01 % of base) - System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this ```diff ; Assembly listing for method System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]: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; 49 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def -; V02 loc0 [V02,T03] ( 9, 6 ) ref -> r15 class-hnd +; V02 loc0 [V02,T03] ( 8, 5 ) ref -> r15 class-hnd ;* V03 loc1 [V03,T21] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg ld-addr-op ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ; V17 tmp13 [V17,T30] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" -; V18 tmp14 [V18,T33] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" +; V18 tmp14 [V18,T32] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" ; V19 tmp15 [V19,T31] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ; V20 tmp16 [V20,T01] ( 6, 12 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ; V21 tmp17 [V21,T24] ( 1, 2 ) struct (32) [rbp-0x48] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" ;* V22 tmp18 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V26 tmp22 [V26,T09] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V28 tmp24 [V28,T14] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V29 tmp25 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V33 tmp29 [V33,T10] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V35 tmp31 [V35,T15] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V36 tmp32 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V40 tmp36 [V40,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V42 tmp38 [V42,T16] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V43 tmp39 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V44 tmp40 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V47 tmp43 [V47,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V49 tmp45 [V49,T17] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V50 tmp46 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V51 tmp47 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V52 tmp48 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V54 tmp50 [V54,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V56 tmp52 [V56,T18] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V57 tmp53 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V58 tmp54 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V60 tmp56 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V61 tmp57 [V61,T25] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg "Inlining Arg" ;* V62 tmp58 [V62 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V63 tmp59 [V63,T32] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V63 tmp59 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" ;* V64 tmp60 [V64 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" ;* V65 tmp61 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V66 tmp62 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V67 tmp63 [V67,T06] ( 2, 4 ) byref -> rsi single-def "Inlining Arg" ; V68 tmp64 [V68,T07] ( 2, 4 ) int -> rdx "Inlining Arg" ; V69 tmp65 [V69,T00] ( 24, 12 ) ref -> rbx single-def "field V01._name (fldOffset=0x0)" P-INDEP ;* V70 tmp66 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._name (fldOffset=0x0)" P-INDEP ;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._name (fldOffset=0x0)" P-INDEP ;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._name (fldOffset=0x0)" P-INDEP ;* V73 tmp69 [V73 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._name (fldOffset=0x0)" P-INDEP ;* V74 tmp70 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._name (fldOffset=0x0)" P-INDEP ;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._name (fldOffset=0x0)" P-INDEP ;* V76 tmp72 [V76 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._name (fldOffset=0x0)" P-INDEP ;* V77 tmp73 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._name (fldOffset=0x0)" P-INDEP ;* V78 tmp74 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._name (fldOffset=0x0)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._name (fldOffset=0x0)" P-INDEP ;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._name (fldOffset=0x0)" P-INDEP ;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._name (fldOffset=0x0)" P-INDEP ;* V82 tmp78 [V82 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._name (fldOffset=0x0)" P-INDEP ;* V83 tmp79 [V83 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._name (fldOffset=0x0)" P-INDEP ;* V84 tmp80 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "field V29._name (fldOffset=0x0)" P-INDEP ;* V85 tmp81 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "field V30._name (fldOffset=0x0)" P-INDEP ;* V86 tmp82 [V86 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._name (fldOffset=0x0)" P-INDEP ;* V87 tmp83 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._name (fldOffset=0x0)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) ref -> zero-ref single-def "field V43._name (fldOffset=0x0)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) ref -> zero-ref single-def "field V44._name (fldOffset=0x0)" P-INDEP ;* V90 tmp86 [V90 ] ( 0, 0 ) ref -> zero-ref single-def "field V50._name (fldOffset=0x0)" P-INDEP ;* V91 tmp87 [V91 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._name (fldOffset=0x0)" P-INDEP ;* V92 tmp88 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "field V57._name (fldOffset=0x0)" P-INDEP ;* V93 tmp89 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._name (fldOffset=0x0)" P-INDEP ;* V94 tmp90 [V94 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp91 [V95 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP ; V96 tmp92 [V96,T19] ( 2, 2 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP ; V97 tmp93 [V97,T22] ( 2, 2 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP ; V98 tmp94 [V98,T20] ( 2, 2 ) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP ; V99 tmp95 [V99,T23] ( 2, 2 ) int -> rdx "field V65._length (fldOffset=0x8)" P-INDEP ;* V100 tmp96 [V100 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp97 [V101 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP -; V102 tmp98 [V102,T34] ( 2, 0 ) ref -> r12 single-def "argument with side effect" -; V103 tmp99 [V103,T35] ( 2, 0 ) ref -> rcx single-def "argument with side effect" -; V104 tmp100 [V104,T36] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V102 tmp98 [V102,T33] ( 2, 0 ) ref -> r12 single-def "argument with side effect" +; V103 tmp99 [V103,T34] ( 2, 0 ) ref -> rcx single-def "argument with side effect" +;* V104 tmp100 [V104 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ; V105 cse0 [V105,T02] ( 15, 7.50) int -> r14 multi-def "CSE #02: aggressive" ; V106 cse1 [V106,T04] ( 4, 4 ) long -> rbx "CSE #10: aggressive" ; V107 cse2 [V107,T05] ( 4, 4 ) int -> r13 "CSE #11: aggressive" ; V108 cse3 [V108,T26] ( 3, 1.50) ref -> rsi "CSE #03: conservative" ; V109 cse4 [V109,T27] ( 3, 1.50) ref -> rsi "CSE #07: conservative" ; V110 cse5 [V110,T28] ( 3, 1.50) ref -> rsi "CSE #08: conservative" ; V111 cse6 [V111,T29] ( 3, 1.50) ref -> rsi "CSE #09: conservative" ; V112 cse7 [V112,T08] ( 3, 2.50) ref -> rsi "CSE #01: moderate" ; ; Lcl frame size = 40 G_M12053_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 40 lea rbp, [rsp+0x50] xor eax, eax mov qword ptr [rbp-0x48], rax vxorps xmm8, xmm8, xmm8 vmovdqa xmmword ptr [rbp-0x40], xmm8 mov qword ptr [rbp-0x30], rax mov rbx, rsi ;; size=42 bbWeight=1 PerfScore 11.58 G_M12053_IG02: mov rsi, 0xD1FFAB1E ; 'SHA256' cmp rbx, rsi jne SHORT G_M12053_IG04 ;; size=15 bbWeight=1 PerfScore 1.50 G_M12053_IG03: mov r15, 0xD1FFAB1E ; '1.2.840.10045.4.3.2' jmp G_M12053_IG19 ;; size=15 bbWeight=0.50 PerfScore 1.12 G_M12053_IG04: test rbx, rbx je SHORT G_M12053_IG05 mov r14d, dword ptr [rbx+0x08] cmp r14d, 6 je SHORT G_M12053_IG07 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M12053_IG05: mov rsi, 0xD1FFAB1E ; 'SHA384' cmp rbx, rsi jne SHORT G_M12053_IG08 ;; size=15 bbWeight=0.50 PerfScore 0.75 G_M12053_IG06: mov r15, 0xD1FFAB1E ; '1.2.840.10045.4.3.3' jmp G_M12053_IG19 ;; size=15 bbWeight=0.50 PerfScore 1.12 G_M12053_IG07: lea rdi, bword ptr [rbx+0x0C] add r14d, r14d mov edx, r14d add rsi, 12 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 SHORT G_M12053_IG05 jmp SHORT G_M12053_IG03 ;; size=32 bbWeight=0.50 PerfScore 3.88 G_M12053_IG08: test rbx, rbx je SHORT G_M12053_IG09 mov r14d, dword ptr [rbx+0x08] cmp r14d, 6 je SHORT G_M12053_IG11 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M12053_IG09: mov rsi, 0xD1FFAB1E ; 'SHA512' cmp rbx, rsi jne SHORT G_M12053_IG12 ;; size=15 bbWeight=0.50 PerfScore 0.75 G_M12053_IG10: mov r15, 0xD1FFAB1E ; '1.2.840.10045.4.3.4' jmp G_M12053_IG19 ;; size=15 bbWeight=0.50 PerfScore 1.12 G_M12053_IG11: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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 SHORT G_M12053_IG09 jmp SHORT G_M12053_IG06 ;; size=30 bbWeight=0.50 PerfScore 3.88 G_M12053_IG12: test rbx, rbx je SHORT G_M12053_IG13 mov r14d, dword ptr [rbx+0x08] cmp r14d, 6 je SHORT G_M12053_IG15 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M12053_IG13: mov rsi, 0xD1FFAB1E ; 'SHA3-256' cmp rbx, rsi jne SHORT G_M12053_IG16 ;; size=15 bbWeight=0.50 PerfScore 0.75 G_M12053_IG14: mov r15, 0xD1FFAB1E ; '2.16.840.1.101.3.4.3.10' jmp SHORT G_M12053_IG19 ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M12053_IG15: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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 SHORT G_M12053_IG13 jmp SHORT G_M12053_IG10 ;; size=30 bbWeight=0.50 PerfScore 3.88 G_M12053_IG16: test rbx, rbx je SHORT G_M12053_IG17 mov r14d, dword ptr [rbx+0x08] cmp r14d, 8 je G_M12053_IG21 ;; size=19 bbWeight=0.50 PerfScore 2.25 G_M12053_IG17: mov rsi, 0xD1FFAB1E ; 'SHA3-384' cmp rbx, rsi jne G_M12053_IG22 ;; size=19 bbWeight=0.50 PerfScore 0.75 G_M12053_IG18: mov r15, 0xD1FFAB1E ; '2.16.840.1.101.3.4.3.11' ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M12053_IG19: mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.AsnWriter call CORINFO_HELP_NEWSFAST mov r14, rax mov dword ptr [r14+0x1C], 2 xor ebx, ebx mov rdx, rbx xor r13d, r13d mov ecx, r13d lea rsi, [rbp-0x48] mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this call [rax]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this - test r15, r15 - je G_M12053_IG26 lea rsi, bword ptr [r15+0x0C] mov edx, dword ptr [r15+0x08] mov rcx, rbx mov r8d, r13d mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rsi, rbx mov edx, r13d mov rdi, r14 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, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this nop - ;; size=131 bbWeight=1 PerfScore 23.00 + ;; size=122 bbWeight=1 PerfScore 21.75 G_M12053_IG20: add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M12053_IG21: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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_M12053_IG17 jmp G_M12053_IG14 ;; size=37 bbWeight=0.50 PerfScore 3.88 G_M12053_IG22: test rbx, rbx je SHORT G_M12053_IG23 mov r14d, dword ptr [rbx+0x08] cmp r14d, 8 je SHORT G_M12053_IG24 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M12053_IG23: mov rdi, rbx mov rsi, 0xD1FFAB1E ; 'SHA3-512' mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String):ubyte call [rax]System.String:Equals(System.String,System.String):ubyte test eax, eax je SHORT G_M12053_IG25 mov r15, 0xD1FFAB1E ; '2.16.840.1.101.3.4.3.12' jmp G_M12053_IG19 ;; size=44 bbWeight=0.50 PerfScore 3.62 G_M12053_IG24: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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 SHORT G_M12053_IG23 jmp G_M12053_IG18 ;; size=33 bbWeight=0.50 PerfScore 3.88 G_M12053_IG25: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.HashAlgorithmName call CORINFO_HELP_NEWSFAST mov r15, rax lea rdi, bword ptr [r15+0x08] mov rsi, rbx call CORINFO_HELP_ASSIGN_REF mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String call [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String mov r14, rax mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov r13, rax mov edi, 0x41FB mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r12, rax mov rdi, r14 mov rsi, rbx 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 rcx, rax mov rsi, r12 mov rdx, r15 mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=137 bbWeight=0 PerfScore 0.00 -G_M12053_IG26: - mov rdi, 0xD1FFAB1E ; System.ArgumentNullException - call CORINFO_HELP_NEWSFAST - mov rbx, rax - mov edi, 0xBCA - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov rdi, rbx - mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String):this - call [rax]System.ArgumentNullException:.ctor(System.String):this - mov rdi, rbx - call CORINFO_HELP_THROW - int3 - ;; size=65 bbWeight=0 PerfScore 0.00 -; Total bytes of code 821, prolog size 39, PerfScore 82.21, instruction count 192, allocated bytes for code 821 (MethodHash=167cd0ea) for method System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) +; Total bytes of code 747, prolog size 39, PerfScore 80.96, instruction count 177, allocated bytes for code 747 (MethodHash=167cd0ea) for method System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) ```
-74 (-8.79 % of base) - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this ```diff ; Assembly listing for method System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]: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; 49 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def ;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def -; V02 loc0 [V02,T03] ( 9, 6 ) ref -> r15 class-hnd +; V02 loc0 [V02,T03] ( 8, 5 ) ref -> r15 class-hnd ;* V03 loc1 [V03,T21] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg ld-addr-op ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V05 tmp1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V06 tmp2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V08 tmp4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V09 tmp5 [V09 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V10 tmp6 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V11 tmp7 [V11 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V13 tmp9 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V14 tmp10 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" ; V17 tmp13 [V17,T30] ( 3, 0 ) ref -> r15 class-hnd exact single-def "Single-def Box Helper" -; V18 tmp14 [V18,T33] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" +; V18 tmp14 [V18,T32] ( 2, 0 ) ref -> r14 class-hnd exact single-def "impAppendStmt" ; V19 tmp15 [V19,T31] ( 3, 0 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ; V20 tmp16 [V20,T01] ( 7, 14 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" ; V21 tmp17 [V21,T24] ( 1, 2 ) struct (32) [rbp-0x48] do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" ;* V22 tmp18 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V24 tmp20 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V26 tmp22 [V26,T09] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V27 tmp23 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V28 tmp24 [V28,T14] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V29 tmp25 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V32 tmp28 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V33 tmp29 [V33,T10] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V34 tmp30 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V35 tmp31 [V35,T15] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V36 tmp32 [V36 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V37 tmp33 [V37 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V38 tmp34 [V38 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V39 tmp35 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V40 tmp36 [V40,T11] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V41 tmp37 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V42 tmp38 [V42,T16] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V43 tmp39 [V43 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V44 tmp40 [V44 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V45 tmp41 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V46 tmp42 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V47 tmp43 [V47,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V48 tmp44 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V49 tmp45 [V49,T17] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V50 tmp46 [V50 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V51 tmp47 [V51 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V52 tmp48 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ;* V53 tmp49 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V54 tmp50 [V54,T13] ( 2, 1 ) ubyte -> rax "Inline return value spill temp" ;* V55 tmp51 [V55 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" ; V56 tmp52 [V56,T18] ( 2, 2 ) byref -> rdi single-def "impAppendStmt" ;* V57 tmp53 [V57 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V58 tmp54 [V58 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" ;* V59 tmp55 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V60 tmp56 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V61 tmp57 [V61,T25] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SA] multireg-arg "Inlining Arg" ;* V62 tmp58 [V62 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" -; V63 tmp59 [V63,T32] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +;* V63 tmp59 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" ;* V64 tmp60 [V64 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" ;* V65 tmp61 [V65 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V66 tmp62 [V66 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ; V67 tmp63 [V67,T06] ( 2, 4 ) byref -> rsi single-def "Inlining Arg" ; V68 tmp64 [V68,T07] ( 2, 4 ) int -> rdx "Inlining Arg" ; V69 tmp65 [V69,T00] ( 24, 12 ) ref -> rbx single-def "field V01._name (fldOffset=0x0)" P-INDEP ;* V70 tmp66 [V70 ] ( 0, 0 ) ref -> zero-ref single-def "field V05._name (fldOffset=0x0)" P-INDEP ;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref single-def "field V06._name (fldOffset=0x0)" P-INDEP ;* V72 tmp68 [V72 ] ( 0, 0 ) ref -> zero-ref single-def "field V07._name (fldOffset=0x0)" P-INDEP ;* V73 tmp69 [V73 ] ( 0, 0 ) ref -> zero-ref single-def "field V08._name (fldOffset=0x0)" P-INDEP ;* V74 tmp70 [V74 ] ( 0, 0 ) ref -> zero-ref single-def "field V09._name (fldOffset=0x0)" P-INDEP ;* V75 tmp71 [V75 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._name (fldOffset=0x0)" P-INDEP ;* V76 tmp72 [V76 ] ( 0, 0 ) ref -> zero-ref single-def "field V11._name (fldOffset=0x0)" P-INDEP ;* V77 tmp73 [V77 ] ( 0, 0 ) ref -> zero-ref single-def "field V12._name (fldOffset=0x0)" P-INDEP ;* V78 tmp74 [V78 ] ( 0, 0 ) ref -> zero-ref single-def "field V13._name (fldOffset=0x0)" P-INDEP ;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref single-def "field V14._name (fldOffset=0x0)" P-INDEP ;* V80 tmp76 [V80 ] ( 0, 0 ) ref -> zero-ref single-def "field V15._name (fldOffset=0x0)" P-INDEP ;* V81 tmp77 [V81 ] ( 0, 0 ) ref -> zero-ref single-def "field V16._name (fldOffset=0x0)" P-INDEP ;* V82 tmp78 [V82 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._name (fldOffset=0x0)" P-INDEP ;* V83 tmp79 [V83 ] ( 0, 0 ) ref -> zero-ref single-def "field V23._name (fldOffset=0x0)" P-INDEP ;* V84 tmp80 [V84 ] ( 0, 0 ) ref -> zero-ref single-def "field V29._name (fldOffset=0x0)" P-INDEP ;* V85 tmp81 [V85 ] ( 0, 0 ) ref -> zero-ref single-def "field V30._name (fldOffset=0x0)" P-INDEP ;* V86 tmp82 [V86 ] ( 0, 0 ) ref -> zero-ref single-def "field V36._name (fldOffset=0x0)" P-INDEP ;* V87 tmp83 [V87 ] ( 0, 0 ) ref -> zero-ref single-def "field V37._name (fldOffset=0x0)" P-INDEP ;* V88 tmp84 [V88 ] ( 0, 0 ) ref -> zero-ref single-def "field V43._name (fldOffset=0x0)" P-INDEP ;* V89 tmp85 [V89 ] ( 0, 0 ) ref -> zero-ref single-def "field V44._name (fldOffset=0x0)" P-INDEP ;* V90 tmp86 [V90 ] ( 0, 0 ) ref -> zero-ref single-def "field V50._name (fldOffset=0x0)" P-INDEP ;* V91 tmp87 [V91 ] ( 0, 0 ) ref -> zero-ref single-def "field V51._name (fldOffset=0x0)" P-INDEP ;* V92 tmp88 [V92 ] ( 0, 0 ) ref -> zero-ref single-def "field V57._name (fldOffset=0x0)" P-INDEP ;* V93 tmp89 [V93 ] ( 0, 0 ) ref -> zero-ref single-def "field V58._name (fldOffset=0x0)" P-INDEP ;* V94 tmp90 [V94 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp91 [V95 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP ; V96 tmp92 [V96,T19] ( 2, 2 ) byref -> rsi single-def "field V64._reference (fldOffset=0x0)" P-INDEP ; V97 tmp93 [V97,T22] ( 2, 2 ) int -> rdx "field V64._length (fldOffset=0x8)" P-INDEP ; V98 tmp94 [V98,T20] ( 2, 2 ) byref -> rsi single-def "field V65._reference (fldOffset=0x0)" P-INDEP ; V99 tmp95 [V99,T23] ( 2, 2 ) int -> rdx "field V65._length (fldOffset=0x8)" P-INDEP ;* V100 tmp96 [V100 ] ( 0, 0 ) byref -> zero-ref "field V66._reference (fldOffset=0x0)" P-INDEP ;* V101 tmp97 [V101 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP -; V102 tmp98 [V102,T34] ( 2, 0 ) ref -> r12 single-def "argument with side effect" -; V103 tmp99 [V103,T35] ( 2, 0 ) ref -> rcx single-def "argument with side effect" -; V104 tmp100 [V104,T36] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V102 tmp98 [V102,T33] ( 2, 0 ) ref -> r12 single-def "argument with side effect" +; V103 tmp99 [V103,T34] ( 2, 0 ) ref -> rcx single-def "argument with side effect" +;* V104 tmp100 [V104 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect" ; V105 cse0 [V105,T04] ( 5, 5 ) long -> rbx "CSE #10: aggressive" ; V106 cse1 [V106,T05] ( 5, 5 ) int -> r13 "CSE #11: aggressive" ; V107 cse2 [V107,T02] ( 15, 7.50) int -> r14 multi-def "CSE #02: aggressive" ; V108 cse3 [V108,T26] ( 3, 1.50) ref -> rsi "CSE #03: conservative" ; V109 cse4 [V109,T27] ( 3, 1.50) ref -> rsi "CSE #07: conservative" ; V110 cse5 [V110,T28] ( 3, 1.50) ref -> rsi "CSE #08: conservative" ; V111 cse6 [V111,T29] ( 3, 1.50) ref -> rsi "CSE #09: conservative" ; V112 cse7 [V112,T08] ( 3, 2.50) ref -> rsi "CSE #01: moderate" ; ; Lcl frame size = 40 G_M38271_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 40 lea rbp, [rsp+0x50] xor eax, eax mov qword ptr [rbp-0x48], rax vxorps xmm8, xmm8, xmm8 vmovdqa xmmword ptr [rbp-0x40], xmm8 mov qword ptr [rbp-0x30], rax mov rbx, rsi ;; size=42 bbWeight=1 PerfScore 11.58 G_M38271_IG02: mov rsi, 0xD1FFAB1E ; 'SHA256' cmp rbx, rsi jne SHORT G_M38271_IG04 ;; size=15 bbWeight=1 PerfScore 1.50 G_M38271_IG03: mov r15, 0xD1FFAB1E ; '1.2.840.113549.1.1.11' jmp G_M38271_IG19 ;; size=15 bbWeight=0.50 PerfScore 1.12 G_M38271_IG04: test rbx, rbx je SHORT G_M38271_IG05 mov r14d, dword ptr [rbx+0x08] cmp r14d, 6 je SHORT G_M38271_IG07 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M38271_IG05: mov rsi, 0xD1FFAB1E ; 'SHA384' cmp rbx, rsi jne SHORT G_M38271_IG08 ;; size=15 bbWeight=0.50 PerfScore 0.75 G_M38271_IG06: mov r15, 0xD1FFAB1E ; '1.2.840.113549.1.1.12' jmp G_M38271_IG19 ;; size=15 bbWeight=0.50 PerfScore 1.12 G_M38271_IG07: lea rdi, bword ptr [rbx+0x0C] add r14d, r14d mov edx, r14d add rsi, 12 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 SHORT G_M38271_IG05 jmp SHORT G_M38271_IG03 ;; size=32 bbWeight=0.50 PerfScore 3.88 G_M38271_IG08: test rbx, rbx je SHORT G_M38271_IG09 mov r14d, dword ptr [rbx+0x08] cmp r14d, 6 je SHORT G_M38271_IG11 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M38271_IG09: mov rsi, 0xD1FFAB1E ; 'SHA512' cmp rbx, rsi jne SHORT G_M38271_IG12 ;; size=15 bbWeight=0.50 PerfScore 0.75 G_M38271_IG10: mov r15, 0xD1FFAB1E ; '1.2.840.113549.1.1.13' jmp G_M38271_IG19 ;; size=15 bbWeight=0.50 PerfScore 1.12 G_M38271_IG11: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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 SHORT G_M38271_IG09 jmp SHORT G_M38271_IG06 ;; size=30 bbWeight=0.50 PerfScore 3.88 G_M38271_IG12: test rbx, rbx je SHORT G_M38271_IG13 mov r14d, dword ptr [rbx+0x08] cmp r14d, 6 je SHORT G_M38271_IG15 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M38271_IG13: mov rsi, 0xD1FFAB1E ; 'SHA3-256' cmp rbx, rsi jne SHORT G_M38271_IG16 ;; size=15 bbWeight=0.50 PerfScore 0.75 G_M38271_IG14: mov r15, 0xD1FFAB1E ; '2.16.840.1.101.3.4.3.14' jmp SHORT G_M38271_IG19 ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M38271_IG15: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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 SHORT G_M38271_IG13 jmp SHORT G_M38271_IG10 ;; size=30 bbWeight=0.50 PerfScore 3.88 G_M38271_IG16: test rbx, rbx je SHORT G_M38271_IG17 mov r14d, dword ptr [rbx+0x08] cmp r14d, 8 je G_M38271_IG21 ;; size=19 bbWeight=0.50 PerfScore 2.25 G_M38271_IG17: mov rsi, 0xD1FFAB1E ; 'SHA3-384' cmp rbx, rsi jne G_M38271_IG22 ;; size=19 bbWeight=0.50 PerfScore 0.75 G_M38271_IG18: mov r15, 0xD1FFAB1E ; '2.16.840.1.101.3.4.3.15' ;; size=10 bbWeight=0.50 PerfScore 0.12 G_M38271_IG19: mov rdi, 0xD1FFAB1E ; System.Formats.Asn1.AsnWriter call CORINFO_HELP_NEWSFAST mov r14, rax mov dword ptr [r14+0x1C], 2 xor ebx, ebx mov rdx, rbx xor r13d, r13d mov ecx, r13d lea rsi, [rbp-0x48] mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this call [rax]System.Formats.Asn1.AsnWriter:PushSequence(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):System.Formats.Asn1.AsnWriter+Scope:this - test r15, r15 - je G_M38271_IG26 lea rsi, bword ptr [r15+0x0C] mov edx, dword ptr [r15+0x08] mov rcx, rbx mov r8d, r13d mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:WriteObjectIdentifier(System.ReadOnlySpan`1[ushort],System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rsi, rbx mov edx, r13d mov rdi, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this call [rax]System.Formats.Asn1.AsnWriter:WriteNull(System.Nullable`1[System.Formats.Asn1.Asn1Tag]):this mov rsi, rbx mov edx, r13d mov rdi, r14 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, r14 mov rax, 0xD1FFAB1E ; code for System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this call [rax]System.Formats.Asn1.AsnWriter:Encode():ubyte[]:this nop - ;; size=152 bbWeight=1 PerfScore 27.00 + ;; size=143 bbWeight=1 PerfScore 25.75 G_M38271_IG20: add rsp, 40 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M38271_IG21: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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_M38271_IG17 jmp G_M38271_IG14 ;; size=37 bbWeight=0.50 PerfScore 3.88 G_M38271_IG22: test rbx, rbx je SHORT G_M38271_IG23 mov r14d, dword ptr [rbx+0x08] cmp r14d, 8 je SHORT G_M38271_IG24 ;; size=15 bbWeight=0.50 PerfScore 2.25 G_M38271_IG23: mov rdi, rbx mov rsi, 0xD1FFAB1E ; 'SHA3-512' mov rax, 0xD1FFAB1E ; code for System.String:Equals(System.String,System.String):ubyte call [rax]System.String:Equals(System.String,System.String):ubyte test eax, eax je SHORT G_M38271_IG25 mov r15, 0xD1FFAB1E ; '2.16.840.1.101.3.4.3.16' jmp G_M38271_IG19 ;; size=44 bbWeight=0.50 PerfScore 3.62 G_M38271_IG24: lea rdi, bword ptr [rbx+0x0C] lea edx, [r14+r14] add rsi, 12 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 SHORT G_M38271_IG23 jmp G_M38271_IG18 ;; size=33 bbWeight=0.50 PerfScore 3.88 G_M38271_IG25: mov rdi, 0xD1FFAB1E ; System.Security.Cryptography.HashAlgorithmName call CORINFO_HELP_NEWSFAST mov r15, rax lea rdi, bword ptr [r15+0x08] mov rsi, rbx call CORINFO_HELP_ASSIGN_REF mov rax, 0xD1FFAB1E ; code for System.SR:get_Cryptography_UnknownHashAlgorithm():System.String call [rax]System.SR:get_Cryptography_UnknownHashAlgorithm():System.String mov r14, rax mov rdi, 0xD1FFAB1E ; System.ArgumentOutOfRangeException call CORINFO_HELP_NEWSFAST mov r13, rax mov edi, 0x41FB mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov r12, rax mov rdi, r14 mov rsi, rbx 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 rcx, rax mov rsi, r12 mov rdx, r15 mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this call [rax]System.ArgumentOutOfRangeException:.ctor(System.String,System.Object,System.String):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=137 bbWeight=0 PerfScore 0.00 -G_M38271_IG26: - mov rdi, 0xD1FFAB1E ; System.ArgumentNullException - call CORINFO_HELP_NEWSFAST - mov rbx, rax - mov edi, 0xBCA - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_STRCNS - mov rsi, rax - mov rdi, rbx - mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:.ctor(System.String):this - call [rax]System.ArgumentNullException:.ctor(System.String):this - mov rdi, rbx - call CORINFO_HELP_THROW - int3 - ;; size=65 bbWeight=0 PerfScore 0.00 -; Total bytes of code 842, prolog size 39, PerfScore 86.21, instruction count 197, allocated bytes for code 842 (MethodHash=d7dd6a80) for method System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) +; Total bytes of code 768, prolog size 39, PerfScore 84.96, instruction count 182, allocated bytes for code 768 (MethodHash=d7dd6a80) for method System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts) ```

Larger list of diffs: https://gist.github.com/MihuBot/384164dc4be1258945db3909b703932e

MihuBot commented 2 weeks ago

@EgorBo