Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[X64] [EgorBo] Keep this alive for classes with finalizers #463

Open
MihuBot opened this issue Jun 21, 2024 · 3 comments
Open

[X64] [EgorBo] Keep this alive for classes with finalizers #463

MihuBot opened this issue Jun 21, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jun 21, 2024

Job completed in 16 minutes.
dotnet/runtime#103813

Diffs

Diffs
Found 319 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41604177
Total bytes of diff: 41667764
Total bytes of delta: 63587 (0.15 % of base)
Total relative delta: 3136.76
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
       12118 : System.Data.Common.dasm (0.72 % of base)
       11736 : System.Private.CoreLib.dasm (0.16 % of base)
        5961 : System.Net.Sockets.dasm (2.28 % of base)
        3414 : System.Data.Odbc.dasm (1.43 % of base)
        2936 : System.Net.Security.dasm (1.26 % of base)
        2763 : System.Net.Http.dasm (0.34 % of base)
        2637 : System.Security.Cryptography.dasm (0.24 % of base)
        1781 : System.IO.Ports.dasm (3.50 % of base)
        1771 : System.Diagnostics.Process.dasm (1.80 % of base)
        1750 : System.Net.WebClient.dasm (3.10 % of base)
        1537 : System.Threading.Tasks.Dataflow.dasm (0.11 % of base)
         966 : System.DirectoryServices.dasm (1.27 % of base)
         929 : System.IO.Pipes.dasm (2.38 % of base)
         907 : System.CodeDom.dasm (0.43 % of base)
         886 : System.Management.dasm (2.48 % of base)
         868 : System.ComponentModel.TypeConverter.dasm (0.27 % of base)
         731 : System.Net.Ping.dasm (1.39 % of base)
         717 : System.DirectoryServices.Protocols.dasm (0.49 % of base)
         653 : System.Transactions.Local.dasm (0.43 % of base)
         648 : System.IO.FileSystem.Watcher.dasm (2.31 % of base)
         593 : Microsoft.VisualBasic.Core.dasm (0.11 % of base)
         558 : System.IO.Compression.dasm (0.58 % of base)
         544 : System.Data.OleDb.dasm (2.29 % of base)
         517 : System.IO.IsolatedStorage.dasm (2.27 % of base)
         388 : System.Diagnostics.DiagnosticSource.dasm (0.15 % of base)
         355 : Microsoft.Extensions.Caching.Memory.dasm (1.65 % of base)
         350 : System.ComponentModel.EventBasedAsync.dasm (8.12 % of base)
         334 : System.Net.Requests.dasm (0.23 % of base)
         325 : System.Configuration.ConfigurationManager.dasm (0.08 % of base)
         264 : System.Net.Mail.dasm (0.14 % of base)
         258 : System.ServiceProcess.ServiceController.dasm (3.85 % of base)
         232 : System.Diagnostics.PerformanceCounter.dasm (2.02 % of base)
         222 : System.Speech.dasm (0.40 % of base)
         220 : System.ComponentModel.Primitives.dasm (1.30 % of base)
         217 : System.Diagnostics.EventLog.dasm (0.97 % of base)
         208 : System.Net.Quic.dasm (0.14 % of base)
         205 : System.Private.Xml.dasm (0.00 % of base)
         198 : System.Threading.dasm (1.14 % of base)
         190 : System.Reflection.Metadata.dasm (0.03 % of base)
         182 : Microsoft.Extensions.DependencyInjection.dasm (0.23 % of base)
         178 : System.Net.WebSockets.dasm (0.15 % of base)
         155 : System.Net.NameResolution.dasm (0.39 % of base)
         132 : Microsoft.Extensions.Logging.EventSource.dasm (0.57 % of base)
         121 : Microsoft.Extensions.Hosting.WindowsServices.dasm (1.53 % of base)
         116 : System.Windows.Extensions.dasm (2.80 % of base)
         112 : System.Runtime.InteropServices.dasm (0.44 % of base)
         104 : System.Linq.Parallel.dasm (0.00 % of base)
          98 : System.Runtime.Caching.dasm (0.16 % of base)
          72 : System.IO.MemoryMappedFiles.dasm (0.34 % of base)
          59 : runincontext.dasm (0.38 % of base)
          58 : System.IO.Compression.Brotli.dasm (0.26 % of base)
          42 : System.Net.Primitives.dasm (0.05 % of base)
          38 : System.Security.Principal.Windows.dasm (0.44 % of base)
          36 : System.Net.HttpListener.dasm (0.03 % of base)
          34 : Microsoft.Win32.Registry.dasm (0.54 % of base)
          34 : System.Resources.Extensions.dasm (0.06 % of base)
          30 : System.Collections.Concurrent.dasm (0.01 % of base)
          28 : System.Threading.Tasks.Parallel.dasm (0.01 % of base)
          26 : ILCompiler.Reflection.ReadyToRun.dasm (0.01 % of base)
          25 : System.Net.NetworkInformation.dasm (0.05 % of base)
          20 : System.Text.Encoding.CodePages.dasm (0.03 % of base)

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

Top method regressions (bytes):
         210 (4.42 % of base) : System.Data.Common.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,int,ubyte):int:this (FullOpts)
         205 (4.94 % of base) : System.Data.Common.dasm - System.Data.DataTable:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
          94 (7.54 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:WriteEventString(System.String):this (FullOpts)
          90 (5.14 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:WaitForChanged(int,int):System.IO.WaitForChangedResult:this (FullOpts)
          87 (9.02 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:ResolveSatelliteAssembly(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
          84 (4.25 % of base) : System.Data.Common.dasm - System.Data.DataView:ToTable(System.String,ubyte,System.String[]):System.Data.DataTable:this (FullOpts)
          77 (4.57 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:Abort(System.Exception):this (FullOpts)
          70 (2.18 % of base) : System.Data.Common.dasm - System.Data.DataSet:ReadXmlDiffgram(System.Xml.XmlReader):this (FullOpts)
          68 (4.10 % of base) : System.Private.CoreLib.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:Init(System.String,int,int,int,int,long,byref,byref):ubyte:this (FullOpts)
          68 (2.54 % of base) : System.Data.Common.dasm - System.Data.DataTable:CloneTo(System.Data.DataTable,System.Data.DataSet,ubyte):System.Data.DataTable:this (FullOpts)
          68 (5.84 % of base) : System.Data.Common.dasm - System.Data.DataTable:set_TableName(System.String):this (FullOpts)
          65 (2.92 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:VerifyRemoteCertificate(System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.SslCertificateTrust,byref,byref,byref):ubyte:this (FullOpts)
          53 (2.67 % of base) : System.Data.Common.dasm - System.Data.DataTable:MergeRow(System.Data.DataRow,System.Data.DataRow,ubyte,System.Data.Index):System.Data.DataRow:this (FullOpts)
          52 (1.01 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:SendRequestHelper(System.DirectoryServices.Protocols.DirectoryRequest,byref):int:this (FullOpts)
          51 (6.29 % of base) : System.Data.Common.dasm - System.Data.DataColumn:Clone():System.Data.DataColumn:this (FullOpts)
          50 (3.57 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:WriteHeaderCollection(System.Net.Http.HttpRequestMessage,System.Net.Http.Headers.HttpHeaders,byref):int:this (FullOpts)
          47 (1.83 % of base) : System.Data.Common.dasm - System.Data.DataSet:Clone():System.Data.DataSet:this (FullOpts)
          47 (1.02 % of base) : System.Data.Common.dasm - System.Data.DataSet:ReadXml(System.Xml.XmlReader,int,ubyte):int:this (FullOpts)
          47 (1.25 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcCommand:ExecuteReaderObject(int,System.String,ubyte,System.Object[],ushort):System.Data.Odbc.OdbcDataReader:this (FullOpts)
          46 (6.01 % of base) : System.Data.Common.dasm - System.Data.DataTable:set_Namespace(System.String):this (FullOpts)
          45 (8.17 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:PostProgressChanged(System.ComponentModel.AsyncOperation,System.Net.WebClient+ProgressData):this (FullOpts)
          43 (3.54 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructParsedResult(long,byref,byref,byref,byref,byref):int:this (FullOpts)
          42 (6.03 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:ProcessGoAwayFrame(System.Net.Http.Http2Connection+FrameHeader):this (FullOpts)
          41 (8.60 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Container:Add(System.ComponentModel.IComponent,System.String):this (FullOpts)
          41 (4.16 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream:ProcessRead(System.IO.Ports.SerialStream+SerialStreamIORequest):int:this (FullOpts)
          40 (5.30 % of base) : System.Data.Common.dasm - System.Data.DataTable:LoadDataRow(System.Object[],int):System.Data.DataRow:this (FullOpts)
          40 (50.00 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcConnection:FlagUnsupportedStmtAttr(int):this (FullOpts)
          39 (4.03 % of base) : System.Data.Common.dasm - System.Data.DataColumn:set_ColumnName(System.String):this (FullOpts)
          39 (3.75 % of base) : System.Data.Common.dasm - System.Data.DataTable:GetRowAndColumnErrors(int,System.Collections.Hashtable,System.Collections.Hashtable):this (FullOpts)
          37 (0.78 % of base) : System.Data.Common.dasm - System.Data.DataSet:ReadXml(System.Xml.XmlReader,ubyte):int:this (FullOpts)
          37 (5.37 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.FromBase64Transform:TransformFinalBlock(ubyte[],int,int):ubyte[]:this (FullOpts)
          36 (4.63 % of base) : System.Data.Common.dasm - System.Data.DataSet:ValidateLocaleConstraint():ubyte:this (FullOpts)
          36 (12.20 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:UpdateDescriptor(System.String,System.Diagnostics.Tracing.TraceLoggingEventTypes,byref,byref):System.Diagnostics.Tracing.NameInfo:this (FullOpts)
          35 (7.53 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.Container:get_Components():System.ComponentModel.ComponentCollection:this (FullOpts)
          34 (8.42 % of base) : System.Net.Security.dasm - Microsoft.Win32.SafeHandles.SafeSslContextHandle:RemoveSession(long,long):this (FullOpts)
          33 (1.59 % of base) : System.Data.Common.dasm - System.Data.DataSet:ReadXmlSchema(System.Xml.XmlReader,ubyte):this (FullOpts)
          33 (12.45 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.NativeRuntimeEventSource:ThreadPoolMinMaxThreads(ushort,ushort,ushort,ushort,ushort):this (FullOpts)
          32 (1.50 % of base) : System.Data.Common.dasm - System.Data.DataTable:EvaluateDependentExpressions(System.Collections.Generic.List`1[System.Data.DataColumn],System.Data.DataRow,int,System.Collections.Generic.List`1[System.Data.DataRow]):this (FullOpts)
          32 (3.71 % of base) : System.Data.Common.dasm - System.Data.DataTable:ImportRow(System.Data.DataRow):this (FullOpts)
          32 (58.18 % of base) : System.Data.Odbc.dasm - System.Data.Odbc.OdbcConnection:FlagUnsupportedConnectAttr(int):this (FullOpts)
          32 (3.70 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream:IOLoop():this (FullOpts)
          32 (3.68 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:ChangeInitialWindowSize(int):this (FullOpts)
          30 (45.45 % of base) : System.Data.Common.dasm - System.Data.DataColumn:ToString():System.String:this (FullOpts)
          30 (2.79 % of base) : System.Data.Common.dasm - System.Data.DataSet:Copy():System.Data.DataSet:this (FullOpts)
          30 (8.50 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.NativeRuntimeEventSource:ThreadPoolWorkerThreadAdjustmentStats(double,double,double,double,double,double,double,double,double,ushort,ushort):this (FullOpts)
          30 (6.30 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.SafeSocketHandle:TryUnblockSocket(ubyte):ubyte:this (FullOpts)
          29 (3.62 % of base) : System.Data.Common.dasm - System.Data.DataSet:set_Namespace(System.String):this (FullOpts)
          29 (4.21 % of base) : System.Data.Common.dasm - System.Data.DataTable:ConvertToRowError(int,System.Collections.Hashtable,System.Collections.Hashtable):this (FullOpts)
          29 (7.09 % of base) : System.Data.Common.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
          29 (1.21 % of base) : System.Data.Common.dasm - System.Data.DataTable:ReadXmlDiffgram(System.Xml.XmlReader):this (FullOpts)
          29 (6.71 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.Process:Kill():this (FullOpts)
          29 (3.44 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructReference(long):System.DirectoryServices.Protocols.SearchResultReference:this (FullOpts)
          29 (7.46 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:WaitForAvailableStreamsAsync():System.Threading.Tasks.Task`1[ubyte]:this (FullOpts)
          29 (74.36 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:CanTryAddressFamily(int):ubyte:this (FullOpts)
          29 (2.27 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendTo(ubyte[],int,int,int,System.Net.EndPoint):int:this (FullOpts)
          28 (1.15 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommandBuilder:BuildWhereClause(System.Data.Common.DataTableMapping,System.Data.DataRow,System.Text.StringBuilder,System.Data.Common.DbCommand,int,ubyte):int:this (FullOpts)
          28 (0.62 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this (FullOpts)
          28 (3.37 % of base) : System.Data.Common.dasm - System.Data.DataView:AddNew():System.Data.DataRowView:this (FullOpts)
          28 (2.41 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ThrowEventSourceException(System.String,System.Exception):this (FullOpts)
          28 (2.28 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:ChangeMaxConcurrentStreams(uint):this (FullOpts)
          28 (4.90 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveMessageFromAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
          28 (6.91 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.PosixSignalRegistration:Unregister():this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[double]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[double]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[int]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[int]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[long]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[long]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[short]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[short]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.__Canon]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[System.__Canon]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.Nullable`1[int]]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[System.Nullable`1[int]]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[System.Numerics.Vector`1[float]]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[System.Numerics.Vector`1[float]]):ubyte:this (FullOpts)
          28 (11.43 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+SendAsyncSource`1[ubyte]:System.Threading.Tasks.Dataflow.ISourceBlock<TOutput>.ReserveMessage(System.Threading.Tasks.Dataflow.DataflowMessageHeader,System.Threading.Tasks.Dataflow.ITargetBlock`1[ubyte]):ubyte:this (FullOpts)
          28 (12.44 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:StartCallback():this (FullOpts)
          27 (14.21 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ValidateFieldWidthsOnInput(int[]):this (FullOpts)
          27 (90.00 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:set_IncludeSubdirectories(ubyte):this (FullOpts)
          27 (12.86 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:set_NotifyFilter(int):this (FullOpts)
          27 (55.10 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:FillForHeadersAsync(ubyte):System.Threading.Tasks.ValueTask:this (FullOpts)
          27 (13.78 % of base) : System.Net.Ping.dasm - System.Net.NetworkInformation.Ping:Finish():this (FullOpts)
          27 (12.33 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:get_MulticastLoopback():ubyte:this (FullOpts)
          27 (39.13 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEventArgs:CompletionCallback(int,int,int):this (FullOpts)
          27 (75.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.TaskExceptionHolder:Add(System.Object,ubyte):this (FullOpts)
          26 (60.47 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeBioHandle:get_IsInvalid():ubyte:this (FullOpts)
          26 (60.47 % of base) : System.Net.Security.dasm - Microsoft.Win32.SafeHandles.SafeBioHandle:get_IsInvalid():ubyte:this (FullOpts)
          26 (118.18 % of base) : System.Private.CoreLib.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_CanSeek():ubyte:this (FullOpts)
          26 (60.47 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeInteriorHandle:get_IsInvalid():ubyte:this (FullOpts)
          26 (60.47 % of base) : System.Net.Security.dasm - Microsoft.Win32.SafeHandles.SafeInteriorHandle:get_IsInvalid():ubyte:this (FullOpts)
          26 (92.86 % of base) : System.IO.Pipes.dasm - Microsoft.Win32.SafeHandles.SafePipeHandle:get_PipeSocket():System.Net.Sockets.Socket:this (FullOpts)
          26 (72.22 % of base) : System.Net.Security.dasm - Microsoft.Win32.SafeHandles.SafeSslContextHandle:Dispose(ubyte):this (FullOpts)
          26 (76.47 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeX509ChainHandle:Dispose(ubyte):this (FullOpts)
          26 (76.47 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeX509StackHandle:Dispose(ubyte):this (FullOpts)
          26 (100.00 % of base) : System.Private.CoreLib.dasm - System.ComAwareWeakReference:get_Target():System.Object:this (FullOpts)
          26 (26.26 % of base) : System.Data.Common.dasm - System.Data.DataColumn:GetAggregateValue(int[],int):System.Object:this (FullOpts)
          26 (1.53 % of base) : System.Data.Common.dasm - System.Data.DataSet:GetXmlSchemaForRemoting(System.Data.DataTable):System.String:this (FullOpts)
          26 (3.57 % of base) : System.Data.Common.dasm - System.Data.DataSet:ValidateCaseConstraint():ubyte:this (FullOpts)
          26 (35.14 % of base) : System.Data.Common.dasm - System.Data.DataView:System.ComponentModel.ITypedList.GetListName(System.ComponentModel.PropertyDescriptor[]):System.String:this (FullOpts)
          26 (113.04 % of base) : System.Data.Common.dasm - System.Data.LinqDataView:System.ComponentModel.IBindingList.get_SortProperty():System.ComponentModel.PropertyDescriptor:this (FullOpts)
          26 (0.63 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
          26 (17.57 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructResponseAsync(int,int,int,System.TimeSpan,ubyte,ubyte):System.Threading.Tasks.ValueTask`1[System.DirectoryServices.Protocols.DirectoryResponse]:this (FullOpts)
          26 (4.08 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:EndSendRequest(System.IAsyncResult):System.DirectoryServices.Protocols.DirectoryResponse:this (FullOpts)
          26 (45.61 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:GetHandler(int):System.IO.FileSystemEventHandler:this (FullOpts)
          26 (59.09 % of base) : System.IO.FileSystem.Watcher.dasm - System.IO.FileSystemWatcher:IsSuspended():ubyte:this (FullOpts)
          26 (3.44 % of base) : System.Net.Http.dasm - System.Net.Http.Http2Connection:ReleaseStream():this (FullOpts)

Top method improvements (bytes):
         -61 (-3.39 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
         -48 (-3.13 % of base) : System.Data.Common.dasm - System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo):this (FullOpts)
         -37 (-3.78 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadBits(System.Net.WebRequest,System.IO.FileStream,ubyte[],int,ubyte[],ubyte[]):ubyte[]:this (FullOpts)
         -24 (-2.44 % of base) : System.Data.Common.dasm - System.Data.DataSet:WriteXmlSchema(System.Xml.XmlWriter,int,System.Converter`2[System.Type,System.String]):this (FullOpts)
         -21 (-2.76 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataTable):int:this (FullOpts)
         -21 (-2.05 % of base) : System.Data.Common.dasm - System.Data.DataTable:WriteXml(System.String,int,ubyte):this (FullOpts)
         -16 (-3.53 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
         -16 (-3.53 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
         -14 (-1.37 % of base) : System.Data.Common.dasm - System.Data.DataSet:EnableConstraints():this (FullOpts)
         -14 (-0.86 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:BeginSendRequest(System.DirectoryServices.Protocols.DirectoryRequest,System.TimeSpan,int,System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
         -14 (-3.41 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsClientAsync(System.Net.Security.SslClientAuthenticationOptions,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts)
         -14 (-2.85 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsClientAsync(System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,int,ubyte):System.Threading.Tasks.Task:this (FullOpts)
         -14 (-3.06 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsServerAsync(System.Security.Cryptography.X509Certificates.X509Certificate,ubyte,int,ubyte):System.Threading.Tasks.Task:this (FullOpts)
         -14 (-3.16 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsServerAsync(System.Security.Cryptography.X509Certificates.X509Certificate,ubyte,ubyte):System.Threading.Tasks.Task:this (FullOpts)
         -14 (-3.12 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:BeginAuthenticateAsClient(System.Net.Security.SslClientAuthenticationOptions,System.Threading.CancellationToken,System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
         -14 (-1.56 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadDataAsync(System.Uri,System.String,ubyte[],System.Object):this (FullOpts)
         -14 (-1.53 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadValuesAsync(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object):this (FullOpts)
         -12 (-1.39 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:GenerateToken(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (FullOpts)
         -12 (-2.33 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Read(ubyte[],int,int):int:this (FullOpts)
         -12 (-2.33 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Write(ubyte[],int,int):this (FullOpts)
         -11 (-0.96 % of base) : System.Data.Common.dasm - System.Data.DataSet:GetXmlSchema():System.String:this (FullOpts)
         -11 (-1.82 % of base) : System.Data.Common.dasm - System.Data.DataSet:WriteXmlSchema(System.String,int,System.Converter`2[System.Type,System.String]):this (FullOpts)
         -10 (-3.07 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream:Write(ubyte[],int,int,int):this (FullOpts)
         -10 (-1.93 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveMessageFromAsync(System.ArraySegment`1[ubyte],System.Net.EndPoint):System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
         -10 (-5.62 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:DownloadBitsAsync(System.Net.WebRequest,System.IO.Stream,System.ComponentModel.AsyncOperation,System.Action`3[ubyte[],System.Exception,System.ComponentModel.AsyncOperation]):this (FullOpts)
          -8 (-2.00 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsServer(System.Net.Security.SslServerAuthenticationOptions):this (FullOpts)
          -7 (-1.51 % of base) : System.Data.Common.dasm - System.Data.Common.DataAdapter:CloneFrom(System.Data.Common.DataAdapter):this (FullOpts)
          -6 (-0.66 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:CompleteHandshake(System.Net.Security.SslAuthenticationOptions):this (FullOpts)
          -6 (-1.46 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:NextMessage(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (FullOpts)
          -6 (-0.85 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:AcceptAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -6 (-1.37 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ConnectAsync(System.String,int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
          -6 (-2.03 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -6 (-2.03 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -6 (-1.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this (FullOpts)
          -6 (-0.74 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadFile(System.Uri,System.String,System.String):ubyte[]:this (FullOpts)
          -5 (-0.56 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:UpdateRowExecute(System.Data.Common.RowUpdatedEventArgs,System.Data.IDbCommand,int):this (FullOpts)
          -5 (-2.56 % of base) : System.Data.Common.dasm - System.Data.DataSet:InferXmlSchema(System.String,System.String[]):this (FullOpts)
          -5 (-0.71 % of base) : System.Data.Common.dasm - System.Data.DataTable:DoRaiseNamespaceChange():this (FullOpts)
          -5 (-0.35 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:BindHelper(System.Net.NetworkCredential,ubyte):this (FullOpts)
          -5 (-2.58 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialPort:CatchErrorEvents(System.Object,System.IO.Ports.SerialErrorReceivedEventArgs):this (FullOpts)
          -5 (-2.58 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialPort:CatchPinChangedEvents(System.Object,System.IO.Ports.SerialPinChangedEventArgs):this (FullOpts)
          -4 (-1.14 % of base) : System.Data.Common.dasm - System.Data.DataTable:get_SelfNested():ubyte:this (FullOpts)
          -4 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ReportOutOfBandMessage(System.String):this (FullOpts)
          -4 (-0.89 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:WriteWithoutBufferingAsync(System.ReadOnlyMemory`1[ubyte],ubyte):System.Threading.Tasks.ValueTask:this (FullOpts)
          -4 (-0.96 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts)
          -4 (-0.97 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveMessageFromAsync(System.Memory`1[ubyte],System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
          -4 (-0.84 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendToAsync(System.ReadOnlyMemory`1[ubyte],int,System.Net.SocketAddress,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[double]:Dispose(ubyte):this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[int]:Dispose(ubyte):this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[long]:Dispose(ubyte):this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.Nullable`1[int]]:Dispose(ubyte):this (FullOpts)
          -3 (-0.70 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(int,int,System.Data.DataTable[]):int:this (FullOpts)
          -3 (-0.44 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataSet,int,int,System.String,System.Data.IDbCommand,int):int:this (FullOpts)
          -3 (-0.76 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataTable,System.Data.IDbCommand,int):int:this (FullOpts)
          -3 (-0.43 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataTable[],int,int,System.Data.IDbCommand,int):int:this (FullOpts)
          -3 (-0.55 % of base) : System.Data.Common.dasm - System.Data.DataTable:CheckNamespaceValidityForNestedParentRelations(System.String,System.Data.DataTable):this (FullOpts)
          -3 (-0.10 % of base) : System.Data.Common.dasm - System.Data.DataTable:SetDataRowWithLoadOption(System.Data.DataRow,int,int,ubyte):this (FullOpts)
          -3 (-0.50 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:Encrypt(System.ReadOnlyMemory`1[ubyte]):System.Net.Security.ProtocolToken:this (FullOpts)
          -3 (-0.56 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this (FullOpts)
          -3 (-0.60 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendPacketsAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -3 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
          -2 (-0.38 % of base) : System.Data.Common.dasm - System.Data.Common.DataAdapter:FillSchema(System.Data.DataTable,int,System.Data.IDataReader):System.Data.DataTable:this (FullOpts)
          -2 (-0.37 % of base) : System.Data.Common.dasm - System.Data.DataSet:ReadXml(System.String,int):int:this (FullOpts)
          -2 (-0.09 % of base) : System.Data.Common.dasm - System.Data.DataTable:DeserializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)
          -2 (-0.23 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:WriteToStreamAsync(System.ReadOnlyMemory`1[ubyte],ubyte):System.Threading.Tasks.ValueTask:this (FullOpts)
          -2 (-0.71 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[short]:Dispose(ubyte):this (FullOpts)
          -2 (-0.71 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[ubyte]:Dispose(ubyte):this (FullOpts)
          -1 (-0.22 % of base) : System.Data.Common.dasm - System.Data.Common.DataAdapter:FillFromReader(System.Data.DataSet,System.Data.DataTable,System.String,System.Data.ProviderBase.DataReaderContainer,int,int,System.Data.DataColumn,System.Object):int:this (FullOpts)
          -1 (-0.11 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteNonQueryAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (FullOpts)
          -1 (-0.10 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteScalarAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object]:this (FullOpts)
          -1 (-0.34 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataSet,int,int,System.String):int:this (FullOpts)
          -1 (-0.16 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:FillSchema(System.Data.DataSet,int,System.Data.IDbCommand,System.String,int):System.Data.DataTable[]:this (FullOpts)
          -1 (-0.16 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataSet,System.String):int:this (FullOpts)
          -1 (-0.14 % of base) : System.Data.Common.dasm - System.Data.DataSet:GetXml():System.String:this (FullOpts)
          -1 (-0.13 % of base) : System.Data.Common.dasm - System.Data.DataSet:InferSchema(System.Xml.XmlDocument,System.String[],int):this (FullOpts)
          -1 (-0.17 % of base) : System.Data.Common.dasm - System.Data.DataSet:Merge(System.Data.DataRow[],ubyte,int):this (FullOpts)
          -1 (-0.16 % of base) : System.Data.Common.dasm - System.Data.DataTable:CheckNamespaceValidityForNestedRelations(System.String):this (FullOpts)
          -1 (-0.18 % of base) : System.Data.Common.dasm - System.Data.DataView:SetIndex2(System.String,int,System.Data.IFilter,ubyte):this (FullOpts)
          -1 (-0.66 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.Process:GetWorkingSetLimits(byref,byref):this (FullOpts)
          -1 (-0.85 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessThread:get_PriorityLevel():int:this (FullOpts)
          -1 (-0.30 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],int,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.19 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.SocketAddress,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveMessageFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
          -1 (-0.26 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendToAsync(System.ReadOnlyMemory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.21 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromSocketAddressAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendToAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)

Top method regressions (percentages):
           9 (900.00 % of base) : Microsoft.Extensions.Caching.Memory.dasm - Microsoft.Extensions.Caching.Memory.MemoryCache+Stats:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:EnsureThreadPoolBindingInitialized():this (FullOpts)
           9 (900.00 % of base) : System.CodeDom.dasm - System.CodeDom.Compiler.CodeDomProvider:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.ComponentModel.EventBasedAsync.dasm - System.ComponentModel.BackgroundWorker:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.ComponentModel.Primitives.dasm - System.ComponentModel.Component:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.MarshalByValueComponent:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.Common.DbConnection:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:OnRowUpdated(System.Data.Common.RowUpdatedEventArgs):this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:OnRowUpdating(System.Data.Common.RowUpdatingEventArgs):this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.DataSet:InitializeDerivedDataSet():this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.DataSet:OnRemoveRelation(System.Data.DataRelation):this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.DataSet:OnRemoveTable(System.Data.DataTable):this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.DataTable:OnRemoveColumn(System.Data.DataColumn):this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.DataViewManager:System.ComponentModel.IBindingList.AddIndex(System.ComponentModel.PropertyDescriptor):this (FullOpts)
           9 (900.00 % of base) : System.Data.Common.dasm - System.Data.DataViewManager:System.ComponentModel.IBindingList.RemoveIndex(System.ComponentModel.PropertyDescriptor):this (FullOpts)
           9 (900.00 % of base) : System.Data.OleDb.dasm - System.Data.OleDb.OleDbCommand:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Data.OleDb.dasm - System.Data.OleDb.OleDbConnection:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.EventLog.dasm - System.Diagnostics.EventLog:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceCounter:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSet:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSet:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSet:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSetInstance:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSetInstance:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.PerformanceCounter.dasm - System.Diagnostics.PerformanceData.CounterSetInstanceCounterDataSet:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessThread:ResetIdealProcessor():this (FullOpts)
           9 (900.00 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessThread:set_IdealProcessor(int):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventProvider:OnControllerCommand(int,System.Collections.Generic.IDictionary`2[System.String,System.String],int):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:OnEventCommand(System.Diagnostics.Tracing.EventCommandEventArgs):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.AdamInstance:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.DirectoryServer:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.DirectoryServer:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.DirectoryServer:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.DomainController:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ReplicationConnection:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ReplicationConnection:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.ActiveDirectory.ReplicationConnection:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.DirectoryEntry:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.DirectorySearcher:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.SearchResultCollection:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.SearchResultCollection:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.DirectoryServices.dasm - System.DirectoryServices.SearchResultCollection:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[double]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[double]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[int]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[int]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[long]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[long]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[short]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[short]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.Nullable`1[int]]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.Nullable`1[int]]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.Numerics.Vector`1[float]]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.Numerics.Vector`1[float]]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[ubyte]:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.IO.Enumeration.FileSystemEnumerator`1[ubyte]:OnDirectoryFinished(System.ReadOnlySpan`1[ushort]):this (FullOpts)
           9 (900.00 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream:set_DiscardNull(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream:set_ParityReplace(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.LocalDataStoreSlot:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Management.dasm - System.Management.ManagementBaseObject:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Management.dasm - System.Management.ManagementObject:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Management.dasm - System.Management.ManagementObjectCollection:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Management.dasm - System.Management.ManagementObjectCollection:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Management.dasm - System.Management.ManagementObjectCollection+ManagementObjectEnumerator:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Management.dasm - System.Management.ManagementObjectCollection+ManagementObjectEnumerator:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Flush():this (FullOpts)
           9 (900.00 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:set_UseOnlyOverlappedIO(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.SocketAsyncEventArgs:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:add_WriteStreamClosed(System.Net.WriteStreamClosedEventHandler):this (FullOpts)
           9 (900.00 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:OnWriteStreamClosed(System.Net.WriteStreamClosedEventArgs):this (FullOpts)
           9 (900.00 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:remove_WriteStreamClosed(System.Net.WriteStreamClosedEventHandler):this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicResolver+DestroyScout:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Internal.CriticalDisposableObject:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.LoaderAllocatorScout:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.ConditionalWeakTable`2+Enumerator[System.__Canon,System.__Canon]:Reset():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.ConstrainedExecution.CriticalFinalizerObject:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.ConstrainedExecution.CriticalFinalizerObject:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ToBase64Transform:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.ToBase64Transform:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.ServiceProcess.ServiceController.dasm - System.ServiceProcess.ServiceBase:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.ServiceProcess.ServiceController.dasm - System.ServiceProcess.ServiceController:Dispose(ubyte):this (FullOpts)
           9 (900.00 % of base) : System.Speech.dasm - System.Speech.Synthesis.SpeechSynthesizer:Dispose():this (FullOpts)
           9 (900.00 % of base) : System.Speech.dasm - System.Speech.Synthesis.SpeechSynthesizer:Finalize():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:.ctor():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:DisableComObjectEagerCleanup():this (FullOpts)
           9 (900.00 % of base) : System.Private.CoreLib.dasm - System.WeakReference`1[System.__Canon]:Finalize():this (FullOpts)
           9 (900.00 % of base) : runincontext.dasm - TestAssemblyLoadContextBase:Cleanup():this (FullOpts)
          21 (420.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:get_IsBackground():ubyte:this (FullOpts)
          21 (420.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:get_Priority():int:this (FullOpts)
          21 (420.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:get_ThreadState():int:this (FullOpts)
           9 (300.00 % of base) : System.Private.CoreLib.dasm - Microsoft.Win32.SafeHandles.SafeFileHandle:get_ThreadPoolBinding():System.Threading.ThreadPoolBoundHandle:this (FullOpts)
           9 (300.00 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeNCryptHandle:ReleaseHandle():ubyte:this (FullOpts)
           9 (300.00 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeNCryptKeyHandle:ReleaseNativeHandle():ubyte:this (FullOpts)
           9 (300.00 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeNCryptProviderHandle:ReleaseNativeHandle():ubyte:this (FullOpts)
           9 (300.00 % of base) : System.Security.Cryptography.dasm - Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle:ReleaseNativeHandle():ubyte:this (FullOpts)
           9 (300.00 % of base) : System.CodeDom.dasm - System.CodeDom.Compiler.CodeDomProvider:CreateParser():System.CodeDom.Compiler.ICodeParser:this (FullOpts)

Top method improvements (percentages):
         -10 (-5.62 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:DownloadBitsAsync(System.Net.WebRequest,System.IO.Stream,System.ComponentModel.AsyncOperation,System.Action`3[ubyte[],System.Exception,System.ComponentModel.AsyncOperation]):this (FullOpts)
         -37 (-3.78 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadBits(System.Net.WebRequest,System.IO.FileStream,ubyte[],int,ubyte[],ubyte[]):ubyte[]:this (FullOpts)
         -16 (-3.53 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Read(System.Span`1[ubyte]):int:this (FullOpts)
         -16 (-3.53 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Write(System.ReadOnlySpan`1[ubyte]):this (FullOpts)
         -14 (-3.41 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsClientAsync(System.Net.Security.SslClientAuthenticationOptions,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts)
         -61 (-3.39 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:.ctor(System.Net.Sockets.SafeSocketHandle,ubyte):this (FullOpts)
         -14 (-3.16 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsServerAsync(System.Security.Cryptography.X509Certificates.X509Certificate,ubyte,ubyte):System.Threading.Tasks.Task:this (FullOpts)
         -48 (-3.13 % of base) : System.Data.Common.dasm - System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo):this (FullOpts)
         -14 (-3.12 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:BeginAuthenticateAsClient(System.Net.Security.SslClientAuthenticationOptions,System.Threading.CancellationToken,System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
         -10 (-3.07 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialStream:Write(ubyte[],int,int,int):this (FullOpts)
         -14 (-3.06 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsServerAsync(System.Security.Cryptography.X509Certificates.X509Certificate,ubyte,int,ubyte):System.Threading.Tasks.Task:this (FullOpts)
         -14 (-2.85 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsClientAsync(System.String,System.Security.Cryptography.X509Certificates.X509CertificateCollection,int,ubyte):System.Threading.Tasks.Task:this (FullOpts)
         -21 (-2.76 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataTable):int:this (FullOpts)
          -5 (-2.58 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialPort:CatchErrorEvents(System.Object,System.IO.Ports.SerialErrorReceivedEventArgs):this (FullOpts)
          -5 (-2.58 % of base) : System.IO.Ports.dasm - System.IO.Ports.SerialPort:CatchPinChangedEvents(System.Object,System.IO.Ports.SerialPinChangedEventArgs):this (FullOpts)
          -5 (-2.56 % of base) : System.Data.Common.dasm - System.Data.DataSet:InferXmlSchema(System.String,System.String[]):this (FullOpts)
         -24 (-2.44 % of base) : System.Data.Common.dasm - System.Data.DataSet:WriteXmlSchema(System.Xml.XmlWriter,int,System.Converter`2[System.Type,System.String]):this (FullOpts)
         -12 (-2.33 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Read(ubyte[],int,int):int:this (FullOpts)
         -12 (-2.33 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.NetworkStream:Write(ubyte[],int,int):this (FullOpts)
         -21 (-2.05 % of base) : System.Data.Common.dasm - System.Data.DataTable:WriteXml(System.String,int,ubyte):this (FullOpts)
          -6 (-2.03 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -6 (-2.03 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendAsync(System.ReadOnlyMemory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -8 (-2.00 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:AuthenticateAsServer(System.Net.Security.SslServerAuthenticationOptions):this (FullOpts)
         -10 (-1.93 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveMessageFromAsync(System.ArraySegment`1[ubyte],System.Net.EndPoint):System.Threading.Tasks.Task`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
         -11 (-1.82 % of base) : System.Data.Common.dasm - System.Data.DataSet:WriteXmlSchema(System.String,int,System.Converter`2[System.Type,System.String]):this (FullOpts)
          -4 (-1.63 % of base) : System.Private.CoreLib.dasm - System.Diagnostics.Tracing.EventSource:ReportOutOfBandMessage(System.String):this (FullOpts)
         -14 (-1.56 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadDataAsync(System.Uri,System.String,ubyte[],System.Object):this (FullOpts)
         -14 (-1.53 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadValuesAsync(System.Uri,System.String,System.Collections.Specialized.NameValueCollection,System.Object):this (FullOpts)
          -7 (-1.51 % of base) : System.Data.Common.dasm - System.Data.Common.DataAdapter:CloneFrom(System.Data.Common.DataAdapter):this (FullOpts)
          -6 (-1.46 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:NextMessage(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[double]:Dispose(ubyte):this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[int]:Dispose(ubyte):this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[long]:Dispose(ubyte):this (FullOpts)
          -4 (-1.42 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[System.Nullable`1[int]]:Dispose(ubyte):this (FullOpts)
         -12 (-1.39 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:GenerateToken(System.ReadOnlySpan`1[ubyte]):System.Net.Security.ProtocolToken:this (FullOpts)
         -14 (-1.37 % of base) : System.Data.Common.dasm - System.Data.DataSet:EnableConstraints():this (FullOpts)
          -6 (-1.37 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ConnectAsync(System.String,int,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask:this (FullOpts)
          -6 (-1.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this (FullOpts)
          -4 (-1.14 % of base) : System.Data.Common.dasm - System.Data.DataTable:get_SelfNested():ubyte:this (FullOpts)
          -4 (-0.97 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveMessageFromAsync(System.Memory`1[ubyte],System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
         -11 (-0.96 % of base) : System.Data.Common.dasm - System.Data.DataSet:GetXmlSchema():System.String:this (FullOpts)
          -4 (-0.96 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:WriteAsync(ubyte[],int,int,System.Threading.CancellationToken):System.Threading.Tasks.Task:this (FullOpts)
          -4 (-0.89 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:WriteWithoutBufferingAsync(System.ReadOnlyMemory`1[ubyte],ubyte):System.Threading.Tasks.ValueTask:this (FullOpts)
         -14 (-0.86 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:BeginSendRequest(System.DirectoryServices.Protocols.DirectoryRequest,System.TimeSpan,int,System.AsyncCallback,System.Object):System.IAsyncResult:this (FullOpts)
          -6 (-0.85 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:AcceptAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -1 (-0.85 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.ProcessThread:get_PriorityLevel():int:this (FullOpts)
          -4 (-0.84 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendToAsync(System.ReadOnlyMemory`1[ubyte],int,System.Net.SocketAddress,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -3 (-0.76 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataTable,System.Data.IDbCommand,int):int:this (FullOpts)
          -6 (-0.74 % of base) : System.Net.WebClient.dasm - System.Net.WebClient:UploadFile(System.Uri,System.String,System.String):ubyte[]:this (FullOpts)
          -2 (-0.71 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[ubyte]:Dispose(ubyte):this (FullOpts)
          -5 (-0.71 % of base) : System.Data.Common.dasm - System.Data.DataTable:DoRaiseNamespaceChange():this (FullOpts)
          -2 (-0.71 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadLocal`1[short]:Dispose(ubyte):this (FullOpts)
          -3 (-0.70 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(int,int,System.Data.DataTable[]):int:this (FullOpts)
          -6 (-0.66 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:CompleteHandshake(System.Net.Security.SslAuthenticationOptions):this (FullOpts)
          -1 (-0.66 % of base) : System.Diagnostics.Process.dasm - System.Diagnostics.Process:GetWorkingSetLimits(byref,byref):this (FullOpts)
          -3 (-0.60 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendPacketsAsync(System.Net.Sockets.SocketAsyncEventArgs,System.Threading.CancellationToken):ubyte:this (FullOpts)
          -5 (-0.56 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:UpdateRowExecute(System.Data.Common.RowUpdatedEventArgs,System.Data.IDbCommand,int):this (FullOpts)
          -3 (-0.56 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveFromResult]:this (FullOpts)
          -3 (-0.55 % of base) : System.Data.Common.dasm - System.Data.DataTable:CheckNamespaceValidityForNestedParentRelations(System.String,System.Data.DataTable):this (FullOpts)
          -3 (-0.50 % of base) : System.Net.Security.dasm - System.Net.Security.SslStream:Encrypt(System.ReadOnlyMemory`1[ubyte]):System.Net.Security.ProtocolToken:this (FullOpts)
          -3 (-0.44 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataSet,int,int,System.String,System.Data.IDbCommand,int):int:this (FullOpts)
          -3 (-0.43 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataTable[],int,int,System.Data.IDbCommand,int):int:this (FullOpts)
          -2 (-0.38 % of base) : System.Data.Common.dasm - System.Data.Common.DataAdapter:FillSchema(System.Data.DataTable,int,System.Data.IDataReader):System.Data.DataTable:this (FullOpts)
          -2 (-0.37 % of base) : System.Data.Common.dasm - System.Data.DataSet:ReadXml(System.String,int):int:this (FullOpts)
          -3 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Runtime.Loader.AssemblyLoadContext:GetFirstResolvedAssemblyFromResolvingEvent(System.Reflection.AssemblyName):System.Reflection.Assembly:this (FullOpts)
          -5 (-0.35 % of base) : System.DirectoryServices.Protocols.dasm - System.DirectoryServices.Protocols.LdapConnection:BindHelper(System.Net.NetworkCredential,ubyte):this (FullOpts)
          -1 (-0.34 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Fill(System.Data.DataSet,int,int,System.String):int:this (FullOpts)
          -1 (-0.30 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveAsync(System.Memory`1[ubyte],int,ubyte,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.26 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:SendToAsync(System.ReadOnlyMemory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveMessageFromAsync(System.Memory`1[ubyte],int,System.Net.EndPoint,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[System.Net.Sockets.SocketReceiveMessageFromResult]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ReceiveFromSocketAddressAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.25 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:SendToAsync(System.Net.Sockets.Socket,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -2 (-0.23 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnection:WriteToStreamAsync(System.ReadOnlyMemory`1[ubyte],ubyte):System.Threading.Tasks.ValueTask:this (FullOpts)
          -1 (-0.22 % of base) : System.Data.Common.dasm - System.Data.Common.DataAdapter:FillFromReader(System.Data.DataSet,System.Data.DataTable,System.String,System.Data.ProviderBase.DataReaderContainer,int,int,System.Data.DataColumn,System.Object):int:this (FullOpts)
          -1 (-0.21 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket+AwaitableSocketAsyncEventArgs:ConnectAsync(System.Net.Sockets.Socket):System.Threading.Tasks.ValueTask:this (FullOpts)
          -1 (-0.19 % of base) : System.Net.Sockets.dasm - System.Net.Sockets.Socket:ReceiveFromAsync(System.Memory`1[ubyte],int,System.Net.SocketAddress,System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (FullOpts)
          -1 (-0.18 % of base) : System.Data.Common.dasm - System.Data.DataView:SetIndex2(System.String,int,System.Data.IFilter,ubyte):this (FullOpts)
          -1 (-0.17 % of base) : System.Data.Common.dasm - System.Data.DataSet:Merge(System.Data.DataRow[],ubyte,int):this (FullOpts)
          -1 (-0.16 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataSet,System.String):int:this (FullOpts)
          -1 (-0.16 % of base) : System.Data.Common.dasm - System.Data.DataTable:CheckNamespaceValidityForNestedRelations(System.String):this (FullOpts)
          -1 (-0.16 % of base) : System.Data.Common.dasm - System.Data.Common.DbDataAdapter:FillSchema(System.Data.DataSet,int,System.Data.IDbCommand,System.String,int):System.Data.DataTable[]:this (FullOpts)
          -1 (-0.14 % of base) : System.Data.Common.dasm - System.Data.DataSet:GetXml():System.String:this (FullOpts)
          -1 (-0.13 % of base) : System.Data.Common.dasm - System.Data.DataSet:InferSchema(System.Xml.XmlDocument,System.String[],int):this (FullOpts)
          -1 (-0.11 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteNonQueryAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[int]:this (FullOpts)
          -3 (-0.10 % of base) : System.Data.Common.dasm - System.Data.DataTable:SetDataRowWithLoadOption(System.Data.DataRow,int,int,ubyte):this (FullOpts)
          -1 (-0.10 % of base) : System.Data.Common.dasm - System.Data.Common.DbCommand:ExecuteScalarAsync(System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object]:this (FullOpts)
          -2 (-0.09 % of base) : System.Data.Common.dasm - System.Data.DataTable:DeserializeConstraints(System.Runtime.Serialization.SerializationInfo,int,ubyte):this (FullOpts)

6215 total methods with Code Size differences (89 improved, 6126 regressed), 245769 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 21, 2024

Top method regressions

94 (7.54 % of base) - System.Diagnostics.Tracing.EventSource:WriteEventString(System.String):this
 ; Assembly listing for method System.Diagnostics.Tracing.EventSource:WriteEventString(System.String):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 17 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 22, 13   )     ref  ->  rbx         this class-hnd single-def <System.Diagnostics.Tracing.EventSource>
-;  V01 arg1         [V01,T01] (  6,  4   )     ref  ->  r15         class-hnd single-def <System.String>
+;  V00 this         [V00,T00] ( 22, 13   )     ref  ->  [rbp-0x90]  this class-hnd EH-live single-def <System.Diagnostics.Tracing.EventSource>
+;  V01 arg1         [V01,T01] (  6,  4   )     ref  ->  rbx         class-hnd single-def <System.String>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;* V03 loc1         [V03    ] (  0,  0   )    long  ->  zero-ref   
 ;  V04 loc2         [V04    ] (  5,  2.50)  struct (24) [rbp-0x40]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventSourceOptions>
-;  V05 loc3         [V05,T31] (  2,  1   )     ref  ->  r14         class-hnd exact single-def <System.Diagnostics.Tracing.TraceLoggingEventTypes>
+;  V05 loc3         [V05,T31] (  2,  1   )     ref  ->  r15         class-hnd exact single-def <System.Diagnostics.Tracing.TraceLoggingEventTypes>
 ;* V06 loc4         [V06    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] ld-addr-op <System.Diagnostics.Tracing.EventSourceOptions>
 ;* V07 loc5         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Diagnostics.Tracing.ManifestBuilder>
 ;* V08 loc6         [V08    ] (  0,  0   )    long  ->  zero-ref   
 ;  V09 loc7         [V09    ] (  3,  1.50)   byref  ->  [rbp-0x48]  must-init pinned
 ;  V10 loc8         [V10    ] (  3,  1.50)  struct (16) [rbp-0x58]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventDescriptor>
 ;  V11 loc9         [V11    ] (  6,  3   )  struct (16) [rbp-0x68]  do-not-enreg[XS] addr-exposed ld-addr-op <System.Diagnostics.Tracing.EventProvider+EventData>
-;  V12 loc10        [V12,T30] (  4,  1   )     ref  ->  [rbp-0x90]  class-hnd EH-live spill-single-def <System.Object>
+;  V12 loc10        [V12,T30] (  4,  1   )     ref  ->  [rbp-0x98]  class-hnd EH-live spill-single-def <System.Object>
 ;  V13 loc11        [V13    ] (  5,  2   )   ubyte  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed ld-addr-op
 ;* V14 loc12        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V15 loc13        [V15    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op <System.Diagnostics.Tracing.EventParameterInfo>
 ;  V16 loc14        [V16,T05] (  7,  3.50)     ref  ->  rax         class-hnd single-def <ubyte[]>
 ;* V17 loc15        [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;  V18 loc16        [V18,T25] (  3,  1.50)    long  ->  rsi        
 ;  V19 loc17        [V19    ] (  2,  1   )     ref  ->  [rbp-0x78]  must-init pinned class-hnd <ubyte[]>
 ;  V20 OutArgs      [V20    ] (  1,  1   )  struct (16) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V21 tmp1         [V21,T26] (  3,  1.50)    long  ->  r14        
-;  V22 tmp2         [V22,T06] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.Diagnostics.Tracing.EventSource+OverrideEventProvider>
+;  V21 tmp1         [V21,T26] (  3,  1.50)    long  ->  r15        
+;  V22 tmp2         [V22,T06] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <System.Diagnostics.Tracing.EventSource+OverrideEventProvider>
 ;* V23 tmp3         [V23    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V24 tmp4         [V24,T07] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "dup spill" <System.Diagnostics.Tracing.EventParameterInfo[]>
-;  V25 tmp5         [V25,T14] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
+;  V25 tmp5         [V25,T14] (  2,  2   )     ref  ->  rbx         class-hnd exact single-def "impAppendStmt" <System.Diagnostics.Tracing.EventPipeMetadataGenerator>
 ;  V26 tmp6         [V26,T27] (  3,  1.50)     int  ->  rdi        
 ;  V27 tmp7         [V27,T15] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.Object>
-;  V28 tmp8         [V28,T08] (  3,  3   )   byref  ->  rdi         single-def "impAppendStmt"
-;  V29 tmp9         [V29,T16] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V28 tmp8         [V28,T08] (  3,  3   )   byref  ->  rdx         single-def "impAppendStmt"
+;  V29 tmp9         [V29,T16] (  2,  2   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.String>
 ;  V30 tmp10        [V30,T13] (  3,  3   )  struct (16) [rbp-0x88]  do-not-enreg[SFA] multireg-arg "impAppendStmt" <System.Guid>
-;  V31 tmp11        [V31,T02] (  6,  6   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.ManifestBuilder>
+;  V31 tmp11        [V31,T02] (  6,  6   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.ManifestBuilder>
 ;  V32 tmp12        [V32,T03] (  5,  5   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <System.Diagnostics.Tracing.EventAttribute>
-;  V33 tmp13        [V33,T09] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "dup spill" <System.Object[]>
+;  V33 tmp13        [V33,T09] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "dup spill" <System.Object[]>
 ;* V34 tmp14        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V35 tmp15        [V35,T28] (  3,  1.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp15        [V35,T28] (  3,  1.50)     int  ->  rbx         "Inline stloc first use temp"
 ;* V36 tmp16        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V37 tmp17        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Diagnostics.Tracing.EventSource+OverrideEventProvider>
 ;* V38 tmp18        [V38    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
-;  V39 tmp19        [V39,T29] (  3,  1.50)     int  ->  rbx         "Inline stloc first use temp"
+;  V39 tmp19        [V39,T29] (  3,  1.50)     int  ->  r15         "Inline stloc first use temp"
 ;  V40 tmp20        [V40    ] (  4,  2   )    long  ->  [rbp-0x68]  do-not-enreg[X] addr-exposed "field V11.Ptr (fldOffset=0x0)" P-DEP
 ;  V41 tmp21        [V41    ] (  4,  2   )     int  ->  [rbp-0x60]  do-not-enreg[X] addr-exposed "field V11.Size (fldOffset=0x8)" P-DEP
 ;  V42 tmp22        [V42    ] (  4,  2   )     int  ->  [rbp-0x5C]  do-not-enreg[X] addr-exposed "field V11.Reserved (fldOffset=0xc)" P-DEP
 ;* V43 tmp23        [V43,T33] (  0,  0   )     ref  ->  zero-ref    single-def "field V15.ParameterName (fldOffset=0x0)" P-INDEP
 ;* V44 tmp24        [V44,T34] (  0,  0   )     ref  ->  zero-ref    single-def "field V15.ParameterType (fldOffset=0x8)" P-INDEP
 ;* V45 tmp25        [V45,T35] (  0,  0   )     ref  ->  zero-ref    single-def "field V15.TypeInfo (fldOffset=0x10)" P-INDEP
 ;* V46 tmp26        [V46    ] (  0,  0   )    long  ->  zero-ref    "V06.[000..008)"
 ;* V47 tmp27        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "V06.[016..017)"
 ;* V48 tmp28        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "V06.[018..019)"
 ;  V49 tmp29        [V49,T17] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V50 tmp30        [V50,T18] (  2,  2   )    long  ->  r14         "Cast away GC"
-;  V51 tmp31        [V51,T10] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V50 tmp30        [V50,T18] (  2,  2   )    long  ->  r15         "Cast away GC"
+;  V51 tmp31        [V51,T10] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
 ;  V52 tmp32        [V52,T04] (  4,  4   )   byref  ->  rdi         single-def "BlockOp address local"
 ;  V53 tmp33        [V53,T19] (  2,  2   )    long  ->  rsi         "Cast away GC"
 ;  V54 tmp34        [V54,T11] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V55 tmp35        [V55,T12] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
+;  V55 tmp35        [V55,T12] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
 ;  V56 PSPSym       [V56,T32] (  1,  1   )    long  ->  [rbp-0xA0]  do-not-enreg[V] "PSPSym"
-;  V57 cse0         [V57,T24] (  3,  1.50)     ref  ->  r14         "CSE #01: moderate"
+;  V57 cse0         [V57,T24] (  3,  1.50)     ref  ->  r15         "CSE #01: moderate"
 ;  V58 rat0         [V58,T20] (  2,  2   )    long  ->  rax         "TLS field access"
 ;  V59 rat1         [V59,T21] (  2,  2   )    long  ->  rax         "TLS access"
 ;  V60 rat2         [V60,T22] (  2,  2   )    long  ->  rax         "TLS field access"
 ;  V61 rat3         [V61,T23] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 136
+; Lcl frame size = 144
 
 G_M12525_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       sub      rsp, 136
+       sub      rsp, 144
        lea      rbp, [rsp+0xB0]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
        mov      qword ptr [rbp-0x78], rax
        mov      qword ptr [rbp-0xA0], rsp
-       mov      rbx, rdi
-       mov      r15, rsi
-						;; size=48 bbWeight=1 PerfScore 10.50
+       mov      qword ptr [rbp-0x28], rdi
+       mov      gword ptr [rbp-0x90], rdi
+       mov      rbx, rsi
+						;; size=54 bbWeight=1 PerfScore 11.25
 G_M12525_IG02:
-       cmp      gword ptr [rbx+0x30], 0
+       cmp      gword ptr [rdi+0x30], 0
        sete     al
        movzx    rax, al
-       cmp      gword ptr [rbx+0x40], 0
+       cmp      gword ptr [rdi+0x40], 0
        sete     cl
        movzx    rcx, cl
        test     eax, ecx
        je       SHORT G_M12525_IG04
 						;; size=26 bbWeight=1 PerfScore 9.75
 G_M12525_IG03:
-       add      rsp, 136
+       add      rsp, 144
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=18 bbWeight=0.50 PerfScore 2.12
+						;; size=16 bbWeight=0.50 PerfScore 1.88
 G_M12525_IG04:
-       test     byte  ptr [rbx+0x94], 8
+       test     byte  ptr [rdi+0x94], 8
        je       G_M12525_IG06
        vxorps   xmm0, xmm0, xmm0
        vmovdqu  xmmword ptr [rbp-0x40], xmm0
        vmovdqu  xmmword ptr [rbp-0x38], xmm0
        mov      qword ptr [rbp-0x40], -1
        mov      byte  ptr [rbp-0x30], 0
        mov      byte  ptr [rbp-0x2E], 5
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:<WriteEventString>g__GetTrimSafeTraceLoggingEventTypes|80_0():System.Diagnostics.Tracing.TraceLoggingEventTypes
        call     [rax]System.Diagnostics.Tracing.EventSource:<WriteEventString>g__GetTrimSafeTraceLoggingEventTypes|80_0():System.Diagnostics.Tracing.TraceLoggingEventTypes
-       mov      r14, rax
+       mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; System.Object[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r13, rax
-       lea      rdi, bword ptr [r13+0x10]
-       mov      rsi, r15
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x10]
+       mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      gword ptr [rsp], r13
+       mov      gword ptr [rsp], r14
        lea      rdx, [rbp-0x40]
-       mov      rdi, rbx
-       mov      rcx, r14
+       mov      rdi, gword ptr [rbp-0x90]
+       mov      rcx, r15
        mov      rsi, 0xD1FFAB1E      ; 'EventSourceMessage'
        xor      r8d, r8d
        xor      r9d, r9d
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:WriteMultiMergeInner(System.String,byref,System.Diagnostics.Tracing.TraceLoggingEventTypes,ulong,ulong,System.Object[]):this
        call     [rax]System.Diagnostics.Tracing.EventSource:WriteMultiMergeInner(System.String,byref,System.Diagnostics.Tracing.TraceLoggingEventTypes,ulong,ulong,System.Object[]):this
        nop      
-						;; size=136 bbWeight=0.50 PerfScore 11.29
+						;; size=140 bbWeight=0.50 PerfScore 11.67
 G_M12525_IG05:
-       add      rsp, 136
+       add      rsp, 144
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=18 bbWeight=0.50 PerfScore 2.12
+						;; size=16 bbWeight=0.50 PerfScore 1.88
 G_M12525_IG06:
-       cmp      gword ptr [rbx+0x18], 0
-       jne      G_M12525_IG07
-       cmp      byte  ptr [rbx+0x9F], 1
-       jne      G_M12525_IG07
-       mov      r14, gword ptr [rbx+0x08]
-       mov      r13, r14
-       vmovups  xmm0, xmmword ptr [rbx+0xA0]
+       mov      rdi, gword ptr [rbp-0x90]
+       cmp      gword ptr [rdi+0x18], 0
+       jne      G_M12525_IG08
+       cmp      byte  ptr [rdi+0x9F], 1
+       jne      G_M12525_IG08
+       mov      r15, gword ptr [rdi+0x08]
+       mov      r14, r15
+       vmovups  xmm0, xmmword ptr [rdi+0xA0]
        vmovups  xmmword ptr [rbp-0x88], xmm0
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Tracing.ManifestBuilder
        call     CORINFO_HELP_NEWSFAST
-       mov      r12, rax
+       mov      r13, rax
        xor      edx, edx
        mov      dword ptr [rsp], edx
        mov      rdx, qword ptr [rbp-0x88]
        mov      rcx, qword ptr [rbp-0x80]
-       mov      r8, r14
-       mov      rdi, r12
-       mov      rsi, r13
+       mov      r8, r15
+       mov      rdi, r13
+       mov      rsi, r14
        xor      r9, r9
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.ManifestBuilder:.ctor(System.String,System.Guid,System.String,System.Resources.ResourceManager,int):this
        call     [rax]System.Diagnostics.Tracing.ManifestBuilder:.ctor(System.String,System.Guid,System.String,System.Resources.ResourceManager,int):this
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Tracing.EventAttribute
        call     CORINFO_HELP_NEWSFAST
        mov      rdi, 0xD1FFAB1E
        mov      qword ptr [rax+0x18], rdi
        xor      edi, edi
        mov      dword ptr [rax+0x1C], edi
        mov      dword ptr [rax+0x20], 0xFFFE
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rdx, rax
        mov      rsi, 0xD1FFAB1E      ; 'EventSourceMessage'
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.ManifestBuilder:StartEvent(System.String,System.Diagnostics.Tracing.EventAttribute):this
        call     [rax]System.Diagnostics.Tracing.ManifestBuilder:StartEvent(System.String,System.Diagnostics.Tracing.EventAttribute):this
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rsi, 0xD1FFAB1E      ; 'System.String'
        mov      rdx, 0xD1FFAB1E      ; 'message'
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.ManifestBuilder:AddEventParameter(System.Type,System.String):this
        call     [rax]System.Diagnostics.Tracing.ManifestBuilder:AddEventParameter(System.Type,System.String):this
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.ManifestBuilder:EndEvent():this
        call     [rax]System.Diagnostics.Tracing.ManifestBuilder:EndEvent():this
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.ManifestBuilder:CreateManifest():ubyte[]:this
        call     [rax]System.Diagnostics.Tracing.ManifestBuilder:CreateManifest():ubyte[]:this
+						;; size=246 bbWeight=0.50 PerfScore 22.50
+G_M12525_IG07:
        mov      rsi, rax
-       mov      rdi, rbx
+       mov      rdi, gword ptr [rbp-0x90]
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventSource:SendManifest(ubyte[]):this
        call     [rax]System.Diagnostics.Tracing.EventSource:SendManifest(ubyte[]):this
-						;; size=257 bbWeight=0.50 PerfScore 23.88
-G_M12525_IG07:
-       test     r15, r15
-       jne      SHORT G_M12525_IG08
-       xor      r14d, r14d
-       jmp      SHORT G_M12525_IG09
-						;; size=10 bbWeight=0.50 PerfScore 1.75
+       mov      rdi, gword ptr [rbp-0x90]
+						;; size=29 bbWeight=0.50 PerfScore 2.75
 G_M12525_IG08:
-       lea      rdi, bword ptr [r15+0x0C]
-       mov      bword ptr [rbp-0x48], rdi
-       mov      r14, bword ptr [rbp-0x48]
-						;; size=12 bbWeight=0.50 PerfScore 1.25
+       test     rbx, rbx
+       jne      SHORT G_M12525_IG09
+       xor      r15d, r15d
+       jmp      SHORT G_M12525_IG10
+						;; size=10 bbWeight=0.50 PerfScore 1.75
 G_M12525_IG09:
-       xor      edi, edi
-       mov      dword ptr [rsp], edi
+       lea      rsi, bword ptr [rbx+0x0C]
+       mov      bword ptr [rbp-0x48], rsi
+       mov      r15, bword ptr [rbp-0x48]
+						;; size=12 bbWeight=0.50 PerfScore 1.25
+G_M12525_IG10:
+       xor      esi, esi
+       mov      dword ptr [rsp], esi
        mov      qword ptr [rsp+0x08], -1
        lea      rdi, [rbp-0x58]
-       xor      esi, esi
+						;; size=18 bbWeight=0.50 PerfScore 1.38
+G_M12525_IG11:
        xor      edx, edx
        xor      ecx, ecx
        xor      r8d, r8d
        xor      r9d, r9d
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventDescriptor:.ctor(int,ubyte,ubyte,ubyte,ubyte,int,long):this
        call     [rax]System.Diagnostics.Tracing.EventDescriptor:.ctor(int,ubyte,ubyte,ubyte,ubyte,int,long):this
        vxorps   xmm0, xmm0, xmm0
        vmovups  xmmword ptr [rbp-0x68], xmm0
-       mov      qword ptr [rbp-0x68], r14
-       mov      edi, dword ptr [r15+0x08]
+       mov      qword ptr [rbp-0x68], r15
+       mov      edi, dword ptr [rbx+0x08]
        lea      edi, [2*rdi+0x02]
        mov      dword ptr [rbp-0x60], edi
        xor      edi, edi
        mov      dword ptr [rbp-0x5C], edi
-       mov      rdi, gword ptr [rbx+0x30]
-       test     rdi, rdi
-       je       SHORT G_M12525_IG10
-       mov      rdi, gword ptr [rdi+0x08]
+       mov      rdi, gword ptr [rbp-0x90]
+       mov      rsi, gword ptr [rdi+0x30]
+       test     rsi, rsi
+       je       SHORT G_M12525_IG12
+       mov      rax, gword ptr [rsi+0x08]
        lea      rsi, [rbp-0x68]
        mov      qword ptr [rsp], rsi
+       mov      rdi, rax
        lea      rsi, [rbp-0x58]
        xor      edx, edx
        xor      ecx, ecx
        xor      r8d, r8d
        mov      r9d, 1
-       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.Diagnostics.Tracing.EventProviderImpl:EventWriteTransfer(byref,long,ulong,ulong,int,ulong):int:this
-       mov      r15d, eax
-       test     r15d, r15d
-       je       SHORT G_M12525_IG10
+       mov      ebx, eax
+       test     ebx, ebx
+       je       SHORT G_M12525_IG12
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        add      rax, 56
-       mov      dword ptr [rax+0x10], r15d
-						;; size=159 bbWeight=0.50 PerfScore 17.92
-G_M12525_IG10:
-       cmp      gword ptr [rbx+0x40], 0
-       je       G_M12525_IG23
-       cmp      qword ptr [rbx+0x88], 0
-       jne      G_M12525_IG22
-       cmp      gword ptr [rbx+0x38], 0
-       jne      SHORT G_M12525_IG11
+       mov      dword ptr [rax+0x10], ebx
+						;; size=145 bbWeight=0.50 PerfScore 17.04
+G_M12525_IG12:
+       mov      rdi, gword ptr [rbp-0x90]
+       cmp      gword ptr [rdi+0x40], 0
+       je       G_M12525_IG25
+       cmp      qword ptr [rdi+0x88], 0
+       jne      G_M12525_IG24
+       cmp      gword ptr [rdi+0x38], 0
+       jne      SHORT G_M12525_IG13
        mov      rdi, 0xD1FFAB1E      ; System.Object
        call     CORINFO_HELP_NEWSFAST
        mov      rsi, rax
-       lea      rdi, bword ptr [rbx+0x38]
-       test     rdi, rdi
-       je       G_M12525_IG25
+       mov      rdi, gword ptr [rbp-0x90]
+       lea      rdx, bword ptr [rdi+0x38]
+       test     rdx, rdx
+       je       G_M12525_IG27
+       mov      rdi, rdx
        xor      rdx, rdx
        call     System.Threading.Interlocked:CompareExchangeObject(byref,System.Object,System.Object):System.Object
-						;; size=70 bbWeight=0.50 PerfScore 8.25
-G_M12525_IG11:
-       mov      rdi, gword ptr [rbx+0x38]
-       mov      gword ptr [rbp-0x90], rdi
-       xor      esi, esi
-       mov      dword ptr [rbp-0x70], esi
-						;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M12525_IG12:
+						;; size=87 bbWeight=0.50 PerfScore 9.38
+G_M12525_IG13:
+       mov      rdi, gword ptr [rbp-0x90]
+       mov      rsi, gword ptr [rdi+0x38]
+       mov      gword ptr [rbp-0x98], rsi
+       xor      eax, eax
+       mov      dword ptr [rbp-0x70], eax
+						;; size=23 bbWeight=0.50 PerfScore 2.62
+G_M12525_IG14:
        cmp      byte  ptr [rbp-0x70], 0
-       jne      G_M12525_IG20
+       jne      G_M12525_IG22
        lea      rsi, [rbp-0x70]
+       mov      rdi, gword ptr [rbp-0x98]
        call     System.Threading.Monitor:ReliableEnter(System.Object,byref)
-       cmp      qword ptr [rbx+0x88], 0
-       jne      G_M12525_IG21
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      r15, gword ptr [rdi]
+       mov      rdi, gword ptr [rbp-0x90]
+       cmp      qword ptr [rdi+0x88], 0
+       jne      G_M12525_IG23
+       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      rbx, gword ptr [rsi]
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Tracing.EventParameterInfo[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_VC
        lea      rdi, bword ptr [rax+0x10]
        mov      rsi, 0xD1FFAB1E      ; 'message'
        mov      gword ptr [rdi], rsi
        mov      rsi, 0xD1FFAB1E      ; 'System.String'
        mov      gword ptr [rdi+0x08], rsi
        xor      rsi, rsi
        mov      gword ptr [rdi+0x10], rsi
-						;; size=103 bbWeight=0.50 PerfScore 8.25
-G_M12525_IG13:
+						;; size=117 bbWeight=0.50 PerfScore 9.25
+G_M12525_IG15:
        mov      dword ptr [rsp], esi
        mov      gword ptr [rsp+0x08], rax
-       mov      rdi, r15
+       mov      rdi, rbx
 						;; size=11 bbWeight=0.50 PerfScore 1.12
-G_M12525_IG14:
+G_M12525_IG16:
        mov      rdx, 0xD1FFAB1E      ; 'EventSourceMessage'
        mov      rcx, -1
        xor      r8d, r8d
        xor      r9d, r9d
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this
        call     [rax]System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateMetadata(int,System.String,long,uint,uint,int,System.Diagnostics.Tracing.EventParameterInfo[]):ubyte[]:this
        test     rax, rax
-       jne      SHORT G_M12525_IG15
+       jne      SHORT G_M12525_IG17
        xor      edi, edi
-       jmp      SHORT G_M12525_IG16
+       jmp      SHORT G_M12525_IG18
 						;; size=47 bbWeight=0.50 PerfScore 3.88
-G_M12525_IG15:
+G_M12525_IG17:
        mov      edi, dword ptr [rax+0x08]
 						;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M12525_IG16:
+G_M12525_IG18:
        mov      gword ptr [rbp-0x78], rax
        test     rax, rax
-       je       SHORT G_M12525_IG17
+       je       SHORT G_M12525_IG19
        cmp      dword ptr [rax+0x08], 0
-       jne      SHORT G_M12525_IG18
+       jne      SHORT G_M12525_IG20
 						;; size=15 bbWeight=0.50 PerfScore 3.12
-G_M12525_IG17:
+G_M12525_IG19:
        xor      esi, esi
-       jmp      SHORT G_M12525_IG19
+       jmp      SHORT G_M12525_IG21
 						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M12525_IG18:
+G_M12525_IG20:
        add      rax, 16
        mov      rsi, rax
 						;; size=7 bbWeight=0.50 PerfScore 0.25
-G_M12525_IG19:
+G_M12525_IG21:
+       mov      rbx, gword ptr [rbp-0x90]
        mov      rdx, gword ptr [rbx+0x40]
        mov      rax, gword ptr [rdx+0x08]
        mov      qword ptr [rsp], rsi
        mov      dword ptr [rsp+0x08], edi
        mov      rdi, rax
        xor      esi, esi
        mov      rdx, 0xD1FFAB1E      ; 'EventSourceMessage'
        mov      rcx, -1
        xor      r8d, r8d
        xor      r9d, r9d
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x48]
        call     [rax+0x08]System.Diagnostics.Tracing.EventProviderImpl:DefineEventHandle(uint,System.String,long,uint,uint,ulong,uint):long:this
        mov      qword ptr [rbx+0x88], rax
        xor      rdi, rdi
        mov      gword ptr [rbp-0x78], rdi
-       jmp      SHORT G_M12525_IG21
-						;; size=72 bbWeight=0.50 PerfScore 9.38
-G_M12525_IG20:
+       jmp      SHORT G_M12525_IG23
+						;; size=79 bbWeight=0.50 PerfScore 9.88
+G_M12525_IG22:
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.Monitor:ThrowLockTakenException()
        call     [rax]System.Threading.Monitor:ThrowLockTakenException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M12525_IG21:
+G_M12525_IG23:
        cmp      byte  ptr [rbp-0x70], 0
-       je       SHORT G_M12525_IG22
-       mov      rdi, gword ptr [rbp-0x90]
+       je       SHORT G_M12525_IG24
+       mov      rdi, gword ptr [rbp-0x98]
        call     System.Threading.Monitor:Exit(System.Object)
 						;; size=18 bbWeight=0.50 PerfScore 2.50
-G_M12525_IG22:
-       mov      rdi, gword ptr [rbx+0x40]
-       mov      rdi, gword ptr [rdi+0x08]
+G_M12525_IG24:
+       mov      rdi, gword ptr [rbp-0x90]
+       mov      rdx, gword ptr [rdi+0x40]
+       mov      rax, gword ptr [rdx+0x08]
        lea      rdx, [rbp-0x68]
        mov      qword ptr [rsp], rdx
+       mov      rdi, rax
+       mov      rbx, gword ptr [rbp-0x90]
        mov      rdx, qword ptr [rbx+0x88]
        lea      rsi, [rbp-0x58]
        xor      ecx, ecx
        xor      r8d, r8d
        mov      r9d, 1
-       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x48]
        call     [rax]System.Diagnostics.Tracing.EventProviderImpl:EventWriteTransfer(byref,long,ulong,ulong,int,ulong):int:this
-       mov      ebx, eax
-       test     ebx, ebx
-       je       SHORT G_M12525_IG23
+       mov      r15d, eax
+       test     r15d, r15d
+       je       SHORT G_M12525_IG25
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        add      rax, 56
-       mov      dword ptr [rax+0x10], ebx
-						;; size=82 bbWeight=0.50 PerfScore 11.00
-G_M12525_IG23:
+       mov      dword ptr [rax+0x10], r15d
+						;; size=102 bbWeight=0.50 PerfScore 12.12
+G_M12525_IG25:
+       mov      rdi, gword ptr [rbp-0x90]
        xor      eax, eax
        mov      bword ptr [rbp-0x48], rax
-						;; size=6 bbWeight=0.50 PerfScore 0.62
-G_M12525_IG24:
-       add      rsp, 136
+						;; size=13 bbWeight=0.50 PerfScore 1.12
+G_M12525_IG26:
+       add      rsp, 144
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M12525_IG25:
+						;; size=16 bbWeight=0.50 PerfScore 1.88
+G_M12525_IG27:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowNullReferenceException()
        call     [rax]System.ThrowHelper:ThrowNullReferenceException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
-G_M12525_IG26:
+G_M12525_IG28:
        push     rbp
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rbx
-       sub      rsp, 24
+       sub      rsp, 32
        mov      rbp, qword ptr [rdi+0x10]
        mov      qword ptr [rsp+0x10], rbp
        lea      rbp, [rbp+0xB0]
-						;; size=30 bbWeight=0 PerfScore 0.00
-G_M12525_IG27:
+						;; size=28 bbWeight=0 PerfScore 0.00
+G_M12525_IG29:
        cmp      byte  ptr [rbp-0x70], 0
-       je       SHORT G_M12525_IG28
-       mov      rdi, gword ptr [rbp-0x90]
+       je       SHORT G_M12525_IG30
+       mov      rdi, gword ptr [rbp-0x98]
        call     System.Threading.Monitor:Exit(System.Object)
 						;; size=18 bbWeight=0 PerfScore 0.00
-G_M12525_IG28:
+G_M12525_IG30:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M12525_IG29:
-       add      rsp, 24
+G_M12525_IG31:
+       add      rsp, 32
        pop      rbx
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=15 bbWeight=0 PerfScore 0.00
+						;; size=13 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1246, prolog size 48, PerfScore 135.33, instruction count 301, allocated bytes for code 1246 (MethodHash=61c7cf12) for method System.Diagnostics.Tracing.EventSource:WriteEventString(System.String):this (FullOpts)
+; Total bytes of code 1340, prolog size 54, PerfScore 142.33, instruction count 310, allocated bytes for code 1340 (MethodHash=61c7cf12) for method System.Diagnostics.Tracing.EventSource:WriteEventString(System.String):this (FullOpts)

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 21, 2024

Top method improvements

-48 (-3.13 % of base) - System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo):this
 ; Assembly listing for method System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 15 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T34] (  5, 11   )     ref  ->  r15         this class-hnd single-def <System.Data.DataSet>
+;  V00 this         [V00,T34] (  5, 11   )     ref  ->  [rbp-0x58]  this class-hnd EH-live single-def <System.Data.DataSet>
 ;  V01 arg1         [V01,T30] ( 15, 13.50)     ref  ->  rbx         class-hnd single-def <System.Runtime.Serialization.SerializationInfo>
-;  V02 loc0         [V02,T11] ( 13, 39   )     ref  ->  r14         class-hnd exact single-def <System.Collections.ArrayList>
-;  V03 loc1         [V03,T35] (  6, 10   )     ref  ->  [rbp-0x50]  class-hnd EH-live spill-single-def <System.Collections.IEnumerator>
-;  V04 loc2         [V04,T05] ( 12, 72   )     ref  ->  r13         class-hnd <System.Data.DataRelation>
-;  V05 loc3         [V05,T12] (  5, 32   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def <int[]>
-;  V06 loc4         [V06,T13] (  5, 32   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def <int[]>
+;  V02 loc0         [V02,T11] ( 13, 39   )     ref  ->  r15         class-hnd exact single-def <System.Collections.ArrayList>
+;  V03 loc1         [V03,T35] (  6, 10   )     ref  ->  [rbp-0x60]  class-hnd EH-live spill-single-def <System.Collections.IEnumerator>
+;  V04 loc2         [V04,T05] ( 12, 72   )     ref  ->  r14         class-hnd <System.Data.DataRelation>
+;  V05 loc3         [V05,T12] (  5, 32   )     ref  ->  r12         class-hnd exact <int[]>
+;  V06 loc4         [V06,T13] (  5, 32   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def <int[]>
 ;* V07 loc5         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Collections.ArrayList>
 ;* V08 loc6         [V08,T50] (  0,  0   )     int  ->  zero-ref   
 ;* V09 loc7         [V09,T51] (  0,  0   )     int  ->  zero-ref   
 ;  V10 loc8         [V10,T53] (  6,  2.50)     ref  ->  rax         class-hnd <System.IDisposable>
 ;# V11 OutArgs      [V11    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V12 tmp1         [V12,T43] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList>
+;  V12 tmp1         [V12,T43] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ArrayList>
 ;* V13 tmp2         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "non-inline candidate call" <System.Data.DataTableCollection>
 ;  V14 tmp3         [V14,T26] (  2, 16   )     int  ->  rax         "Strict ordering of exceptions for Array store"
 ;  V15 tmp4         [V15,T06] (  2, 64   )     int  ->  rax         "Strict ordering of exceptions for Array store"
 ;* V16 tmp5         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "non-inline candidate call" <System.Data.DataTableCollection>
 ;  V17 tmp6         [V17,T27] (  2, 16   )     int  ->  rax         "Strict ordering of exceptions for Array store"
 ;  V18 tmp7         [V18,T07] (  2, 64   )     int  ->  rax         "Strict ordering of exceptions for Array store"
-;  V19 tmp8         [V19,T00] ( 47,348   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <System.Collections.ArrayList>
-;  V20 tmp9         [V20,T17] (  3, 24   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "Single-def Box Helper" <System.Boolean>
+;  V19 tmp8         [V19,T00] ( 47,348   )     ref  ->  r13         class-hnd exact "NewObj constructor temp" <System.Collections.ArrayList>
+;  V20 tmp9         [V20,T17] (  3, 24   )     ref  ->  r12         class-hnd exact "Single-def Box Helper" <System.Boolean>
 ;* V21 tmp10        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Data.DataColumn>
 ;* V22 tmp11        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Data.DataColumn>
 ;  V23 tmp12        [V23,T20] (  2, 16   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "Inlining Arg" <System.String>
 ;  V24 tmp13        [V24,T37] (  2,  8   )     int  ->  rsi         "Inline stloc first use temp"
 ;  V25 tmp14        [V25,T38] (  2,  8   )     int  ->  rsi         "Inline stloc first use temp"
 ;  V26 tmp15        [V26,T39] (  2,  8   )     int  ->  rdi         "Inline stloc first use temp"
 ;* V27 tmp16        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Boolean>
 ;  V28 tmp17        [V28,T40] (  2,  8   )     int  ->  rsi         "Inline stloc first use temp"
-;  V29 tmp18        [V29,T21] (  2, 16   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Data.PropertyCollection>
+;  V29 tmp18        [V29,T21] (  2, 16   )     ref  ->  r14         class-hnd "Inlining Arg" <System.Data.PropertyCollection>
 ;  V30 tmp19        [V30,T41] (  2,  8   )     int  ->  rsi         "Inline stloc first use temp"
 ;  V31 tmp20        [V31,T42] (  2,  8   )     int  ->  rdi         "Inline stloc first use temp"
 ;* V32 tmp21        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <System.Runtime.Serialization.SerializationException>
 ;* V33 tmp22        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,int]>
 ;* V34 tmp23        [V34    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V35 tmp24        [V35,T48] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
+;  V35 tmp24        [V35,T48] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.RuntimeType>
 ;  V36 tmp25        [V36,T58] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Runtime.Serialization.SerializationException>
 ;  V37 tmp26        [V37,T44] (  3,  6   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,int]>
 ;  V38 tmp27        [V38,T49] (  2,  4   )     int  ->  rdx         "Inlining Arg"
-;  V39 tmp28        [V39,T45] (  3,  6   )     ref  ->  rdi         single-def "argument with side effect"
+;  V39 tmp28        [V39,T45] (  3,  6   )     ref  ->  rax         single-def "argument with side effect"
 ;  V40 tmp29        [V40,T18] (  3, 18   )     ref  ->  rax         "argument with side effect"
 ;  V41 tmp30        [V41,T28] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V42 tmp31        [V42,T22] (  2, 16   )     ref  ->  rsi         "argument with side effect"
 ;  V43 tmp32        [V43,T23] (  2, 16   )     ref  ->  [rbp-0x78]  spill-single-def "argument with side effect"
 ;  V44 tmp33        [V44,T01] (  3, 96   )     ref  ->  rax         "arr expr"
 ;  V45 tmp34        [V45,T29] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V46 tmp35        [V46,T24] (  2, 16   )     ref  ->  rsi         "argument with side effect"
 ;  V47 tmp36        [V47,T25] (  2, 16   )     ref  ->  [rbp-0x80]  spill-single-def "argument with side effect"
 ;  V48 tmp37        [V48,T02] (  3, 96   )     ref  ->  rax         "arr expr"
 ;* V49 tmp38        [V49    ] (  0,  0   )     ref  ->  zero-ref    single-def "arr expr"
 ;* V50 tmp39        [V50    ] (  0,  0   )     int  ->  zero-ref    "index expr"
 ;* V51 tmp40        [V51    ] (  0,  0   )     ref  ->  zero-ref    single-def "arr expr"
 ;* V52 tmp41        [V52    ] (  0,  0   )    long  ->  zero-ref    "index expr"
 ;* V53 tmp42        [V53    ] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;  V54 tmp43        [V54,T46] (  3,  6   )     ref  ->  rsi         single-def "arr expr"
 ;  V55 tmp44        [V55,T47] (  3,  6   )     int  ->  rdx         "index expr"
 ;  V56 tmp45        [V56,T59] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V57 PSPSym       [V57,T57] (  1,  1   )    long  ->  [rbp-0x90]  do-not-enreg[V] "PSPSym"
 ;* V58 cse0         [V58,T56] (  0,  0   )   byref  ->  zero-ref    "CSE #10: conservative"
-;  V59 cse1         [V59,T08] (  6, 48   )    long  ->  r12         "CSE #03: moderate"
-;  V60 cse2         [V60,T19] (  4, 16   )    long  ->  [rbp-0x30]  spill-single-def "CSE #12: moderate"
+;  V59 cse1         [V59,T08] (  6, 48   )    long  ->  r13         "CSE #03: moderate"
+;  V60 cse2         [V60,T19] (  4, 16   )    long  ->  [rbp-0x38]  spill-single-def "CSE #12: moderate"
 ;  V61 cse3         [V61,T54] (  2,  2   )     ref  ->  rdi         "CSE #21: conservative"
 ;  V62 cse4         [V62,T55] (  2,  2   )     int  ->  rdx         "CSE #22: conservative"
 ;  V63 cse5         [V63,T52] (  3,  3   )     int  ->  rdi         "CSE #24: conservative"
-;  V64 cse6         [V64,T15] (  4, 28   )     int  ->  [rbp-0x34]  spill-single-def "CSE #02: moderate"
-;  V65 cse7         [V65,T16] (  4, 28   )     int  ->  [rbp-0x38]  spill-single-def "CSE #06: moderate"
+;  V64 cse6         [V64,T15] (  4, 28   )     int  ->  [rbp-0x3C]  spill-single-def "CSE #02: moderate"
+;  V65 cse7         [V65,T16] (  4, 28   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
 ;  V66 cse8         [V66,T09] (  3, 48   )     int  ->  rcx         "CSE #04: moderate"
 ;  V67 cse9         [V67,T10] (  3, 48   )     int  ->  rcx         "CSE #07: moderate"
 ;  V68 cse10        [V68,T31] (  4, 14   )     int  ->  rsi         "CSE #14: moderate"
 ;  V69 cse11        [V69,T32] (  4, 14   )     int  ->  rsi         "CSE #15: moderate"
 ;  V70 cse12        [V70,T33] (  4, 14   )     int  ->  rsi         "CSE #17: moderate"
-;  V71 rat0         [V71,T03] (  6, 84   )    long  ->  [rbp-0x40]  "Widened IV V08"
-;  V72 rat1         [V72,T04] (  6, 84   )    long  ->  [rbp-0x48]  "Widened IV V09"
-;  V73 rat2         [V73,T14] (  5, 30   )     ref  ->  r13         "replacement local"
+;  V71 rat0         [V71,T03] (  6, 84   )    long  ->  [rbp-0x48]  "Widened IV V08"
+;  V72 rat1         [V72,T04] (  6, 84   )    long  ->  [rbp-0x50]  "Widened IV V09"
+;  V73 rat2         [V73,T14] (  5, 30   )     ref  ->  r14         "replacement local"
 ;  V74 rat3         [V74,T36] (  3, 10   )    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 104
 
 G_M4960_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 104
        lea      rbp, [rsp+0x90]
        mov      qword ptr [rbp-0x90], rsp
-       mov      r15, rdi
+       mov      qword ptr [rbp-0x30], rdi
+       mov      gword ptr [rbp-0x58], rdi
        mov      rbx, rsi
-						;; size=35 bbWeight=1 PerfScore 8.25
+						;; size=40 bbWeight=1 PerfScore 10.00
 G_M4960_IG02:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ArrayList
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
+       mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M4960_IG34
+       je       G_M4960_IG33
 						;; size=37 bbWeight=1 PerfScore 5.75
 G_M4960_IG03:
        mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Object]:Value
        mov      rsi, gword ptr [rdi]
-       lea      rdi, bword ptr [r14+0x08]
+       lea      rdi, bword ptr [r15+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, gword ptr [r15+0x28]
-       mov      rax, qword ptr [rdi]
+       mov      rdi, gword ptr [rbp-0x58]
+       mov      rax, gword ptr [rdi+0x28]
+       mov      rdi, rax
+       mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x30]System.Data.InternalDataCollectionBase:GetEnumerator():System.Collections.IEnumerator:this
-       mov      gword ptr [rbp-0x50], rax
-						;; size=40 bbWeight=1 PerfScore 13.75
+       mov      gword ptr [rbp-0x60], rax
+						;; size=47 bbWeight=1 PerfScore 15.00
 G_M4960_IG04:
        mov      rdi, rax
        mov      r11, 0xD1FFAB1E      ; function address
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
-       je       G_M4960_IG28
+       je       G_M4960_IG27
 						;; size=24 bbWeight=1 PerfScore 4.75
 G_M4960_IG05:
-       mov      rdi, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rbp-0x60]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:get_Current():System.Object:this
        call     [r11]System.Collections.IEnumerator:get_Current():System.Object:this
-       mov      r13, rax
-       test     r13, r13
+       mov      r14, rax
+       test     r14, r14
        je       SHORT G_M4960_IG08
 						;; size=25 bbWeight=4 PerfScore 23.00
 G_M4960_IG06:
        mov      rdi, 0xD1FFAB1E      ; System.Data.DataRelation
-       cmp      qword ptr [r13], rdi
+       cmp      qword ptr [r14], rdi
        je       SHORT G_M4960_IG08
-						;; size=16 bbWeight=2 PerfScore 8.50
+						;; size=15 bbWeight=2 PerfScore 8.50
 G_M4960_IG07:
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS_SPECIAL
        call     [rax]CORINFO_HELP_CHKCASTCLASS_SPECIAL
-       mov      r13, rax
+       mov      r14, rax
 						;; size=18 bbWeight=1 PerfScore 3.75
 G_M4960_IG08:
-       mov      rdi, r13
-       mov      rax, qword ptr [r13]
-       mov      r12, qword ptr [rax+0x40]
-       call     [r12+0x38]System.Data.DataRelation:get_ParentColumns():System.Data.DataColumn[]:this
+       mov      rdi, r14
+       mov      rax, qword ptr [r14]
+       mov      r13, qword ptr [rax+0x40]
+       call     [r13+0x38]System.Data.DataRelation:get_ParentColumns():System.Data.DataColumn[]:this
        mov      esi, dword ptr [rax+0x08]
        inc      esi
        movsxd   rsi, esi
        mov      rdi, 0xD1FFAB1E      ; int[]
        call     CORINFO_HELP_NEWARR_1_VC
-       mov      gword ptr [rbp-0x58], rax
-       mov      rcx, gword ptr [r15+0x20]
-       mov      gword ptr [rbp-0x78], rcx
-       mov      rdi, r13
-       mov      rdx, qword ptr [r13]
-       mov      rdx, qword ptr [rdx+0x48]
-       mov      qword ptr [rbp-0x30], rdx
-       call     [rdx]System.Data.DataRelation:get_ParentTable():System.Data.DataTable:this
+       mov      r12, rax
+       mov      rdi, gword ptr [rbp-0x58]
+       mov      rax, gword ptr [rdi+0x20]
+       mov      gword ptr [rbp-0x78], rax
+       mov      rdi, r14
+       mov      rcx, qword ptr [r14]
+       mov      rcx, qword ptr [rcx+0x48]
+       mov      qword ptr [rbp-0x38], rcx
+       call     [rcx]System.Data.DataRelation:get_ParentTable():System.Data.DataTable:this
        mov      rsi, rax
        mov      rdi, gword ptr [rbp-0x78]
        mov      rax, 0xD1FFAB1E      ; code for System.Data.DataTableCollection:IndexOf(System.Data.DataTable):int:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Data.DataTableCollection:IndexOf(System.Data.DataTable):int:this
-       mov      rcx, gword ptr [rbp-0x58]
-       mov      edx, dword ptr [rcx+0x08]
-       mov      dword ptr [rbp-0x34], edx
-       test     edx, edx
-       je       G_M4960_IG27
-       mov      dword ptr [rcx+0x10], eax
-       mov      qword ptr [rbp-0x40], 1
-       cmp      edx, 1
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x3C], ecx
+       test     ecx, ecx
+       je       G_M4960_IG26
+       mov      dword ptr [r12+0x10], eax
+       mov      qword ptr [rbp-0x48], 1
+       cmp      ecx, 1
        jle      SHORT G_M4960_IG10
-						;; size=123 bbWeight=4 PerfScore 157.00
+						;; size=123 bbWeight=4 PerfScore 154.00
 G_M4960_IG09:
-       mov      rdi, r13
-       call     [r12+0x38]System.Data.DataRelation:get_ParentColumns():System.Data.DataColumn[]:this
-       mov      rdi, qword ptr [rbp-0x40]
+       mov      rdi, r14
+       call     [r13+0x38]System.Data.DataRelation:get_ParentColumns():System.Data.DataColumn[]:this
+       mov      rdi, qword ptr [rbp-0x48]
        lea      ecx, [rdi-0x01]
        cmp      ecx, dword ptr [rax+0x08]
-       jae      G_M4960_IG27
+       jae      G_M4960_IG26
        mov      rax, gword ptr [rax+8*rcx+0x10]
        mov      eax, dword ptr [rax+0xAC]
-       mov      rcx, gword ptr [rbp-0x58]
-       mov      dword ptr [rcx+4*rdi+0x10], eax
+       mov      dword ptr [r12+4*rdi+0x10], eax
        inc      edi
-       mov      edx, dword ptr [rbp-0x34]
-       cmp      edx, edi
-       mov      qword ptr [rbp-0x40], rdi
+       mov      ecx, dword ptr [rbp-0x3C]
+       cmp      ecx, edi
+       mov      qword ptr [rbp-0x48], rdi
        jg       SHORT G_M4960_IG09
-						;; size=56 bbWeight=16 PerfScore 292.00
+						;; size=52 bbWeight=16 PerfScore 276.00
 G_M4960_IG10:
-       mov      rdi, r13
-       call     [r12+0x20]System.Data.DataRelation:get_ChildColumns():System.Data.DataColumn[]:this
+       mov      rdi, r14
+       call     [r13+0x20]System.Data.DataRelation:get_ChildColumns():System.Data.DataColumn[]:this
        mov      esi, dword ptr [rax+0x08]
        inc      esi
        movsxd   rsi, esi
        mov      rdi, 0xD1FFAB1E      ; int[]
        call     CORINFO_HELP_NEWARR_1_VC
-       mov      gword ptr [rbp-0x60], rax
-       mov      rcx, gword ptr [r15+0x20]
+       mov      gword ptr [rbp-0x68], rax
+       mov      rdi, gword ptr [rbp-0x58]
+       mov      rcx, gword ptr [rdi+0x20]
        mov      gword ptr [rbp-0x80], rcx
-       mov      rdi, r13
-       call     [r12+0x28]System.Data.DataRelation:get_ChildTable():System.Data.DataTable:this
+       mov      rdi, r14
+       call     [r13+0x28]System.Data.DataRelation:get_ChildTable():System.Data.DataTable:this
        mov      rsi, rax
        mov      rdi, gword ptr [rbp-0x80]
        mov      rax, 0xD1FFAB1E      ; code for System.Data.DataTableCollection:IndexOf(System.Data.DataTable):int:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Data.DataTableCollection:IndexOf(System.Data.DataTable):int:this
-       mov      rcx, gword ptr [rbp-0x60]
+       mov      rcx, gword ptr [rbp-0x68]
        mov      edx, dword ptr [rcx+0x08]
-       mov      dword ptr [rbp-0x38], edx
+       mov      dword ptr [rbp-0x40], edx
        test     edx, edx
-       je       G_M4960_IG27
+       je       G_M4960_IG26
        mov      dword ptr [rcx+0x10], eax
-       mov      qword ptr [rbp-0x48], 1
+       mov      qword ptr [rbp-0x50], 1
        cmp      edx, 1
        jle      SHORT G_M4960_IG12
-						;; size=106 bbWeight=4 PerfScore 121.00
+						;; size=108 bbWeight=4 PerfScore 125.00
 G_M4960_IG11:
-       mov      rdi, r13
-       call     [r12+0x20]System.Data.DataRelation:get_ChildColumns():System.Data.DataColumn[]:this
-       mov      rdi, qword ptr [rbp-0x48]
+       mov      rdi, r14
+       call     [r13+0x20]System.Data.DataRelation:get_ChildColumns():System.Data.DataColumn[]:this
+       mov      rdi, qword ptr [rbp-0x50]
        lea      ecx, [rdi-0x01]
        cmp      ecx, dword ptr [rax+0x08]
-       jae      G_M4960_IG27
+       jae      G_M4960_IG26
        mov      rax, gword ptr [rax+8*rcx+0x10]
        mov      eax, dword ptr [rax+0xAC]
-       mov      rcx, gword ptr [rbp-0x60]
+       mov      rcx, gword ptr [rbp-0x68]
        mov      dword ptr [rcx+4*rdi+0x10], eax
        inc      edi
-       mov      edx, dword ptr [rbp-0x38]
+       mov      edx, dword ptr [rbp-0x40]
        cmp      edx, edi
-       mov      qword ptr [rbp-0x48], rdi
+       mov      qword ptr [rbp-0x50], rdi
        jg       SHORT G_M4960_IG11
-						;; size=56 bbWeight=16 PerfScore 292.00
+						;; size=55 bbWeight=16 PerfScore 292.00
 G_M4960_IG12:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ArrayList
        call     CORINFO_HELP_NEWSFAST
-       mov      r12, rax
+       mov      r13, rax
        mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Object]:Value
        mov      rsi, gword ptr [rdi]
-       lea      rdi, bword ptr [r12+0x08]
+       lea      rdi, bword ptr [r13+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, r13
-       mov      rax, qword ptr [rbp-0x30]
+       mov      rdi, r14
+       mov      rax, qword ptr [rbp-0x38]
        call     [rax+0x08]System.Data.DataRelation:get_RelationName():System.String:this
        mov      gword ptr [rbp-0x70], rax
-       mov      esi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
+       mov      esi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
        cmp      esi, dword ptr [rdi+0x08]
-       jne      G_M4960_IG26
-						;; size=74 bbWeight=4 PerfScore 74.00
+       jne      G_M4960_IG25
+						;; size=71 bbWeight=4 PerfScore 74.00
 G_M4960_IG13:
-       mov      esi, dword ptr [r12+0x10]
+       mov      esi, dword ptr [r13+0x10]
        inc      esi
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rcx, 0xD1FFAB1E      ; code for System.Collections.ArrayList:EnsureCapacity(int):this
        call     [rcx]System.Collections.ArrayList:EnsureCapacity(int):this
        mov      rax, gword ptr [rbp-0x70]
-						;; size=26 bbWeight=2 PerfScore 13.50
+						;; size=25 bbWeight=2 PerfScore 13.50
 G_M4960_IG14:
-       movsxd   rsi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
+       movsxd   rsi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
        mov      rdx, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
-       inc      dword ptr [r12+0x14]
-       mov      esi, dword ptr [r12+0x10]
+       inc      dword ptr [r13+0x14]
+       mov      esi, dword ptr [r13+0x10]
        inc      esi
-       mov      dword ptr [r12+0x10], esi
-       mov      rdi, gword ptr [r12+0x08]
+       mov      dword ptr [r13+0x10], esi
+       mov      rdi, gword ptr [r13+0x08]
        cmp      dword ptr [rdi+0x08], esi
        jne      SHORT G_M4960_IG16
-						;; size=52 bbWeight=4 PerfScore 87.00
+						;; size=46 bbWeight=4 PerfScore 87.00
 G_M4960_IG15:
        inc      esi
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ArrayList:EnsureCapacity(int):this
        call     [rax]System.Collections.ArrayList:EnsureCapacity(int):this
 						;; size=17 bbWeight=2 PerfScore 7.50
 G_M4960_IG16:
-       movsxd   rsi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
-       mov      rdx, gword ptr [rbp-0x58]
+       movsxd   rsi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
+       mov      rdx, r12
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
-       inc      dword ptr [r12+0x14]
-       mov      esi, dword ptr [r12+0x10]
+       inc      dword ptr [r13+0x14]
+       mov      esi, dword ptr [r13+0x10]
        inc      esi
-       mov      dword ptr [r12+0x10], esi
-       mov      rdi, gword ptr [r12+0x08]
+       mov      dword ptr [r13+0x10], esi
+       mov      rdi, gword ptr [r13+0x08]
        cmp      dword ptr [rdi+0x08], esi
        jne      SHORT G_M4960_IG18
-						;; size=53 bbWeight=4 PerfScore 90.00
+						;; size=46 bbWeight=4 PerfScore 87.00
 G_M4960_IG17:
        inc      esi
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ArrayList:EnsureCapacity(int):this
        call     [rax]System.Collections.ArrayList:EnsureCapacity(int):this
 						;; size=17 bbWeight=2 PerfScore 7.50
 G_M4960_IG18:
-       movsxd   rsi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
-       mov      rdx, gword ptr [rbp-0x60]
+       movsxd   rsi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
+       mov      rdx, gword ptr [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
-       inc      dword ptr [r12+0x14]
-       mov      edi, dword ptr [r12+0x10]
+       inc      dword ptr [r13+0x14]
+       mov      edi, dword ptr [r13+0x10]
        inc      edi
-       mov      dword ptr [r12+0x10], edi
+       mov      dword ptr [r13+0x10], edi
        mov      rdi, 0xD1FFAB1E      ; System.Boolean
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x68], rax
-       mov      rdi, r13
-       mov      rcx, qword ptr [rbp-0x30]
-       call     [rcx+0x18]System.Data.DataRelation:get_Nested():ubyte:this
-       mov      rcx, gword ptr [rbp-0x68]
-       mov      byte  ptr [rcx+0x08], al
-       mov      esi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
+       mov      r12, rax
+       mov      rdi, r14
+       mov      rax, qword ptr [rbp-0x38]
+       call     [rax+0x18]System.Data.DataRelation:get_Nested():ubyte:this
+       mov      byte  ptr [r12+0x08], al
+       mov      esi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
        cmp      esi, dword ptr [rdi+0x08]
-       jne      G_M4960_IG25
-						;; size=98 bbWeight=4 PerfScore 132.00
+       jne      SHORT G_M4960_IG20
+						;; size=84 bbWeight=4 PerfScore 125.00
 G_M4960_IG19:
-       mov      esi, dword ptr [r12+0x10]
+       mov      esi, dword ptr [r13+0x10]
        inc      esi
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ArrayList:EnsureCapacity(int):this
        call     [rax]System.Collections.ArrayList:EnsureCapacity(int):this
-       mov      rcx, gword ptr [rbp-0x68]
-						;; size=26 bbWeight=2 PerfScore 13.50
+						;; size=21 bbWeight=2 PerfScore 11.50
 G_M4960_IG20:
-       mov      rdx, rcx
-       movsxd   rsi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
+       mov      rdx, r12
+       movsxd   rsi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
-       inc      dword ptr [r12+0x14]
-       mov      esi, dword ptr [r12+0x10]
+       inc      dword ptr [r13+0x14]
+       mov      esi, dword ptr [r13+0x10]
        inc      esi
-       mov      dword ptr [r12+0x10], esi
-       mov      r13, gword ptr [r13+0x10]
-       mov      rdi, gword ptr [r12+0x08]
+       mov      dword ptr [r13+0x10], esi
+       mov      r14, gword ptr [r14+0x10]
+       mov      rdi, gword ptr [r13+0x08]
        cmp      dword ptr [rdi+0x08], esi
        jne      SHORT G_M4960_IG22
-						;; size=56 bbWeight=4 PerfScore 95.00
+						;; size=50 bbWeight=4 PerfScore 95.00
 G_M4960_IG21:
        inc      esi
-       mov      rdi, r12
+       mov      rdi, r13
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ArrayList:EnsureCapacity(int):this
        call     [rax]System.Collections.ArrayList:EnsureCapacity(int):this
 						;; size=17 bbWeight=2 PerfScore 7.50
 G_M4960_IG22:
-       movsxd   rsi, dword ptr [r12+0x10]
-       mov      rdi, gword ptr [r12+0x08]
-       mov      rdx, r13
+       movsxd   rsi, dword ptr [r13+0x10]
+       mov      rdi, gword ptr [r13+0x08]
+       mov      rdx, r14
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
-       inc      dword ptr [r12+0x14]
-       mov      esi, dword ptr [r12+0x10]
+       inc      dword ptr [r13+0x14]
+       mov      esi, dword ptr [r13+0x10]
        inc      esi
-       mov      dword ptr [r12+0x10], esi
-       mov      esi, dword ptr [r14+0x10]
-       mov      rdi, gword ptr [r14+0x08]
+       mov      dword ptr [r13+0x10], esi
+       mov      esi, dword ptr [r15+0x10]
+       mov      rdi, gword ptr [r15+0x08]
        cmp      esi, dword ptr [rdi+0x08]
        jne      SHORT G_M4960_IG24
-						;; size=55 bbWeight=4 PerfScore 95.00
+						;; size=50 bbWeight=4 PerfScore 95.00
 G_M4960_IG23:
-       mov      esi, dword ptr [r14+0x10]
+       mov      esi, dword ptr [r15+0x10]
        inc      esi
-       mov      rdi, r14
+       mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.ArrayList:EnsureCapacity(int):this
        call     [rax]System.Collections.ArrayList:EnsureCapacity(int):this
 						;; size=21 bbWeight=2 PerfScore 11.50
 G_M4960_IG24:
-       movsxd   rsi, dword ptr [r14+0x10]
-       mov      rdi, gword ptr [r14+0x08]
-       mov      rdx, r12
+       movsxd   rsi, dword ptr [r15+0x10]
+       mov      rdi, gword ptr [r15+0x08]
+       mov      rdx, r13
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
-       inc      dword ptr [r14+0x14]
-       mov      edi, dword ptr [r14+0x10]
+       inc      dword ptr [r15+0x14]
+       mov      edi, dword ptr [r15+0x10]
        inc      edi
-       mov      dword ptr [r14+0x10], edi
-       mov      rdi, gword ptr [rbp-0x50]
+       mov      dword ptr [r15+0x10], edi
+       mov      rdi, gword ptr [rbp-0x60]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
        jne      G_M4960_IG05
-       jmp      SHORT G_M4960_IG28
+       jmp      SHORT G_M4960_IG27
 						;; size=64 bbWeight=4 PerfScore 93.00
 G_M4960_IG25:
-       mov      rcx, gword ptr [rbp-0x68]
-       jmp      G_M4960_IG20
-						;; size=9 bbWeight=2 PerfScore 6.00
-G_M4960_IG26:
        mov      rax, gword ptr [rbp-0x70]
        jmp      G_M4960_IG14
 						;; size=9 bbWeight=2 PerfScore 6.00
-G_M4960_IG27:
+G_M4960_IG26:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
-G_M4960_IG28:
-       mov      rsi, gword ptr [rbp-0x50]
+G_M4960_IG27:
+       mov      rsi, gword ptr [rbp-0x60]
        mov      rdi, 0xD1FFAB1E      ; System.IDisposable
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
        call     [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
        test     rax, rax
-       je       SHORT G_M4960_IG30
+       je       SHORT G_M4960_IG29
 						;; size=31 bbWeight=1 PerfScore 5.75
-G_M4960_IG29:
+G_M4960_IG28:
        mov      rdi, rax
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M4960_IG30:
+G_M4960_IG29:
        cmp      byte  ptr [rbx], bl
-       mov      rdi, r14
+       mov      rdi, r15
        call     System.Object:GetType():System.Type:this
-       mov      r15, rax
+       mov      r14, rax
        mov      rdi, gword ptr [rbx+0x20]
        mov      edx, dword ptr [rbx+0x48]
        cmp      byte  ptr [rdi], dil
        mov      rsi, 0xD1FFAB1E      ; 'DataSet.Relations'
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryInsert(System.__Canon,int,ubyte):ubyte:this
        call     [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:TryInsert(System.__Canon,int,ubyte):ubyte:this
        test     eax, eax
-       je       G_M4960_IG35
+       je       G_M4960_IG34
 						;; size=55 bbWeight=1 PerfScore 16.50
-G_M4960_IG31:
+G_M4960_IG30:
        mov      edi, dword ptr [rbx+0x48]
        mov      rax, gword ptr [rbx+0x08]
        cmp      edi, dword ptr [rax+0x08]
-       jl       SHORT G_M4960_IG32
+       jl       SHORT G_M4960_IG31
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationInfo:ExpandArrays():this
        call     [rax]System.Runtime.Serialization.SerializationInfo:ExpandArrays():this
 						;; size=27 bbWeight=0.50 PerfScore 5.75
-G_M4960_IG32:
+G_M4960_IG31:
        mov      rsi, gword ptr [rbx+0x08]
        mov      edi, dword ptr [rbx+0x48]
        mov      edx, edi
        cmp      edx, dword ptr [rsi+0x08]
-       jae      G_M4960_IG36
+       jae      G_M4960_IG35
        mov      rax, 0xD1FFAB1E      ; 'DataSet.Relations'
        mov      gword ptr [rsi+8*rdx+0x10], rax
        movsxd   rsi, edi
        mov      rdi, gword ptr [rbx+0x10]
-       mov      rdx, r14
+       mov      rdx, r15
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        movsxd   rsi, dword ptr [rbx+0x48]
        mov      rdi, gword ptr [rbx+0x18]
-       mov      rdx, r15
+       mov      rdx, r14
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ARRADDR_ST
        call     [rax]CORINFO_HELP_ARRADDR_ST
        inc      dword ptr [rbx+0x48]
 						;; size=81 bbWeight=1 PerfScore 27.75
-G_M4960_IG33:
+G_M4960_IG32:
        add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M4960_IG34:
+G_M4960_IG33:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Object]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M4960_IG03
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M4960_IG35:
+G_M4960_IG34:
        mov      rdi, 0xD1FFAB1E      ; System.Runtime.Serialization.SerializationException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_Serialization_SameNameTwice():System.String
        call     [rax]System.SR:get_Serialization_SameNameTwice():System.String
        mov      rsi, rax
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this
        call     [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=57 bbWeight=0 PerfScore 0.00
-G_M4960_IG36:
+G_M4960_IG35:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
-G_M4960_IG37:
+G_M4960_IG36:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x90]
 						;; size=25 bbWeight=0 PerfScore 0.00
-G_M4960_IG38:
-       mov      rsi, gword ptr [rbp-0x50]
+G_M4960_IG37:
+       mov      rsi, gword ptr [rbp-0x60]
        mov      rdi, 0xD1FFAB1E      ; System.IDisposable
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE
        call     [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE
        test     rax, rax
-       je       SHORT G_M4960_IG39
+       je       SHORT G_M4960_IG38
        mov      rdi, rax
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=47 bbWeight=0 PerfScore 0.00
-G_M4960_IG39:
+G_M4960_IG38:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M4960_IG40:
+G_M4960_IG39:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1532, prolog size 35, PerfScore 1730.50, instruction count 367, allocated bytes for code 1532 (MethodHash=8d0cec9f) for method System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo):this (FullOpts)
+; Total bytes of code 1484, prolog size 40, PerfScore 1700.50, instruction count 366, allocated bytes for code 1484 (MethodHash=8d0cec9f) for method System.Data.DataSet:SerializeRelations(System.Runtime.Serialization.SerializationInfo):this (FullOpts)
-37 (-3.78 % of base) - System.Net.WebClient:UploadBits(System.Net.WebRequest,System.IO.FileStream,ubyte[],int,ubyte[],ubyte[]):ubyte[]:this
 ; Assembly listing for method System.Net.WebClient:UploadBits(System.Net.WebRequest,System.IO.FileStream,ubyte[],int,ubyte[],ubyte[]):ubyte[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T12] (  3,  3   )     ref  ->  r12         this class-hnd single-def <System.Net.WebClient>
-;  V01 arg1         [V01,T08] (  8,  7   )     ref  ->  [rbp-0x38]  class-hnd EH-live single-def <System.Net.WebRequest>
+;  V00 this         [V00,T12] (  3,  3   )     ref  ->  [rbp-0x40]  this class-hnd EH-live single-def <System.Net.WebClient>
+;  V01 arg1         [V01,T08] (  8,  7   )     ref  ->  [rbp-0x48]  class-hnd EH-live single-def <System.Net.WebRequest>
 ;  V02 arg2         [V02,T05] (  6, 11.50)     ref  ->  r15         class-hnd single-def <System.IO.FileStream>
 ;  V03 arg3         [V03,T00] (  7, 18.50)     ref  ->  rbx         class-hnd single-def <ubyte[]>
 ;  V04 arg4         [V04,T06] (  5, 10   )     int  ->  r14         single-def
-;  V05 arg5         [V05,T11] (  6,  4.50)     ref  ->  [rbp-0x40]  class-hnd <ubyte[]>
-;  V06 arg6         [V06,T14] (  4,  2.50)     ref  ->  [rbp+0x10]  class-hnd <ubyte[]>
-;  V07 loc0         [V07,T02] ( 13, 19.50)     ref  ->  [rbp-0x48]  must-init class-hnd EH-live single-def <System.IO.Stream>
-;  V08 loc1         [V08,T20] (  4,  0.50)     ref  ->  [rbp-0x50]  must-init class-hnd EH-live single-def <System.IO.FileStream>
+;  V05 arg5         [V05,T11] (  6,  4.50)     ref  ->  r13         class-hnd <ubyte[]>
+;  V06 arg6         [V06,T14] (  4,  2.50)     ref  ->  r12         class-hnd <ubyte[]>
+;  V07 loc0         [V07,T02] ( 13, 19.50)     ref  ->  [rbp-0x50]  must-init class-hnd EH-live single-def <System.IO.Stream>
+;  V08 loc1         [V08,T20] (  4,  0.50)     ref  ->  [rbp-0x58]  must-init class-hnd EH-live single-def <System.IO.FileStream>
 ;  V09 loc2         [V09,T07] (  3, 12   )     int  ->  rax        
 ;  V10 loc3         [V10,T01] (  6, 20.50)     int  ->  r15        
-;  V11 loc4         [V11,T04] (  5, 16   )     int  ->  [rbp-0x2C] 
+;  V11 loc4         [V11,T04] (  5, 16   )     int  ->  [rbp-0x34] 
 ;  V12 loc5         [V12,T16] (  2,  2   )     ref  ->  rax         class-hnd single-def <ubyte[]>
-;  V13 loc6         [V13,T21] (  5,  0   )     ref  ->  [rbp-0x58]  must-init class-hnd EH-live single-def <System.Exception>
+;  V13 loc6         [V13,T21] (  5,  0   )     ref  ->  [rbp-0x60]  must-init class-hnd EH-live single-def <System.Exception>
 ;# V14 OutArgs      [V14    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V15 tmp1         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.IO.ChunkedMemoryStream>
 ;  V16 tmp2         [V16,T25] (  2,  0   )     ref  ->  rsi         class-hnd single-def "impSpillSpecialSideEff" <System.Object>
 ;  V17 tmp3         [V17,T22] (  3,  0   )     ref  ->  rsi         class-hnd single-def "dup spill" <System.Exception>
 ;* V18 tmp4         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V19 tmp5         [V19,T24] (  3,  0   )     int  ->  rax        
 ;* V20 tmp6         [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impSpillSpecialSideEff" <System.Object>
 ;  V21 tmp7         [V21,T23] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebException>
-;  V22 tmp8         [V22,T09] (  5,  7   )     ref  ->  [rbp-0x60]  class-hnd exact single-def "Inlining Arg" <System.String>
+;  V22 tmp8         [V22,T09] (  5,  7   )     ref  ->  [rbp-0x68]  class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V23 tmp9         [V23,T10] (  5,  7   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V24 tmp10        [V24,T15] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V25 tmp11        [V25,T17] (  2,  2   )   byref  ->   r8         single-def "impAppendStmt"
+;  V25 tmp11        [V25,T17] (  2,  2   )   byref  ->  rcx         single-def "impAppendStmt"
 ;  V26 tmp12        [V26,T13] (  2,  4   )     ref  ->  rdx         single-def "argument with side effect"
 ;  V27 tmp13        [V27,T26] (  2,  0   )     ref  ->  rsi         single-def "argument with side effect"
 ;  V28 PSPSym       [V28,T19] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
-;  V29 cse0         [V29,T03] (  6, 17   )     int  ->  [rbp-0x30]  multi-def "CSE #05: aggressive"
-;  V30 cse1         [V30,T18] (  3,  1.50)     int  ->  registers   "CSE #01: moderate"
+;  V29 cse0         [V29,T03] (  6, 17   )     int  ->  r13         multi-def "CSE #05: aggressive"
+;  V30 cse1         [V30,T18] (  3,  1.50)     int  ->  rax         "CSE #01: moderate"
 ;
 ; Lcl frame size = 72
 
 G_M33478_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 72
        lea      rbp, [rsp+0x70]
        vxorps   xmm8, xmm8, xmm8
-       vmovdqu  xmmword ptr [rbp-0x58], xmm8
+       vmovdqa  xmmword ptr [rbp-0x60], xmm8
        xor      eax, eax
-       mov      qword ptr [rbp-0x48], rax
+       mov      qword ptr [rbp-0x50], rax
        mov      qword ptr [rbp-0x70], rsp
-       mov      gword ptr [rbp-0x38], rsi
-       mov      r12, rdi
+       mov      qword ptr [rbp-0x30], rdi
+       mov      gword ptr [rbp-0x40], rdi
+       mov      gword ptr [rbp-0x48], rsi
        mov      rax, rsi
        mov      r15, rdx
        mov      rbx, rcx
        mov      r14d, r8d
        mov      r13, r9
-						;; size=61 bbWeight=1 PerfScore 13.83
+       mov      r12, gword ptr [rbp+0x10]
+						;; size=70 bbWeight=1 PerfScore 16.58
 G_M33478_IG02:
        mov      rdi, rax
-       mov      rdx, qword ptr [rax]
-       mov      rdx, qword ptr [rdx+0x48]
-       call     [rdx+0x28]System.Net.WebRequest:get_RequestUri():System.Uri:this
+       mov      rcx, qword ptr [rax]
+       mov      rcx, qword ptr [rcx+0x48]
+       call     [rcx+0x28]System.Net.WebRequest:get_RequestUri():System.Uri:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Uri:get_Scheme():System.String:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Uri:get_Scheme():System.String:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M33478_IG26
+       je       G_M33478_IG23
 						;; size=52 bbWeight=1 PerfScore 18.25
 G_M33478_IG03:
        mov      rax, 0xD1FFAB1E      ; data for System.Uri:UriSchemeFile
        mov      rsi, gword ptr [rax]
        cmp      rdi, rsi
-       jne      SHORT G_M33478_IG06
+       jne      SHORT G_M33478_IG05
 						;; size=18 bbWeight=1 PerfScore 3.50
 G_M33478_IG04:
-       xor      rcx, rcx
+       xor      r12, r12
        xor      r13, r13
-						;; size=5 bbWeight=0.50 PerfScore 0.25
+       jmp      SHORT G_M33478_IG06
+						;; size=8 bbWeight=0.50 PerfScore 1.25
 G_M33478_IG05:
-       mov      gword ptr [rbp-0x40], rcx
-       jmp      SHORT G_M33478_IG07
-						;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M33478_IG06:
        test     rdi, rdi
-       je       SHORT G_M33478_IG09
+       je       SHORT G_M33478_IG06
        test     rsi, rsi
-       je       SHORT G_M33478_IG08
+       je       SHORT G_M33478_IG06
        mov      eax, dword ptr [rdi+0x08]
        cmp      eax, dword ptr [rsi+0x08]
-       mov      gword ptr [rbp-0x40], r13
-       mov      r13, gword ptr [rbp+0x10]
-       je       SHORT G_M33478_IG10
-						;; size=26 bbWeight=0.50 PerfScore 5.25
-G_M33478_IG07:
-       mov      rdi, gword ptr [rbp-0x38]
-       mov      rcx, qword ptr [rdi]
-       mov      rcx, qword ptr [rcx+0x58]
-       call     [rcx+0x10]System.Net.WebRequest:GetRequestStream():System.IO.Stream:this
-       mov      gword ptr [rbp-0x48], rax
-       jmp      SHORT G_M33478_IG11
+       je       SHORT G_M33478_IG07
+						;; size=18 bbWeight=0.50 PerfScore 4.25
+G_M33478_IG06:
+       mov      rdi, gword ptr [rbp-0x48]
+       mov      rax, qword ptr [rdi]
+       mov      rax, qword ptr [rax+0x58]
+       call     [rax+0x10]System.Net.WebRequest:GetRequestStream():System.IO.Stream:this
+       mov      gword ptr [rbp-0x50], rax
+       jmp      SHORT G_M33478_IG08
 						;; size=20 bbWeight=1 PerfScore 11.00
-G_M33478_IG08:
-       mov      gword ptr [rbp-0x40], r13
-       mov      r13, gword ptr [rbp+0x10]
-       jmp      SHORT G_M33478_IG07
-						;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M33478_IG09:
-       mov      gword ptr [rbp-0x40], r13
-       mov      r13, gword ptr [rbp+0x10]
-       jmp      SHORT G_M33478_IG07
-						;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M33478_IG10:
-       mov      ecx, eax
+G_M33478_IG07:
        mov      rdx, rdi
        add      rdx, 12
-       mov      r8, rdx
-       add      ecx, ecx
-       mov      edx, ecx
+       mov      rcx, rdx
+       add      eax, eax
+       mov      edx, eax
        add      rsi, 12
-       mov      rdi, r8
-       mov      rcx, 0xD1FFAB1E      ; code for System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
-       call     [rcx]System.SpanHelpers:SequenceEqual(byref,byref,ulong):ubyte
+       mov      rdi, rcx
+       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_M33478_IG07
+       je       SHORT G_M33478_IG06
        jmp      SHORT G_M33478_IG04
-						;; size=41 bbWeight=0.50 PerfScore 4.25
-G_M33478_IG11:
-       mov      rax, gword ptr [rbp-0x40]
-       test     rax, rax
-       je       SHORT G_M33478_IG13
-						;; size=9 bbWeight=1 PerfScore 2.25
-G_M33478_IG12:
-       mov      ecx, dword ptr [rax+0x08]
-       mov      rdi, gword ptr [rbp-0x48]
-       mov      rsi, rax
+						;; size=39 bbWeight=0.50 PerfScore 4.12
+G_M33478_IG08:
+       test     r13, r13
+       je       SHORT G_M33478_IG10
+						;; size=5 bbWeight=1 PerfScore 1.25
+G_M33478_IG09:
+       mov      ecx, dword ptr [r13+0x08]
+       mov      rdi, gword ptr [rbp-0x50]
+       mov      rsi, r13
        xor      edx, edx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x60]
        call     [rax+0x30]System.IO.Stream:Write(ubyte[],int,int):this
-						;; size=22 bbWeight=0.50 PerfScore 5.25
-G_M33478_IG13:
+						;; size=23 bbWeight=0.50 PerfScore 5.25
+G_M33478_IG10:
        test     r15, r15
-       je       SHORT G_M33478_IG15
+       je       SHORT G_M33478_IG12
 						;; size=5 bbWeight=1 PerfScore 1.25
-G_M33478_IG14:
-       mov      gword ptr [rbp-0x50], r15
-       jmp      SHORT G_M33478_IG21
+G_M33478_IG11:
+       mov      gword ptr [rbp-0x58], r15
+       jmp      SHORT G_M33478_IG18
 						;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M33478_IG15:
+G_M33478_IG12:
        xor      r15d, r15d
-       mov      r8d, dword ptr [rbx+0x08]
-       test     r8d, r8d
-       jle      SHORT G_M33478_IG19
+       mov      r13d, dword ptr [rbx+0x08]
+       test     r13d, r13d
+       jle      SHORT G_M33478_IG16
 						;; size=12 bbWeight=0.50 PerfScore 1.75
-G_M33478_IG16:
-       mov      dword ptr [rbp-0x30], r8d
-       mov      r9d, r8d
-       sub      r9d, r15d
+G_M33478_IG13:
+       mov      r8d, r13d
+       sub      r8d, r15d
        test     r14d, r14d
-       je       SHORT G_M33478_IG18
-						;; size=15 bbWeight=4 PerfScore 11.00
-G_M33478_IG17:
-       cmp      r9d, r14d
-       jle      SHORT G_M33478_IG18
-       mov      r9d, r14d
+       je       SHORT G_M33478_IG15
+						;; size=11 bbWeight=4 PerfScore 7.00
+G_M33478_IG14:
+       cmp      r8d, r14d
+       jle      SHORT G_M33478_IG15
+       mov      r8d, r14d
 						;; size=8 bbWeight=2 PerfScore 3.00
-G_M33478_IG18:
-       mov      rdi, gword ptr [rbp-0x48]
+G_M33478_IG15:
+       mov      rdi, gword ptr [rbp-0x50]
        mov      rsi, rbx
        mov      edx, r15d
-       mov      dword ptr [rbp-0x2C], r9d
-       mov      ecx, r9d
-       mov      r10, qword ptr [rdi]
-       mov      r10, qword ptr [r10+0x60]
-       call     [r10+0x30]System.IO.Stream:Write(ubyte[],int,int):this
-       add      r15d, dword ptr [rbp-0x2C]
-       mov      eax, dword ptr [rbp-0x30]
-       cmp      eax, r15d
-       mov      r8d, eax
-       jg       SHORT G_M33478_IG16
-						;; size=43 bbWeight=4 PerfScore 57.00
-G_M33478_IG19:
-       test     r13, r13
-       je       SHORT G_M33478_IG23
+       mov      dword ptr [rbp-0x34], r8d
+       mov      ecx, r8d
+       mov      r9, qword ptr [rdi]
+       mov      r9, qword ptr [r9+0x60]
+       call     [r9+0x30]System.IO.Stream:Write(ubyte[],int,int):this
+       add      r15d, dword ptr [rbp-0x34]
+       cmp      r13d, r15d
+       jg       SHORT G_M33478_IG13
+						;; size=37 bbWeight=4 PerfScore 52.00
+G_M33478_IG16:
+       test     r12, r12
+       je       SHORT G_M33478_IG20
 						;; size=5 bbWeight=1 PerfScore 1.25
-G_M33478_IG20:
-       mov      ecx, dword ptr [r13+0x08]
-       mov      rdi, gword ptr [rbp-0x48]
-       mov      rsi, r13
+G_M33478_IG17:
+       mov      ecx, dword ptr [r12+0x08]
+       mov      rdi, gword ptr [rbp-0x50]
+       mov      rsi, r12
        xor      edx, edx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x60]
        call     [rax+0x30]System.IO.Stream:Write(ubyte[],int,int):this
-       jmp      SHORT G_M33478_IG23
-						;; size=25 bbWeight=0.50 PerfScore 6.25
-G_M33478_IG21:
-       mov      ecx, dword ptr [rbx+0x08]
-       mov      r14d, ecx
-       mov      ecx, r14d
+       jmp      SHORT G_M33478_IG20
+						;; size=26 bbWeight=0.50 PerfScore 6.25
+G_M33478_IG18:
+       mov      r13d, dword ptr [rbx+0x08]
+       mov      ecx, r13d
        mov      rdi, r15
        mov      rsi, rbx
        xor      edx, edx
        mov      r8, qword ptr [r15]
        mov      r8, qword ptr [r8+0x60]
        call     [r8+0x18]System.IO.Stream:Read(ubyte[],int,int):int:this
        test     eax, eax
-       jle      SHORT G_M33478_IG22
-       mov      rdi, gword ptr [rbp-0x48]
+       jle      SHORT G_M33478_IG19
+       mov      rdi, gword ptr [rbp-0x50]
        mov      rsi, rbx
        mov      ecx, eax
        xor      edx, edx
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x60]
        call     [rax+0x30]System.IO.Stream:Write(ubyte[],int,int):this
-       jmp      SHORT G_M33478_IG21
-						;; size=55 bbWeight=4 PerfScore 89.00
-G_M33478_IG22:
-       mov      rdi, gword ptr [rbp-0x50]
+       jmp      SHORT G_M33478_IG18
+						;; size=53 bbWeight=4 PerfScore 88.00
+G_M33478_IG19:
+       mov      rdi, gword ptr [rbp-0x58]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
-       jmp      SHORT G_M33478_IG19
+       jmp      SHORT G_M33478_IG16
 						;; size=19 bbWeight=0.50 PerfScore 3.12
-G_M33478_IG23:
-       mov      rdi, gword ptr [rbp-0x48]
+G_M33478_IG20:
+       mov      rdi, gword ptr [rbp-0x50]
        test     rdi, rdi
-       je       SHORT G_M33478_IG25
+       je       SHORT G_M33478_IG22
 						;; size=9 bbWeight=1 PerfScore 2.25
-G_M33478_IG24:
+G_M33478_IG21:
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M33478_IG25:
+G_M33478_IG22:
        mov      rdi, 0xD1FFAB1E      ; System.IO.ChunkedMemoryStream
        call     CORINFO_HELP_NEWSFAST
        mov      rdx, rax
-       mov      rsi, gword ptr [rbp-0x38]
-       mov      rdi, r12
+       mov      rsi, gword ptr [rbp-0x48]
+       mov      rdi, gword ptr [rbp-0x40]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this
        call     [rax]System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this
-       jmp      SHORT G_M33478_IG27
-						;; size=39 bbWeight=1 PerfScore 8.00
-G_M33478_IG26:
-       mov      gword ptr [rbp-0x60], rdi
+       jmp      SHORT G_M33478_IG24
+						;; size=40 bbWeight=1 PerfScore 8.75
+G_M33478_IG23:
+       mov      gword ptr [rbp-0x68], rdi
        mov      rdi, 0xD1FFAB1E      ; System.Uri
        call     CORINFO_HELP_GET_GCSTATIC_BASE
-       mov      rdi, gword ptr [rbp-0x60]
+       mov      rdi, gword ptr [rbp-0x68]
        jmp      G_M33478_IG03
 						;; size=28 bbWeight=0 PerfScore 0.00
-G_M33478_IG27:
+G_M33478_IG24:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M33478_IG28:
+G_M33478_IG25:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x70]
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M33478_IG29:
-       cmp      gword ptr [rbp-0x50], 0
-       je       SHORT G_M33478_IG30
-       mov      rdi, gword ptr [rbp-0x50]
+G_M33478_IG26:
+       cmp      gword ptr [rbp-0x58], 0
+       je       SHORT G_M33478_IG27
+       mov      rdi, gword ptr [rbp-0x58]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=24 bbWeight=0 PerfScore 0.00
-G_M33478_IG30:
+G_M33478_IG27:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M33478_IG31:
+G_M33478_IG28:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
-G_M33478_IG32:
+G_M33478_IG29:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x70]
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M33478_IG33:
-       cmp      gword ptr [rbp-0x48], 0
-       je       SHORT G_M33478_IG34
-       mov      rdi, gword ptr [rbp-0x48]
+G_M33478_IG30:
+       cmp      gword ptr [rbp-0x50], 0
+       je       SHORT G_M33478_IG31
+       mov      rdi, gword ptr [rbp-0x50]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=24 bbWeight=0 PerfScore 0.00
-G_M33478_IG34:
+G_M33478_IG31:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M33478_IG35:
+G_M33478_IG32:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
-G_M33478_IG36:
+G_M33478_IG33:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x70]
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M33478_IG37:
+G_M33478_IG34:
        mov      rdi, 0xD1FFAB1E      ; System.Exception
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        mov      rsi, rax
        test     rsi, rsi
-       jne      SHORT G_M33478_IG38
+       jne      SHORT G_M33478_IG35
        xor      eax, eax
-       jmp      SHORT G_M33478_IG39
+       jmp      SHORT G_M33478_IG36
 						;; size=34 bbWeight=0 PerfScore 0.00
-G_M33478_IG38:
-       mov      gword ptr [rbp-0x58], rsi
-       mov      rsi, gword ptr [rbp-0x58]
+G_M33478_IG35:
+       mov      gword ptr [rbp-0x60], rsi
+       mov      rsi, gword ptr [rbp-0x60]
        mov      rdi, 0xD1FFAB1E      ; System.OutOfMemoryException
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        test     rax, rax
        sete     al
        movzx    rax, al
 						;; size=39 bbWeight=0 PerfScore 0.00
-G_M33478_IG39:
+G_M33478_IG36:
        add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0 PerfScore 0.00
-G_M33478_IG40:
+G_M33478_IG37:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x70]
 						;; size=22 bbWeight=0 PerfScore 0.00
-G_M33478_IG41:
-       mov      rdi, gword ptr [rbp-0x38]
+G_M33478_IG38:
+       mov      rdi, gword ptr [rbp-0x48]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.WebClient:AbortRequest(System.Net.WebRequest)
        call     [rax]System.Net.WebClient:AbortRequest(System.Net.WebRequest)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x60]
        mov      rdi, 0xD1FFAB1E      ; System.Net.WebException
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        test     rax, rax
-       jne      SHORT G_M33478_IG42
-       mov      rsi, gword ptr [rbp-0x58]
+       jne      SHORT G_M33478_IG39
+       mov      rsi, gword ptr [rbp-0x60]
        mov      rdi, 0xD1FFAB1E      ; System.Security.SecurityException
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_ISINSTANCEOFCLASS
        call     [rax]CORINFO_HELP_ISINSTANCEOFCLASS
        test     rax, rax
-       je       SHORT G_M33478_IG43
+       je       SHORT G_M33478_IG40
 						;; size=78 bbWeight=0 PerfScore 0.00
-G_M33478_IG42:
+G_M33478_IG39:
        call     CORINFO_HELP_RETHROW
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
-G_M33478_IG43:
+G_M33478_IG40:
        mov      rdi, 0xD1FFAB1E      ; System.Net.WebException
        call     CORINFO_HELP_NEWSFAST
        mov      rbx, rax
        mov      rax, 0xD1FFAB1E      ; code for System.SR:get_net_webclient():System.String
        call     [rax]System.SR:get_net_webclient():System.String
        mov      rsi, rax
        mov      rdi, rbx
-       mov      rdx, gword ptr [rbp-0x58]
+       mov      rdx, gword ptr [rbp-0x60]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.WebException:.ctor(System.String,System.Exception):this
        call     [rax]System.Net.WebException:.ctor(System.String,System.Exception):this
        mov      rdi, rbx
        call     CORINFO_HELP_THROW
        int3     
 						;; size=61 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 978, prolog size 61, PerfScore 258.58, instruction count 294, allocated bytes for code 978 (MethodHash=14827d39) for method System.Net.WebClient:UploadBits(System.Net.WebRequest,System.IO.FileStream,ubyte[],int,ubyte[],ubyte[]):ubyte[]:this (FullOpts)
+; Total bytes of code 941, prolog size 70, PerfScore 247.46, instruction count 281, allocated bytes for code 941 (MethodHash=14827d39) for method System.Net.WebClient:UploadBits(System.Net.WebRequest,System.IO.FileStream,ubyte[],int,ubyte[],ubyte[]):ubyte[]:this (FullOpts)

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 21, 2024

@EgorBo

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

No branches or pull requests

1 participant