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] [MihaZupan] Add Span.StartsWith(T) and EndsWith(T) #410

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

[X64] [MihaZupan] Add Span.StartsWith(T) and EndsWith(T) #410

MihuBot opened this issue Jun 14, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Jun 14, 2024

Job completed in 19 minutes.
dotnet/runtime#103458

Diffs

Found 291 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 40909900
Total bytes of diff: 40910607
Total bytes of delta: 707 (0.00 % of base)
Total relative delta: 0.84
    diff is a regression.
    relative diff is a regression.


Total byte diff includes 648 bytes from reconciling methods
	Base had    3 unique methods,      655 unique bytes
	Diff had   15 unique methods,     1303 unique bytes

Top file regressions (bytes):
         353 : System.Memory.dasm (0.12 % of base)
         256 : System.Net.Primitives.dasm (0.28 % of base)
         123 : System.Private.CoreLib.dasm (0.00 % of base)
          16 : Microsoft.Extensions.Diagnostics.dasm (0.09 % of base)

Top file improvements (bytes):
         -25 : System.Configuration.ConfigurationManager.dasm (-0.01 % of base)
          -8 : System.ComponentModel.TypeConverter.dasm (-0.00 % of base)
          -8 : Microsoft.Extensions.Hosting.dasm (-0.01 % of base)

7 total files with Code Size differences (3 improved, 4 regressed), 251 unchanged.

Top method regressions (bytes):
         219 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|225_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts) (0 base, 1 diff methods)
         219 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|234_0(System.Span`1[ushort]):System.Span`1[ushort] (FullOpts) (0 base, 1 diff methods)
         217 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<TrimUtf8>g__TrimFallback|239_0(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods)
         146 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float]):ubyte (FullOpts) (0 base, 1 diff methods)
         137 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float]):ubyte (FullOpts) (0 base, 1 diff methods)
         130 (55.79 % of base) : System.Net.Primitives.dasm - System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
         126 (80.77 % of base) : System.Net.Primitives.dasm - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
          88 (4.31 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,int,int,int,ubyte):ubyte:this (FullOpts) (2 methods)
          88 (4.31 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,long,long,int,ubyte):ubyte:this (FullOpts) (2 methods)
          70 (3.39 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToSlow(byref,ubyte,ubyte,int,ubyte):ubyte:this (FullOpts) (2 methods)
          65 (3.05 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToSlow(byref,short,short,int,ubyte):ubyte:this (FullOpts) (2 methods)
          60 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[double](System.ReadOnlySpan`1[double],double):ubyte (FullOpts) (0 base, 1 diff methods)
          55 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[double](System.ReadOnlySpan`1[double],double):ubyte (FullOpts) (0 base, 1 diff methods)
          38 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[short](System.ReadOnlySpan`1[short],short):ubyte (FullOpts) (0 base, 1 diff methods)
          36 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[ubyte](System.ReadOnlySpan`1[ubyte],ubyte):ubyte (FullOpts) (0 base, 1 diff methods)
          33 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[short](System.ReadOnlySpan`1[short],short):ubyte (FullOpts) (0 base, 1 diff methods)
          32 (1.40 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,double,double,int,ubyte):ubyte:this (FullOpts) (2 methods)
          31 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[long](System.ReadOnlySpan`1[long],long):ubyte (FullOpts) (0 base, 1 diff methods)
          31 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[ubyte](System.ReadOnlySpan`1[ubyte],ubyte):ubyte (FullOpts) (0 base, 1 diff methods)
          30 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[int](System.ReadOnlySpan`1[int],int):ubyte (FullOpts) (0 base, 1 diff methods)
          26 (8.02 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
          26 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[long](System.ReadOnlySpan`1[long],long):ubyte (FullOpts) (0 base, 1 diff methods)
          26 (59.09 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
          25 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[int](System.ReadOnlySpan`1[int],int):ubyte (FullOpts) (0 base, 1 diff methods)
          20 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (FullOpts) (2 methods)
          16 (4.03 % of base) : Microsoft.Extensions.Diagnostics.dasm - Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:.ctor():this (FullOpts)
          14 (4.68 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
          13 (1.47 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Return(System.__Canon[],ubyte):this (FullOpts)
          10 (0.38 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToSlow(byref,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],int,ubyte):ubyte:this (FullOpts) (2 methods)
          10 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[double]:Return(double[],ubyte):this (FullOpts)
          10 (1.06 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[long]:Return(long[],ubyte):this (FullOpts)
          10 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
          10 (1.05 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Return(System.Nullable`1[int][],ubyte):this (FullOpts)
          10 (1.05 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Return(System.Numerics.Vector`1[float][],ubyte):this (FullOpts)
          10 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this (FullOpts)
           2 (0.21 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts)

Top method improvements (bytes):
        -219 (-100.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts) (1 base, 0 diff methods)
        -219 (-100.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|232_0(System.Span`1[ushort]):System.Span`1[ushort] (FullOpts) (1 base, 0 diff methods)
        -217 (-100.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<TrimUtf8>g__TrimFallback|237_0(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] (FullOpts) (1 base, 0 diff methods)
         -36 (-1.89 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts) (2 methods)
         -36 (-5.98 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
         -36 (-4.36 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
         -36 (-13.74 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-4.68 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
         -31 (-10.47 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
         -30 (-2.98 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -29 (-6.50 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
         -29 (-8.45 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
         -18 (-1.93 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
         -18 (-1.93 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
         -18 (-1.93 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
         -18 (-1.91 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
         -18 (-1.91 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Rent(int):System.Numerics.Vector`1[float][]:this (FullOpts)
         -18 (-1.81 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this (FullOpts)
         -10 (-1.77 % of base) : System.Private.CoreLib.dasm - System.Threading.CancellationTokenSource:CancelAfter(uint):this (FullOpts)
         -10 (-1.30 % of base) : System.Private.CoreLib.dasm - System.Threading.CancellationTokenSource:InitializeWithTimer(System.TimeSpan,System.TimeProvider):this (FullOpts)
          -9 (-1.98 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.BaseConfigurationRecord:NormalizeConfigSource(System.String,System.Configuration.Internal.IConfigErrorInfo):System.String (FullOpts)
          -8 (-7.14 % of base) : Microsoft.Extensions.Hosting.dasm - Microsoft.Extensions.Hosting.HostBuilder:ResolveContentRootPath(System.String,System.String):System.String (FullOpts)
          -8 (-13.56 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.SyntaxCheck:CheckRootedPath(System.String):ubyte (FullOpts)
          -8 (-0.40 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
          -8 (-0.43 % of base) : System.Configuration.ConfigurationManager.dasm - System.Diagnostics.TraceUtils:GetRuntimeObject(System.String,System.Type,System.String):System.Object (FullOpts)
          -8 (-10.96 % of base) : System.Private.CoreLib.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
          -3 (-11.11 % of base) : System.Private.CoreLib.dasm - System.IO.FileStatus:IsNameHidden(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -3 (-11.11 % of base) : System.Private.CoreLib.dasm - System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -3 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Threading.PeriodicTimer:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)
          -3 (-0.35 % of base) : System.Private.CoreLib.dasm - System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this (FullOpts)
          -3 (-0.37 % of base) : System.Private.CoreLib.dasm - System.TimeProvider+SystemTimeProviderTimer:.ctor(System.TimeSpan,System.TimeSpan,System.Threading.TimerCallback,System.Object):this (FullOpts)

Top method regressions (percentages):
         219 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|225_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts) (0 base, 1 diff methods)
         219 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|234_0(System.Span`1[ushort]):System.Span`1[ushort] (FullOpts) (0 base, 1 diff methods)
         217 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<TrimUtf8>g__TrimFallback|239_0(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] (FullOpts) (0 base, 1 diff methods)
          60 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[double](System.ReadOnlySpan`1[double],double):ubyte (FullOpts) (0 base, 1 diff methods)
          30 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[int](System.ReadOnlySpan`1[int],int):ubyte (FullOpts) (0 base, 1 diff methods)
          31 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[long](System.ReadOnlySpan`1[long],long):ubyte (FullOpts) (0 base, 1 diff methods)
          38 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[short](System.ReadOnlySpan`1[short],short):ubyte (FullOpts) (0 base, 1 diff methods)
         146 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float]):ubyte (FullOpts) (0 base, 1 diff methods)
          36 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:EndsWith[ubyte](System.ReadOnlySpan`1[ubyte],ubyte):ubyte (FullOpts) (0 base, 1 diff methods)
          55 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[double](System.ReadOnlySpan`1[double],double):ubyte (FullOpts) (0 base, 1 diff methods)
          25 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[int](System.ReadOnlySpan`1[int],int):ubyte (FullOpts) (0 base, 1 diff methods)
          26 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[long](System.ReadOnlySpan`1[long],long):ubyte (FullOpts) (0 base, 1 diff methods)
          33 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[short](System.ReadOnlySpan`1[short],short):ubyte (FullOpts) (0 base, 1 diff methods)
         137 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Numerics.Vector`1[float]):ubyte (FullOpts) (0 base, 1 diff methods)
          31 (Infinity of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:StartsWith[ubyte](System.ReadOnlySpan`1[ubyte],ubyte):ubyte (FullOpts) (0 base, 1 diff methods)
         126 (80.77 % of base) : System.Net.Primitives.dasm - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
          26 (59.09 % of base) : System.Private.CoreLib.dasm - System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
         130 (55.79 % of base) : System.Net.Primitives.dasm - System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
          26 (8.02 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
          14 (4.68 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (FullOpts)
          88 (4.31 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:TryReadToSlow(byref,int,int,int,ubyte):ubyte:this (FullOpts) (2 methods)
          88 (4.31 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:TryReadToSlow(byref,long,long,int,ubyte):ubyte:this (FullOpts) (2 methods)
          16 (4.03 % of base) : Microsoft.Extensions.Diagnostics.dasm - Microsoft.Extensions.Diagnostics.Metrics.DebugConsoleMetricListener:.ctor():this (FullOpts)
          70 (3.39 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:TryReadToSlow(byref,ubyte,ubyte,int,ubyte):ubyte:this (FullOpts) (2 methods)
          65 (3.05 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:TryReadToSlow(byref,short,short,int,ubyte):ubyte:this (FullOpts) (2 methods)
          13 (1.47 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Return(System.__Canon[],ubyte):this (FullOpts)
          32 (1.40 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:TryReadToSlow(byref,double,double,int,ubyte):ubyte:this (FullOpts) (2 methods)
          10 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[double]:Return(double[],ubyte):this (FullOpts)
          10 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[short]:Return(short[],ubyte):this (FullOpts)
          20 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this (FullOpts) (2 methods)
          10 (1.07 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ushort]:Return(ushort[],ubyte):this (FullOpts)
          10 (1.06 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[long]:Return(long[],ubyte):this (FullOpts)
          10 (1.05 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Return(System.Nullable`1[int][],ubyte):this (FullOpts)
          10 (1.05 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Return(System.Numerics.Vector`1[float][],ubyte):this (FullOpts)
          10 (0.38 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:TryReadToSlow(byref,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],int,ubyte):ubyte:this (FullOpts) (2 methods)
           2 (0.21 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (FullOpts)

Top method improvements (percentages):
        -219 (-100.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts) (1 base, 0 diff methods)
        -219 (-100.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|232_0(System.Span`1[ushort]):System.Span`1[ushort] (FullOpts) (1 base, 0 diff methods)
        -217 (-100.00 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions:<TrimUtf8>g__TrimFallback|237_0(System.ReadOnlySpan`1[ubyte]):System.ReadOnlySpan`1[ubyte] (FullOpts) (1 base, 0 diff methods)
         -36 (-13.74 % of base) : System.Private.CoreLib.dasm - System.Threading.TimerQueueTimer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint,ubyte):this (FullOpts)
          -8 (-13.56 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.SyntaxCheck:CheckRootedPath(System.String):ubyte (FullOpts)
          -3 (-11.11 % of base) : System.Private.CoreLib.dasm - System.IO.FileStatus:IsNameHidden(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -3 (-11.11 % of base) : System.Private.CoreLib.dasm - System.IO.Path:IsPathRooted(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -8 (-10.96 % of base) : System.Private.CoreLib.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
         -31 (-10.47 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback):this (FullOpts)
         -29 (-8.45 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,uint,uint):this (FullOpts)
          -8 (-7.14 % of base) : Microsoft.Extensions.Hosting.dasm - Microsoft.Extensions.Hosting.HostBuilder:ResolveContentRootPath(System.String,System.String):System.String (FullOpts)
         -29 (-6.50 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,int,int):this (FullOpts)
         -36 (-5.98 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
         -34 (-4.68 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+DelayPromise:.ctor(uint,System.TimeProvider):this (FullOpts)
         -36 (-4.36 % of base) : System.Private.CoreLib.dasm - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[double]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[int]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[long]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[short]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[System.Nullable`1[int]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[System.Numerics.Vector`1[float]]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -34 (-3.33 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[ubyte]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
         -30 (-2.98 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task+CancellationPromise`1[System.__Canon]:.ctor(System.Threading.Tasks.Task,uint,System.TimeProvider,System.Threading.CancellationToken):this (FullOpts)
          -9 (-1.98 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.BaseConfigurationRecord:NormalizeConfigSource(System.String,System.Configuration.Internal.IConfigErrorInfo):System.String (FullOpts)
         -18 (-1.93 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[double]:Rent(int):double[]:this (FullOpts)
         -18 (-1.93 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[short]:Rent(int):short[]:this (FullOpts)
         -18 (-1.93 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[long]:Rent(int):long[]:this (FullOpts)
         -18 (-1.91 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Numerics.Vector`1[float]]:Rent(int):System.Numerics.Vector`1[float][]:this (FullOpts)
         -18 (-1.91 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[System.Nullable`1[int]]:Rent(int):System.Nullable`1[int][]:this (FullOpts)
         -36 (-1.89 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts) (2 methods)
         -18 (-1.81 % of base) : System.Private.CoreLib.dasm - System.Buffers.SharedArrayPool`1[ushort]:Rent(int):ushort[]:this (FullOpts)
         -10 (-1.77 % of base) : System.Private.CoreLib.dasm - System.Threading.CancellationTokenSource:CancelAfter(uint):this (FullOpts)
         -10 (-1.30 % of base) : System.Private.CoreLib.dasm - System.Threading.CancellationTokenSource:InitializeWithTimer(System.TimeSpan,System.TimeProvider):this (FullOpts)
          -8 (-0.43 % of base) : System.Configuration.ConfigurationManager.dasm - System.Diagnostics.TraceUtils:GetRuntimeObject(System.String,System.Type,System.String):System.Object (FullOpts)
          -8 (-0.40 % of base) : System.Configuration.ConfigurationManager.dasm - System.Configuration.ClientConfigPaths:.ctor(System.String,ubyte):this (FullOpts)
          -3 (-0.37 % of base) : System.Private.CoreLib.dasm - System.TimeProvider+SystemTimeProviderTimer:.ctor(System.TimeSpan,System.TimeSpan,System.Threading.TimerCallback,System.Object):this (FullOpts)
          -3 (-0.35 % of base) : System.Private.CoreLib.dasm - System.TimeProvider:CreateTimer(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):System.Threading.ITimer:this (FullOpts)
          -3 (-0.35 % of base) : System.Private.CoreLib.dasm - System.Threading.PeriodicTimer:.ctor(System.TimeSpan,System.TimeProvider):this (FullOpts)

74 total methods with Code Size differences (38 improved, 36 regressed), 252318 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 14, 2024

Top method regressions

130 (55.79 % of base) - System.Net.Cookie:Equals(System.Object):ubyte:this
 ; Assembly listing for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 14 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  7,  4.50)     ref  ->  rbx         this class-hnd single-def <System.Net.Cookie>
 ;  V01 arg1         [V01,T01] (  5,  3.75)     ref  ->  rsi         class-hnd single-def <System.Object>
-;  V02 loc0         [V02,T04] (  6,  3   )     ref  ->  r15         class-hnd exact <System.Net.Cookie>
+;  V02 loc0         [V02,T05] (  6,  3   )     ref  ->  r15         class-hnd exact <System.Net.Cookie>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.Net.Cookie>
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V06 tmp3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
-;* V08 tmp5         [V08    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V08 tmp5         [V08    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V09 tmp6         [V09    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V10 tmp7         [V10    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V11 tmp8         [V11,T02] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V11 tmp8         [V11,T03] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V12 tmp9         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V13 tmp10        [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp11        [V14,T05] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V15 tmp12        [V15,T07] (  2,  2   )     int  ->  rdi         "Inlining Arg"
-;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;  V17 tmp14        [V17,T03] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V14 tmp11        [V14,T15] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
+;  V15 tmp12        [V15,T19] (  2,  2   )     int  ->  rdi         "Inlining Arg"
+;* V16 tmp13        [V16    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;  V17 tmp14        [V17,T04] (  4,  4   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V18 tmp15        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V19 tmp16        [V19    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V20 tmp17        [V20,T06] (  2,  2   )   byref  ->  rcx         single-def "Inlining Arg"
-;  V21 tmp18        [V21,T08] (  2,  2   )     int  ->  rdi         "Inlining Arg"
-;  V22 tmp19        [V22,T09] (  3,  1.50)   byref  ->  rsi         "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V23 tmp20        [V23,T11] (  3,  1.50)     int  ->  rdx         "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp21        [V24    ] (  0,  0   )   byref  ->  zero-ref    "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp22        [V25    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
-;  V26 tmp23        [V26,T13] (  2,  1   )   byref  ->  rsi         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;  V27 tmp24        [V27,T15] (  2,  1   )     int  ->  rdi         "field V12._length (fldOffset=0x8)" P-INDEP
-;* V28 tmp25        [V28    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
-;* V29 tmp26        [V29    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
-;  V30 tmp27        [V30,T10] (  3,  1.50)   byref  ->  rcx         "field V16._reference (fldOffset=0x0)" P-INDEP
-;  V31 tmp28        [V31,T12] (  3,  1.50)     int  ->  rax         "field V16._length (fldOffset=0x8)" P-INDEP
-;  V32 tmp29        [V32,T14] (  2,  1   )   byref  ->  rcx         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-;  V33 tmp30        [V33,T16] (  2,  1   )     int  ->  rdi         "field V18._length (fldOffset=0x8)" P-INDEP
-;* V34 tmp31        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V35 tmp32        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
+;  V20 tmp17        [V20,T16] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V21 tmp18        [V21,T20] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;* V22 tmp19        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V23 tmp20        [V23    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V24 tmp21        [V24,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V25 tmp22        [V25    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V26 tmp23        [V26    ] (  0,  0   )  ushort  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
+;* V27 tmp24        [V27    ] (  0,  0   )   byref  ->  zero-ref   
+;* V28 tmp25        [V28    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;  V29 tmp26        [V29,T17] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
+;  V30 tmp27        [V30,T21] (  2,  2   )     int  ->  rdi         "Inlining Arg"
+;* V31 tmp28        [V31,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V32 tmp29        [V32    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V33 tmp30        [V33    ] (  0,  0   )  ushort  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
+;* V34 tmp31        [V34    ] (  0,  0   )   byref  ->  zero-ref   
+;* V35 tmp32        [V35    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;  V36 tmp33        [V36,T18] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V37 tmp34        [V37,T22] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;* V38 tmp35        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V39 tmp36        [V39    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V40 tmp37        [V40    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;  V41 tmp38        [V41,T10] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V42 tmp39        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V43 tmp40        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V44 tmp41        [V44    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
+;* V45 tmp42        [V45    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V46 tmp43        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;  V47 tmp44        [V47,T11] (  4,  2   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V48 tmp45        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V49 tmp46        [V49    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V50 tmp47        [V50,T08] (  4,  2   )   byref  ->  rsi         "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V51 tmp48        [V51,T12] (  4,  2   )     int  ->  rdi         "field V08._length (fldOffset=0x8)" P-INDEP
+;* V52 tmp49        [V52    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp50        [V53    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
+;  V54 tmp51        [V54,T23] (  2,  1   )   byref  ->  rsi         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;  V55 tmp52        [V55,T27] (  2,  1   )     int  ->  rdi         "field V12._length (fldOffset=0x8)" P-INDEP
+;* V56 tmp53        [V56    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;* V57 tmp54        [V57    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x8)" P-INDEP
+;  V58 tmp55        [V58,T09] (  4,  2   )   byref  ->  rax         "field V16._reference (fldOffset=0x0)" P-INDEP
+;  V59 tmp56        [V59,T13] (  4,  2   )     int  ->  rdx         "field V16._length (fldOffset=0x8)" P-INDEP
+;  V60 tmp57        [V60,T24] (  2,  1   )   byref  ->  rax         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V61 tmp58        [V61,T28] (  2,  1   )     int  ->  rdx         "field V18._length (fldOffset=0x8)" P-INDEP
+;* V62 tmp59        [V62    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V63 tmp60        [V63    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x8)" P-INDEP
+;  V64 tmp61        [V64,T06] (  6,  3   )   byref  ->  rcx         "field V22._reference (fldOffset=0x0)" P-INDEP
+;  V65 tmp62        [V65,T14] (  4,  2   )     int  ->   r8         "field V22._length (fldOffset=0x8)" P-INDEP
+;  V66 tmp63        [V66,T07] (  6,  3   )   byref  ->   r9         "field V23._reference (fldOffset=0x0)" P-INDEP
+;  V67 tmp64        [V67,T02] ( 10,  5   )     int  ->  r10         "field V23._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp65        [V68    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp66        [V69    ] (  0,  0   )     int  ->  zero-ref    "field V25._length (fldOffset=0x8)" P-INDEP
+;  V70 tmp67        [V70,T25] (  2,  1   )   byref  ->  rcx         single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;  V71 tmp68        [V71,T29] (  2,  1   )     int  ->   r8         "field V28._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp69        [V72    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp70        [V73    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x8)" P-INDEP
+;  V74 tmp71        [V74,T26] (  2,  1   )   byref  ->   r9         single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+;  V75 tmp72        [V75,T30] (  2,  1   )     int  ->  r10         "field V35._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp73        [V76    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp74        [V77    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp75        [V78    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V40._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp76        [V79    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
+;* V80 tmp77        [V80    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V81 tmp78        [V81    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
+;* V82 tmp79        [V82    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V43._reference (fldOffset=0x0)" P-INDEP
+;* V83 tmp80        [V83    ] (  0,  0   )     int  ->  zero-ref    "field V43._length (fldOffset=0x8)" P-INDEP
+;* V84 tmp81        [V84    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V45._reference (fldOffset=0x0)" P-INDEP
+;* V85 tmp82        [V85    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x8)" P-INDEP
+;* V86 tmp83        [V86    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V46._reference (fldOffset=0x0)" P-INDEP
+;* V87 tmp84        [V87    ] (  0,  0   )     int  ->  zero-ref    "field V46._length (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 0
 
 G_M1639_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M1639_IG02:
        test     rsi, rsi
-       je       G_M1639_IG10
+       je       G_M1639_IG16
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M1639_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Net.Cookie
        cmp      qword ptr [rsi], rdi
-       jne      G_M1639_IG10
+       jne      G_M1639_IG16
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M1639_IG04:
        mov      r15, rsi
        mov      rdi, gword ptr [rbx+0x20]
        mov      rsi, gword ptr [r15+0x20]
        mov      edx, 5
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        test     eax, eax
-       je       G_M1639_IG10
+       je       G_M1639_IG16
        mov      rdi, gword ptr [rbx+0x40]
        mov      rsi, gword ptr [r15+0x40]
        mov      edx, 4
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        test     eax, eax
-       je       SHORT G_M1639_IG10
+       je       G_M1639_IG16
        mov      rdi, gword ptr [rbx+0x28]
        mov      rsi, gword ptr [r15+0x28]
        mov      edx, 4
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        test     eax, eax
-       je       SHORT G_M1639_IG10
+       je       G_M1639_IG16
        mov      rdi, gword ptr [rbx+0x18]
        test     rdi, rdi
        je       SHORT G_M1639_IG05
        lea      rsi, bword ptr [rdi+0x0C]
        mov      edi, dword ptr [rdi+0x08]
-       mov      edx, edi
        jmp      SHORT G_M1639_IG06
-						;; size=114 bbWeight=0.50 PerfScore 17.25
+						;; size=120 bbWeight=0.50 PerfScore 17.12
 G_M1639_IG05:
        xor      rsi, rsi
-       xor      edx, edx
+       xor      edi, edi
 						;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M1639_IG06:
-       mov      rdi, gword ptr [r15+0x18]
-       test     rdi, rdi
+       mov      rdx, gword ptr [r15+0x18]
+       test     rdx, rdx
        je       SHORT G_M1639_IG07
-       lea      rcx, bword ptr [rdi+0x0C]
-       mov      edi, dword ptr [rdi+0x08]
-       mov      eax, edi
+       lea      rax, bword ptr [rdx+0x0C]
+       mov      edx, dword ptr [rdx+0x08]
        jmp      SHORT G_M1639_IG08
-						;; size=20 bbWeight=0.50 PerfScore 4.00
+						;; size=18 bbWeight=0.50 PerfScore 3.88
 G_M1639_IG07:
-       xor      rcx, rcx
-       xor      eax, eax
+       xor      rax, rax
+       xor      edx, edx
 						;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M1639_IG08:
-       mov      rdi, rsi
-       mov      esi, edx
-       mov      rdx, rcx
-       mov      ecx, eax
-       mov      rax, 0xD1FFAB1E      ; code for System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
-       call     [rax]System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
-       test     eax, eax
+       mov      rcx, rsi
+       mov      r8d, edi
+       mov      r9, rax
+       mov      r10d, edx
+       test     r8d, r8d
+       je       SHORT G_M1639_IG09
+       cmp      word  ptr [rcx], 46
+       jne      SHORT G_M1639_IG09
+       add      rsi, 2
+       dec      edi
+       mov      rcx, rsi
+       mov      r8d, edi
+						;; size=35 bbWeight=0.50 PerfScore 3.62
+G_M1639_IG09:
+       test     r10d, r10d
        je       SHORT G_M1639_IG10
+       cmp      word  ptr [r9], 46
+       jne      SHORT G_M1639_IG10
+       add      rax, 2
+       dec      edx
+       mov      r9, rax
+       mov      r10d, edx
+						;; size=24 bbWeight=0.50 PerfScore 3.12
+G_M1639_IG10:
+       cmp      r8d, r10d
+       jne      SHORT G_M1639_IG16
+       test     r10d, r10d
+       je       SHORT G_M1639_IG14
+       cmp      r10d, 8
+       jl       SHORT G_M1639_IG12
+       cmp      r10d, 16
+       jge      SHORT G_M1639_IG11
+       mov      rdi, rcx
+       mov      rsi, r9
+       mov      edx, r10d
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+       call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+       jmp      SHORT G_M1639_IG13
+						;; size=45 bbWeight=0.50 PerfScore 5.50
+G_M1639_IG11:
+       mov      rdi, rcx
+       mov      rsi, r9
+       mov      edx, r10d
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+       call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+       jmp      SHORT G_M1639_IG13
+						;; size=23 bbWeight=0.50 PerfScore 3.00
+G_M1639_IG12:
+       mov      rdi, rcx
+       mov      rsi, r9
+       mov      edx, r10d
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+       call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+						;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M1639_IG13:
+       test     eax, eax
+       je       SHORT G_M1639_IG16
+						;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M1639_IG14:
        mov      eax, dword ptr [rbx+0x54]
        cmp      eax, dword ptr [r15+0x54]
        sete     al
        movzx    rax, al
-						;; size=39 bbWeight=0.50 PerfScore 5.88
-G_M1639_IG09:
+						;; size=13 bbWeight=0.50 PerfScore 3.12
+G_M1639_IG15:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M1639_IG10:
+G_M1639_IG16:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M1639_IG11:
+G_M1639_IG17:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 233, prolog size 9, PerfScore 36.31, instruction count 71, allocated bytes for code 233 (MethodHash=fcf9f998) for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 363, prolog size 9, PerfScore 51.19, instruction count 108, allocated bytes for code 363 (MethodHash=fcf9f998) for method System.Net.Cookie:Equals(System.Object):ubyte:this (FullOpts)
126 (80.77 % of base) - System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte
 ; Assembly listing for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 16 single block inlinees; 11 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  5,  4   )     ref  ->  rbx         class-hnd single-def <System.Net.Cookie>
 ;  V01 arg1         [V01,T01] (  5,  4   )     ref  ->  r15         class-hnd single-def <System.Net.Cookie>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
-;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
+;* V04 tmp2         [V04    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V06 tmp4         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
-;  V07 tmp5         [V07,T02] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V07 tmp5         [V07,T03] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V08 tmp6         [V08    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V09 tmp7         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V10 tmp8         [V10,T04] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V11 tmp9         [V11,T06] (  2,  2   )     int  ->  rdi         "Inlining Arg"
-;* V12 tmp10        [V12    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-;  V13 tmp11        [V13,T03] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V10 tmp8         [V10,T14] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
+;  V11 tmp9         [V11,T18] (  2,  2   )     int  ->  rdi         "Inlining Arg"
+;* V12 tmp10        [V12    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;  V13 tmp11        [V13,T04] (  4,  4   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V14 tmp12        [V14    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp13        [V15    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V16 tmp14        [V16,T05] (  2,  2   )   byref  ->  rcx         single-def "Inlining Arg"
-;  V17 tmp15        [V17,T07] (  2,  2   )     int  ->  rdi         "Inlining Arg"
-;  V18 tmp16        [V18,T08] (  3,  1.50)   byref  ->  rsi         "field V04._reference (fldOffset=0x0)" P-INDEP
-;  V19 tmp17        [V19,T10] (  3,  1.50)     int  ->  rdx         "field V04._length (fldOffset=0x8)" P-INDEP
-;* V20 tmp18        [V20    ] (  0,  0   )   byref  ->  zero-ref    "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V21 tmp19        [V21    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
-;  V22 tmp20        [V22,T12] (  2,  1   )   byref  ->  rsi         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V23 tmp21        [V23,T14] (  2,  1   )     int  ->  rdi         "field V08._length (fldOffset=0x8)" P-INDEP
-;* V24 tmp22        [V24    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V25 tmp23        [V25    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
-;  V26 tmp24        [V26,T09] (  3,  1.50)   byref  ->  rcx         "field V12._reference (fldOffset=0x0)" P-INDEP
-;  V27 tmp25        [V27,T11] (  3,  1.50)     int  ->  rax         "field V12._length (fldOffset=0x8)" P-INDEP
-;  V28 tmp26        [V28,T13] (  2,  1   )   byref  ->  rcx         single-def "field V14._reference (fldOffset=0x0)" P-INDEP
-;  V29 tmp27        [V29,T15] (  2,  1   )     int  ->  rdi         "field V14._length (fldOffset=0x8)" P-INDEP
-;* V30 tmp28        [V30    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-;* V31 tmp29        [V31    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
+;  V16 tmp14        [V16,T15] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V17 tmp15        [V17,T19] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;* V18 tmp16        [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V19 tmp17        [V19    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V20 tmp18        [V20,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V21 tmp19        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V22 tmp20        [V22    ] (  0,  0   )  ushort  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
+;* V23 tmp21        [V23    ] (  0,  0   )   byref  ->  zero-ref   
+;* V24 tmp22        [V24    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;  V25 tmp23        [V25,T16] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
+;  V26 tmp24        [V26,T20] (  2,  2   )     int  ->  rdi         "Inlining Arg"
+;* V27 tmp25        [V27,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V28 tmp26        [V28    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V29 tmp27        [V29    ] (  0,  0   )  ushort  ->  zero-ref    ld-addr-op "Inline stloc first use temp"
+;* V30 tmp28        [V30    ] (  0,  0   )   byref  ->  zero-ref   
+;* V31 tmp29        [V31    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
+;  V32 tmp30        [V32,T17] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
+;  V33 tmp31        [V33,T21] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;* V34 tmp32        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V35 tmp33        [V35    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V36 tmp34        [V36    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;  V37 tmp35        [V37,T09] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V38 tmp36        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V39 tmp37        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V40 tmp38        [V40    ] (  0,  0   )   byref  ->  zero-ref    single-def "impAppendStmt"
+;* V41 tmp39        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;* V42 tmp40        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
+;  V43 tmp41        [V43,T10] (  4,  2   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V44 tmp42        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V45 tmp43        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
+;  V46 tmp44        [V46,T07] (  4,  2   )   byref  ->  rsi         "field V04._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp45        [V47,T11] (  4,  2   )     int  ->  rdi         "field V04._length (fldOffset=0x8)" P-INDEP
+;* V48 tmp46        [V48    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V49 tmp47        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x8)" P-INDEP
+;  V50 tmp48        [V50,T22] (  2,  1   )   byref  ->  rsi         single-def "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V51 tmp49        [V51,T26] (  2,  1   )     int  ->  rdi         "field V08._length (fldOffset=0x8)" P-INDEP
+;* V52 tmp50        [V52    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V53 tmp51        [V53    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x8)" P-INDEP
+;  V54 tmp52        [V54,T08] (  4,  2   )   byref  ->  rax         "field V12._reference (fldOffset=0x0)" P-INDEP
+;  V55 tmp53        [V55,T12] (  4,  2   )     int  ->  rdx         "field V12._length (fldOffset=0x8)" P-INDEP
+;  V56 tmp54        [V56,T23] (  2,  1   )   byref  ->  rax         single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;  V57 tmp55        [V57,T27] (  2,  1   )     int  ->  rdx         "field V14._length (fldOffset=0x8)" P-INDEP
+;* V58 tmp56        [V58    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+;* V59 tmp57        [V59    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
+;  V60 tmp58        [V60,T05] (  6,  3   )   byref  ->  rcx         "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V61 tmp59        [V61,T13] (  4,  2   )     int  ->   r8         "field V18._length (fldOffset=0x8)" P-INDEP
+;  V62 tmp60        [V62,T06] (  6,  3   )   byref  ->   r9         "field V19._reference (fldOffset=0x0)" P-INDEP
+;  V63 tmp61        [V63,T02] ( 10,  5   )     int  ->  r10         "field V19._length (fldOffset=0x8)" P-INDEP
+;* V64 tmp62        [V64    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V21._reference (fldOffset=0x0)" P-INDEP
+;* V65 tmp63        [V65    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-INDEP
+;  V66 tmp64        [V66,T24] (  2,  1   )   byref  ->  rcx         single-def "field V24._reference (fldOffset=0x0)" P-INDEP
+;  V67 tmp65        [V67,T28] (  2,  1   )     int  ->   r8         "field V24._length (fldOffset=0x8)" P-INDEP
+;* V68 tmp66        [V68    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+;* V69 tmp67        [V69    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x8)" P-INDEP
+;  V70 tmp68        [V70,T25] (  2,  1   )   byref  ->   r9         single-def "field V31._reference (fldOffset=0x0)" P-INDEP
+;  V71 tmp69        [V71,T29] (  2,  1   )     int  ->  r10         "field V31._length (fldOffset=0x8)" P-INDEP
+;* V72 tmp70        [V72    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V73 tmp71        [V73    ] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x8)" P-INDEP
+;* V74 tmp72        [V74    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V75 tmp73        [V75    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x8)" P-INDEP
+;* V76 tmp74        [V76    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V77 tmp75        [V77    ] (  0,  0   )     int  ->  zero-ref    "field V38._length (fldOffset=0x8)" P-INDEP
+;* V78 tmp76        [V78    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V39._reference (fldOffset=0x0)" P-INDEP
+;* V79 tmp77        [V79    ] (  0,  0   )     int  ->  zero-ref    "field V39._length (fldOffset=0x8)" P-INDEP
+;* V80 tmp78        [V80    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V81 tmp79        [V81    ] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x8)" P-INDEP
+;* V82 tmp80        [V82    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+;* V83 tmp81        [V83    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
 ;
 ; Lcl frame size = 0
 
 G_M47132_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
        mov      r15, rsi
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M47132_IG02:
        mov      rdi, gword ptr [rbx+0x20]
        mov      rsi, gword ptr [r15+0x20]
        mov      edx, 5
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        test     eax, eax
-       je       SHORT G_M47132_IG09
-						;; size=29 bbWeight=1 PerfScore 8.75
+       je       G_M47132_IG15
+						;; size=33 bbWeight=1 PerfScore 8.75
 G_M47132_IG03:
        mov      rdi, gword ptr [rbx+0x18]
        test     rdi, rdi
        je       SHORT G_M47132_IG04
        lea      rsi, bword ptr [rdi+0x0C]
        mov      edi, dword ptr [rdi+0x08]
-       mov      edx, edi
        jmp      SHORT G_M47132_IG05
-						;; size=20 bbWeight=0.50 PerfScore 4.00
+						;; size=18 bbWeight=0.50 PerfScore 3.88
 G_M47132_IG04:
        xor      rsi, rsi
-       xor      edx, edx
+       xor      edi, edi
 						;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M47132_IG05:
-       mov      rdi, gword ptr [r15+0x18]
-       test     rdi, rdi
+       mov      rdx, gword ptr [r15+0x18]
+       test     rdx, rdx
        je       SHORT G_M47132_IG06
-       lea      rcx, bword ptr [rdi+0x0C]
-       mov      edi, dword ptr [rdi+0x08]
-       mov      eax, edi
+       lea      rax, bword ptr [rdx+0x0C]
+       mov      edx, dword ptr [rdx+0x08]
        jmp      SHORT G_M47132_IG07
-						;; size=20 bbWeight=0.50 PerfScore 4.00
+						;; size=18 bbWeight=0.50 PerfScore 3.88
 G_M47132_IG06:
-       xor      rcx, rcx
-       xor      eax, eax
+       xor      rax, rax
+       xor      edx, edx
 						;; size=4 bbWeight=0.50 PerfScore 0.25
 G_M47132_IG07:
-       mov      rdi, rsi
-       mov      esi, edx
-       mov      rdx, rcx
-       mov      ecx, eax
-       mov      rax, 0xD1FFAB1E      ; code for System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
-       call     [rax]System.Net.CookieComparer:EqualDomains(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):ubyte
-       test     eax, eax
+       mov      rcx, rsi
+       mov      r8d, edi
+       mov      r9, rax
+       mov      r10d, edx
+       test     r8d, r8d
+       je       SHORT G_M47132_IG08
+       cmp      word  ptr [rcx], 46
+       jne      SHORT G_M47132_IG08
+       add      rsi, 2
+       dec      edi
+       mov      rcx, rsi
+       mov      r8d, edi
+						;; size=35 bbWeight=0.50 PerfScore 3.62
+G_M47132_IG08:
+       test     r10d, r10d
        je       SHORT G_M47132_IG09
+       cmp      word  ptr [r9], 46
+       jne      SHORT G_M47132_IG09
+       add      rax, 2
+       dec      edx
+       mov      r9, rax
+       mov      r10d, edx
+						;; size=24 bbWeight=0.50 PerfScore 3.12
+G_M47132_IG09:
+       cmp      r8d, r10d
+       jne      SHORT G_M47132_IG15
+       test     r10d, r10d
+       je       SHORT G_M47132_IG13
+       cmp      r10d, 8
+       jl       SHORT G_M47132_IG11
+       cmp      r10d, 16
+       jge      SHORT G_M47132_IG10
+       mov      rdi, rcx
+       mov      rsi, r9
+       mov      edx, r10d
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+       call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte
+       jmp      SHORT G_M47132_IG12
+						;; size=45 bbWeight=0.50 PerfScore 5.50
+G_M47132_IG10:
+       mov      rdi, rcx
+       mov      rsi, r9
+       mov      edx, r10d
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+       call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector256`1[ushort]](byref,byref,int):ubyte
+       jmp      SHORT G_M47132_IG12
+						;; size=23 bbWeight=0.50 PerfScore 3.00
+G_M47132_IG11:
+       mov      rdi, rcx
+       mov      rsi, r9
+       mov      edx, r10d
+       mov      rax, 0xD1FFAB1E      ; code for System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+       call     [rax]System.Globalization.Ordinal:EqualsIgnoreCase_Scalar(byref,byref,int):ubyte
+						;; size=21 bbWeight=0.50 PerfScore 2.00
+G_M47132_IG12:
+       test     eax, eax
+       je       SHORT G_M47132_IG15
+						;; size=4 bbWeight=0.50 PerfScore 0.62
+G_M47132_IG13:
        mov      rdi, gword ptr [rbx+0x28]
        mov      rsi, gword ptr [r15+0x28]
        mov      edx, 4
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
        call     [rax]System.String:Equals(System.String,System.String,int):ubyte
        nop      
-						;; size=52 bbWeight=0.50 PerfScore 6.62
-G_M47132_IG08:
+						;; size=26 bbWeight=0.50 PerfScore 3.88
+G_M47132_IG14:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
-G_M47132_IG09:
+G_M47132_IG15:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M47132_IG10:
+G_M47132_IG16:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 156, prolog size 9, PerfScore 30.50, instruction count 54, allocated bytes for code 156 (MethodHash=629147e3) for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
+; Total bytes of code 282, prolog size 9, PerfScore 45.38, instruction count 91, allocated bytes for code 282 (MethodHash=629147e3) for method System.Net.CookieComparer:Equals(System.Net.Cookie,System.Net.Cookie):ubyte (FullOpts)
26 (8.02 % of base) - System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this
 ; Assembly listing for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V01 arg1         [V01,T08] (  3,  4   )     ref  ->  [rbp-0x38]  class-hnd single-def <System.Array>
-;  V02 loc0         [V02,T09] (  3,  6   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def <System.Buffers.SharedArrayPoolPartitions+Partition[]>
-;  V03 loc1         [V03,T01] (  7, 23   )     int  ->  rbx        
-;  V04 loc2         [V04,T05] (  4, 13   )     int  ->  r15        
+;  V00 this         [V00,T11] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V01 arg1         [V01,T09] (  3,  4   )     ref  ->  rbx         class-hnd single-def <System.Array>
+;  V02 loc0         [V02,T10] (  3,  6   )     ref  ->  r15         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V03 loc1         [V03,T01] (  7, 23   )     int  ->  r14        
+;  V04 loc2         [V04,T05] (  4, 13   )     int  ->  r13        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T02] (  2, 16   )     int  ->  rbx         "dup spill"
+;  V06 tmp1         [V06,T02] (  2, 16   )     int  ->  r14         "dup spill"
 ;* V07 tmp2         [V07    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V08 tmp3         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V09 tmp4         [V09,T07] (  3, 10   )   ubyte  ->  [rbp-0x2C]  "Inline stloc first use temp"
-;  V10 tmp5         [V10,T00] (  8, 56   )     ref  ->  r12         class-hnd exact "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V11 tmp6         [V11,T06] (  3, 10   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V12 tmp7         [V12,T03] (  5, 14   )     int  ->  [rbp-0x30]  spill-single-def "Inline stloc first use temp"
-;  V13 cse0         [V13,T04] (  5, 14   )     int  ->  r13         "CSE #01: aggressive"
-;  V14 rat0         [V14,T11] (  2,  4   )     int  ->  rbx         "Spilling to split statement for tree"
+;  V08 tmp3         [V08,T15] (  3,  2   )     int  ->  r14         "Inline return value spill temp"
+;  V09 tmp4         [V09,T08] (  4,  7   )     int  ->  r14         "dup spill"
+;* V10 tmp5         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V12 tmp7         [V12,T07] (  3, 10   )   ubyte  ->  [rbp-0x2C]  "Inline stloc first use temp"
+;  V13 tmp8         [V13,T00] (  8, 56   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V14 tmp9         [V14,T06] (  3, 10   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V15 tmp10        [V15,T03] (  5, 14   )     int  ->  [rbp-0x30]  spill-single-def "Inline stloc first use temp"
+;  V16 cse0         [V16,T14] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
+;  V17 cse1         [V17,T04] (  5, 14   )     int  ->  r12         "CSE #02: aggressive"
+;  V18 rat0         [V18,T12] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V19 rat1         [V19,T13] (  2,  4   )    long  ->  rax         "TLS access"
 ;
 ; Lcl frame size = 24
 
 G_M28192_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 24
-       vzeroupper 
        lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x38], rsi
-						;; size=26 bbWeight=1 PerfScore 8.75
+       mov      rbx, rsi
+						;; size=22 bbWeight=1 PerfScore 7.00
 G_M28192_IG02:
        mov      r15, gword ptr [rdi+0x08]
-       mov      gword ptr [rbp-0x40], r15
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=18 bbWeight=1 PerfScore 3.25
+       call     rax
+       add      rax, 76
+       mov      r14d, dword ptr [rax+0x10]
+       lea      ecx, [r14-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, r14w
+       test     eax, eax
+       je       SHORT G_M28192_IG04
+						;; size=49 bbWeight=1 PerfScore 10.75
 G_M28192_IG03:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M28192_IG16
-						;; size=23 bbWeight=1 PerfScore 7.50
+       sar      r14d, 16
+       jmp      SHORT G_M28192_IG05
+						;; size=6 bbWeight=0.50 PerfScore 1.25
 G_M28192_IG04:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      r14d, eax
+						;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M28192_IG05:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M28192_IG17
+       je       G_M28192_IG19
 						;; size=19 bbWeight=1 PerfScore 4.25
-G_M28192_IG05:
+G_M28192_IG06:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
-       mov      eax, ebx
+       mov      eax, r14d
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
-       mov      ebx, edx
-       xor      r15d, r15d
-       mov      r14, gword ptr [rbp-0x40]
-       mov      r13d, dword ptr [r14+0x08]
-       test     r13d, r13d
-       jle      G_M28192_IG12
-						;; size=38 bbWeight=1 PerfScore 30.50
-G_M28192_IG06:
-       cmp      ebx, r13d
-       jae      G_M28192_IG18
-       mov      edi, ebx
-       mov      r12, gword ptr [r14+8*rdi+0x10]
-       cmp      byte  ptr [r12], r12b
-       xor      eax, eax
-       mov      dword ptr [rbp-0x2C], eax
-       mov      rdi, r12
-       call     System.Threading.Monitor:Enter(System.Object)
-       mov      rdi, gword ptr [r12+0x08]
-       mov      eax, dword ptr [r12+0x10]
-       mov      dword ptr [rbp-0x30], eax
-       cmp      dword ptr [rdi+0x08], eax
-       jbe      SHORT G_M28192_IG09
-						;; size=51 bbWeight=4 PerfScore 72.00
+       mov      r14d, edx
+       xor      r13d, r13d
+       mov      r12d, dword ptr [r15+0x08]
+       test     r12d, r12d
+       jle      G_M28192_IG15
+						;; size=36 bbWeight=1 PerfScore 29.50
 G_M28192_IG07:
-       test     eax, eax
-       jne      SHORT G_M28192_IG08
-       xor      esi, esi
-       mov      dword ptr [r12+0x14], esi
-						;; size=11 bbWeight=2 PerfScore 5.00
+       cmp      r14d, r12d
+       jae      G_M28192_IG20
+       mov      edi, r14d
+       mov      rax, gword ptr [r15+8*rdi+0x10]
+       mov      gword ptr [rbp-0x38], rax
+       cmp      byte  ptr [rax], al
+       xor      ecx, ecx
+       mov      dword ptr [rbp-0x2C], ecx
+       mov      rdi, rax
+       call     System.Threading.Monitor:Enter(System.Object)
+       mov      rax, gword ptr [rbp-0x38]
+       mov      rdi, gword ptr [rax+0x08]
+       mov      ecx, dword ptr [rax+0x10]
+       mov      dword ptr [rbp-0x30], ecx
+       cmp      dword ptr [rdi+0x08], ecx
+       jbe      SHORT G_M28192_IG10
+						;; size=55 bbWeight=4 PerfScore 80.00
 G_M28192_IG08:
-       movsxd   rsi, eax
+       test     ecx, ecx
+       jne      SHORT G_M28192_IG11
+       xor      esi, esi
+       mov      dword ptr [rax+0x14], esi
+						;; size=9 bbWeight=2 PerfScore 5.00
+G_M28192_IG09:
+       movsxd   rsi, ecx
        lea      rdi, bword ptr [rdi+8*rsi+0x10]
-       mov      rsi, gword ptr [rbp-0x38]
+       mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      edi, dword ptr [rbp-0x30]
        inc      edi
-       mov      dword ptr [r12+0x10], edi
+       mov      rax, gword ptr [rbp-0x38]
+       mov      dword ptr [rax+0x10], edi
        mov      dword ptr [rbp-0x2C], 1
-						;; size=34 bbWeight=2 PerfScore 13.00
-G_M28192_IG09:
-       mov      rdi, r12
+						;; size=35 bbWeight=2 PerfScore 13.50
+G_M28192_IG10:
+       mov      rdi, rax
        call     System.Threading.Monitor:Exit(System.Object)
        cmp      dword ptr [rbp-0x2C], 0
-       jne      SHORT G_M28192_IG14
-       inc      ebx
-       cmp      r13d, ebx
-       jne      SHORT G_M28192_IG11
-						;; size=21 bbWeight=4 PerfScore 23.00
-G_M28192_IG10:
-       xor      ebx, ebx
-						;; size=2 bbWeight=2 PerfScore 0.50
+       je       SHORT G_M28192_IG12
+       jmp      SHORT G_M28192_IG17
+						;; size=16 bbWeight=4 PerfScore 25.00
 G_M28192_IG11:
-       inc      r15d
-       cmp      r13d, r15d
-       jg       SHORT G_M28192_IG06
-						;; size=8 bbWeight=4 PerfScore 6.00
+       jmp      SHORT G_M28192_IG09
+						;; size=2 bbWeight=1 PerfScore 2.00
 G_M28192_IG12:
+       inc      r14d
+       cmp      r12d, r14d
+       jne      SHORT G_M28192_IG14
+						;; size=8 bbWeight=4 PerfScore 6.00
+G_M28192_IG13:
+       xor      r14d, r14d
+						;; size=3 bbWeight=2 PerfScore 0.50
+G_M28192_IG14:
+       inc      r13d
+       cmp      r12d, r13d
+       jg       G_M28192_IG07
+						;; size=12 bbWeight=4 PerfScore 6.00
+G_M28192_IG15:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M28192_IG13:
+G_M28192_IG16:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M28192_IG14:
+G_M28192_IG17:
        mov      eax, 1
 						;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M28192_IG15:
+G_M28192_IG18:
        add      rsp, 24
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M28192_IG16:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M28192_IG04
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M28192_IG17:
+G_M28192_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
-       jmp      G_M28192_IG05
+       jmp      G_M28192_IG06
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M28192_IG18:
+G_M28192_IG20:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 324, prolog size 26, PerfScore 178.25, instruction count 93, allocated bytes for code 324 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
+; Total bytes of code 350, prolog size 22, PerfScore 197.00, instruction count 102, allocated bytes for code 350 (MethodHash=5f5691df) for method System.Buffers.SharedArrayPoolPartitions:TryPush(System.Array):ubyte:this (FullOpts)
26 (59.09 % of base) - System.Threading.Thread:GetCurrentProcessorId():int
 ; Assembly listing for method System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
-; partially interruptible
+; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
+; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+;  V01 tmp1         [V01,T04] (  2,  1   )     int  ->  rax         "Inline return value spill temp"
+;  V02 tmp2         [V02,T00] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V03 tmp3         [V03    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V04 cse0         [V04,T03] (  3,  3   )    long  ->  rax         "CSE #01: aggressive"
+;  V05 rat0         [V05,T01] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V06 rat1         [V06,T02] (  2,  4   )    long  ->  rax         "TLS access"
 ;
 ; Lcl frame size = 8
 
 G_M31145_IG01:
        push     rax
-       vzeroupper 
-						;; size=4 bbWeight=1 PerfScore 2.00
+						;; size=1 bbWeight=1 PerfScore 1.00
 G_M31145_IG02:
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      SHORT G_M31145_IG06
-						;; size=15 bbWeight=1 PerfScore 4.25
-G_M31145_IG03:
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=10 bbWeight=1 PerfScore 0.25
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M31145_IG05
+						;; size=42 bbWeight=1 PerfScore 8.75
+G_M31145_IG03:
+       mov      eax, ecx
+       sar      eax, 16
+						;; size=5 bbWeight=0.50 PerfScore 0.38
 G_M31145_IG04:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       nop      
-						;; size=3 bbWeight=1 PerfScore 3.25
-G_M31145_IG05:
        add      rsp, 8
        ret      
-						;; size=5 bbWeight=1 PerfScore 1.25
+						;; size=5 bbWeight=0.50 PerfScore 0.62
+G_M31145_IG05:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+						;; size=10 bbWeight=0.50 PerfScore 0.12
 G_M31145_IG06:
-       call     CORINFO_HELP_POLL_GC
-       jmp      SHORT G_M31145_IG03
-						;; size=7 bbWeight=0 PerfScore 0.00
+       add      rsp, 8
+       tail.jmp [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+						;; size=7 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 44, prolog size 4, PerfScore 11.00, instruction count 12, allocated bytes for code 44 (MethodHash=d4fe8656) for method System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)
+; Total bytes of code 70, prolog size 1, PerfScore 12.00, instruction count 18, allocated bytes for code 70 (MethodHash=d4fe8656) for method System.Threading.Thread:GetCurrentProcessorId():int (FullOpts)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 14, 2024

Top method improvements

-36 (-1.89 % of base) - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this
 ; Assembly listing for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 18 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 17 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  [rbp-0x40]  this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
+;  V00 this         [V00,T10] (  9,  5.50)     ref  ->  r15         this class-hnd single-def <System.Buffers.SharedArrayPool`1[ubyte]>
 ;  V01 arg1         [V01,T08] (  9,  6   )     int  ->  rbx        
-;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  [rbp-0x48]  class-hnd exact spill-single-def <System.Buffers.ArrayPoolEventSource>
+;  V02 loc0         [V02,T16] (  8,  4.50)     ref  ->  r14         class-hnd exact single-def <System.Buffers.ArrayPoolEventSource>
 ;  V03 loc1         [V03,T11] ( 14,  7   )     ref  ->  registers   class-hnd <ubyte[]>
 ;  V04 loc2         [V04,T14] (  9,  5   )     int  ->  r13        
-;  V05 loc3         [V05,T18] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
-;  V06 loc4         [V06,T30] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
-;  V07 loc5         [V07,T31] (  3,  1.50)     ref  ->  rax         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
-;  V08 loc6         [V08,T34] (  3,  1.50)     int  ->  rbx        
+;  V05 loc3         [V05,T19] (  5,  3.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolThreadLocalArray[]>
+;  V06 loc4         [V06,T32] (  3,  1.50)     ref  ->  r12         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions[]>
+;  V07 loc5         [V07,T33] (  3,  1.50)     ref  ->  rdi         class-hnd exact single-def <System.Buffers.SharedArrayPoolPartitions>
+;  V08 loc6         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T19] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
-;  V11 tmp2         [V11,T20] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
-;  V12 tmp3         [V12,T21] (  2,  2   )     int  ->  rcx         "impAppendStmt"
+;  V10 tmp1         [V10,T20] (  2,  2   )     int  ->  [rbp-0x2C]  spill-single-def "impAppendStmt"
+;  V11 tmp2         [V11,T21] (  2,  2   )     int  ->  [rbp-0x30]  spill-single-def "impAppendStmt"
+;  V12 tmp3         [V12,T22] (  2,  2   )     int  ->  rcx         "impAppendStmt"
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T36] (  2,  1   )     int  ->   r9        
+;  V23 tmp14        [V23,T40] (  2,  1   )     int  ->   r9        
 ;* V24 tmp15        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
-;  V25 tmp16        [V25,T22] (  2,  2   )     int  ->  rbx         "impAppendStmt"
-;  V26 tmp17        [V26,T23] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
+;  V25 tmp16        [V25,T23] (  2,  2   )     int  ->  rbx         "impAppendStmt"
+;  V26 tmp17        [V26,T24] (  2,  2   )     int  ->  [rbp-0x34]  spill-single-def "impAppendStmt"
 ;* V27 tmp18        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
-;  V28 tmp19        [V28,T24] (  2,  2   )     int  ->  r12         "impAppendStmt"
-;  V29 tmp20        [V29,T25] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
+;  V28 tmp19        [V28,T25] (  2,  2   )     int  ->  r12         "impAppendStmt"
+;  V29 tmp20        [V29,T26] (  2,  2   )     int  ->  [rbp-0x38]  spill-single-def "impAppendStmt"
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V32 tmp23        [V32,T32] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
-;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
+;  V32 tmp23        [V32,T34] (  3,  1.50)     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Array>
+;  V33 tmp24        [V33,T15] (  3,  5   )     ref  ->  r12         class-hnd exact single-def "Inline stloc first use temp" <System.Buffers.SharedArrayPoolPartitions+Partition[]>
 ;  V34 tmp25        [V34,T01] (  7, 22.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  r15         "Inline stloc first use temp"
+;  V35 tmp26        [V35,T05] (  4, 12.50)     int  ->  [rbp-0x3C]  "Inline stloc first use temp"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "dup spill" <System.Array>
 ;* V37 tmp28        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Array>
 ;  V38 tmp29        [V38,T02] (  2, 16   )     int  ->  rbx         "dup spill"
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
-;  V41 tmp32        [V41,T07] (  4, 10.50)     ref  ->  [rbp-0x58]  class-hnd "Inline stloc first use temp" <System.Array>
-;  V42 tmp33        [V42,T00] (  7, 52   )     ref  ->  [rbp-0x60]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
-;  V43 tmp34        [V43,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
-;  V44 tmp35        [V44,T03] (  5, 14   )     int  ->  rcx         "Inline stloc first use temp"
-;  V45 tmp36        [V45,T33] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <ubyte[]>
-;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V47 tmp38        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
-;  V48 tmp39        [V48,T26] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V49 tmp40        [V49,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V50 tmp41        [V50,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
-;  V51 cse0         [V51,T37] (  2,  1   )     int  ->  rdi         "CSE #04: moderate"
-;  V52 cse1         [V52,T35] (  3,  1.50)    long  ->  rax         "CSE #03: moderate"
-;  V53 cse2         [V53,T04] (  5, 13   )     int  ->  r14         "CSE #05: moderate"
-;  V54 cse3         [V54,T09] (  2,  8   )     int  ->  rdx         "CSE #06: moderate"
-;  V55 cse4         [V55,T38] (  2,  1   )     int  ->  rdi         "CSE #01: moderate"
-;  V56 rat0         [V56,T29] (  2,  2   )     int  ->  rbx         "Spilling to split statement for tree"
-;  V57 rat1         [V57,T17] (  3,  4   )   byref  ->  rax         "TLS field access"
-;  V58 rat2         [V58,T13] (  3,  6   )    long  ->  rax         "TLS access"
-;  V59 rat3         [V59,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V40 tmp31        [V40,T37] (  3,  1.50)     int  ->  rbx         "Inline return value spill temp"
+;  V41 tmp32        [V41,T17] (  4,  4   )     int  ->  rbx         "dup spill"
+;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Array>
+;  V44 tmp35        [V44,T07] (  4, 10.50)     ref  ->  [rbp-0x48]  class-hnd "Inline stloc first use temp" <System.Array>
+;  V45 tmp36        [V45,T00] (  7, 52   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "Inlining Arg" <System.Buffers.SharedArrayPoolPartitions+Partition>
+;  V46 tmp37        [V46,T06] (  4, 12   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <System.Array[]>
+;  V47 tmp38        [V47,T03] (  5, 14   )     int  ->  rax         "Inline stloc first use temp"
+;  V48 tmp39        [V48,T35] (  3,  1.50)     ref  ->  r12         class-hnd "Inline return value spill temp" <ubyte[]>
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V50 tmp41        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
+;  V51 tmp42        [V51,T27] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V52 tmp43        [V52,T28] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V53 tmp44        [V53,T29] (  2,  2   )     int  ->  rcx         "argument with side effect"
+;  V54 cse0         [V54,T38] (  3,  1.50)    long  ->  rax         "CSE #05: conservative"
+;  V55 cse1         [V55,T41] (  2,  1   )     int  ->  rdi         "CSE #04: conservative"
+;  V56 cse2         [V56,T39] (  3,  1.50)    long  ->  rax         "CSE #03: conservative"
+;  V57 cse3         [V57,T04] (  5, 13   )     int  ->  [rbp-0x40]  spill-single-def "CSE #06: moderate"
+;  V58 cse4         [V58,T09] (  2,  8   )     int  ->  rcx         "CSE #07: moderate"
+;  V59 cse5         [V59,T42] (  2,  1   )     int  ->  rdi         "CSE #01: conservative"
+;  V60 rat0         [V60,T18] (  3,  4   )   byref  ->  rax         "TLS field access"
+;  V61 rat1         [V61,T13] (  3,  6   )    long  ->  rax         "TLS access"
+;  V62 rat2         [V62,T12] (  3,  6   )   byref  ->  rax         "ThreadStaticBlockBase access"
+;  V63 rat3         [V63,T30] (  2,  2   )    long  ->  rax         "TLS field access"
+;  V64 rat4         [V64,T31] (  2,  2   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 40
 
 G_M46002_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       vzeroupper 
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 40
+       lea      rbp, [rsp+0x50]
        mov      r15, rdi
        mov      ebx, esi
-						;; size=27 bbWeight=1 PerfScore 8.25
+						;; size=24 bbWeight=1 PerfScore 7.25
 G_M46002_IG02:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
-       mov      gword ptr [rbp-0x48], r14
        lea      edi, [rbx-0x01]
        or       edi, 15
        xor      r13d, r13d
        lzcnt    r13d, edi
        xor      r13d, 31
        add      r13d, -3
        mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
        call     rax
        cmp      dword ptr [rax], 10
        jle      G_M46002_IG30
        mov      rdi, gword ptr [rax+0x08]
        mov      rax, bword ptr [rdi+0x50]
        test     rax, rax
        je       G_M46002_IG30
-						;; size=87 bbWeight=1 PerfScore 19.50
+						;; size=83 bbWeight=1 PerfScore 18.50
 G_M46002_IG03:
        mov      r12, gword ptr [rax+0x10]
        test     r12, r12
        je       SHORT G_M46002_IG05
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M46002_IG04:
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        jbe      SHORT G_M46002_IG05
        mov      eax, r13d
        shl      rax, 4
        mov      rcx, gword ptr [r12+rax+0x10]
        test     rcx, rcx
        jne      G_M46002_IG26
 						;; size=31 bbWeight=0.50 PerfScore 3.62
 G_M46002_IG05:
-       mov      gword ptr [rbp-0x40], r15
        mov      r12, gword ptr [r15+0x10]
        mov      edi, dword ptr [r12+0x08]
        cmp      edi, r13d
        ja       SHORT G_M46002_IG09
-       mov      r15, gword ptr [rbp-0x40]
        test     ebx, ebx
        je       SHORT G_M46002_IG06
        mov      edi, ebx
        mov      rsi, 0xD1FFAB1E      ; 'minimumLength'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowIfNegative[int](int,System.String)
        jmp      G_M46002_IG22
-						;; size=55 bbWeight=0.50 PerfScore 7.12
+						;; size=47 bbWeight=0.50 PerfScore 6.12
 G_M46002_IG06:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
        je       G_M46002_IG31
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG07:
        mov      rax, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[ubyte]:Value
        mov      rax, gword ptr [rax]
 						;; size=13 bbWeight=0.50 PerfScore 1.12
 G_M46002_IG08:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG09:
-       mov      r15, gword ptr [rbp-0x40]
-       mov      eax, r13d
-       mov      rax, gword ptr [r12+8*rax+0x10]
-       test     rax, rax
+       mov      edi, r13d
+       mov      rdi, gword ptr [r12+8*rdi+0x10]
+       test     rdi, rdi
        je       G_M46002_IG21
-       mov      gword ptr [rbp-0x40], r15
-       mov      r12, gword ptr [rax+0x08]
-       mov      gword ptr [rbp-0x50], r12
+       mov      r12, gword ptr [rdi+0x08]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=43 bbWeight=0.50 PerfScore 4.38
+       call     rax
+       add      rax, 76
+       mov      ebx, dword ptr [rax+0x10]
+       lea      ecx, [rbx-0x01]
+       mov      dword ptr [rax+0x10], ecx
+       movzx    rax, bx
+       test     eax, eax
+       je       SHORT G_M46002_IG10
+       sar      ebx, 16
+       jmp      SHORT G_M46002_IG11
+						;; size=68 bbWeight=0.50 PerfScore 8.38
 G_M46002_IG10:
-       call     rax ; Interop+Sys:SchedGetCpu():int
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
        mov      ebx, eax
-       mov      rax, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rax], 0
-       jne      G_M46002_IG32
-						;; size=23 bbWeight=0.50 PerfScore 3.75
+						;; size=14 bbWeight=0.50 PerfScore 1.75
 G_M46002_IG11:
        mov      rax, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rax], 1
-       je       G_M46002_IG33
+       je       G_M46002_IG32
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG12:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.SharedArrayPoolStatics:s_partitionCount
        mov      eax, ebx
        xor      edx, edx
        div      edx:eax, dword ptr [rdi]
        mov      ebx, edx
-       xor      r15d, r15d
-       mov      r12, gword ptr [rbp-0x50]
-       mov      r14d, dword ptr [r12+0x08]
-       test     r14d, r14d
+       xor      eax, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, dword ptr [r12+0x08]
+       mov      dword ptr [rbp-0x40], ecx
+       test     ecx, ecx
        jle      SHORT G_M46002_IG18
-						;; size=35 bbWeight=0.50 PerfScore 15.25
+						;; size=35 bbWeight=0.50 PerfScore 15.75
 G_M46002_IG13:
-       cmp      ebx, r14d
-       jae      G_M46002_IG34
+       cmp      ebx, ecx
+       jae      G_M46002_IG33
        mov      edi, ebx
-       mov      rax, gword ptr [r12+8*rdi+0x10]
-       mov      gword ptr [rbp-0x60], rax
-       cmp      byte  ptr [rax], al
-       xor      rcx, rcx
-       mov      gword ptr [rbp-0x58], rcx
-       mov      rdi, rax
+       mov      rdx, gword ptr [r12+8*rdi+0x10]
+       mov      gword ptr [rbp-0x50], rdx
+       cmp      byte  ptr [rdx], dl
+       xor      rsi, rsi
+       mov      gword ptr [rbp-0x48], rsi
+       mov      rdi, rdx
        call     System.Threading.Monitor:Enter(System.Object)
-       mov      rax, gword ptr [rbp-0x60]
-       mov      rdi, gword ptr [rax+0x08]
-       mov      ecx, dword ptr [rax+0x10]
-       dec      ecx
-       mov      edx, dword ptr [rdi+0x08]
-       cmp      edx, ecx
+       mov      rdx, gword ptr [rbp-0x50]
+       mov      rdi, gword ptr [rdx+0x08]
+       mov      eax, dword ptr [rdx+0x10]
+       dec      eax
+       mov      ecx, dword ptr [rdi+0x08]
+       cmp      ecx, eax
        jbe      SHORT G_M46002_IG15
-						;; size=56 bbWeight=4 PerfScore 74.00
+						;; size=55 bbWeight=4 PerfScore 74.00
 G_M46002_IG14:
-       mov      edx, ecx
-       mov      rdx, gword ptr [rdi+8*rdx+0x10]
-       mov      gword ptr [rbp-0x58], rdx
-       mov      esi, ecx
+       mov      ecx, eax
+       mov      rsi, gword ptr [rdi+8*rcx+0x10]
+       mov      gword ptr [rbp-0x48], rsi
+       mov      esi, eax
        xor      r8, r8
        mov      gword ptr [rdi+8*rsi+0x10], r8
-       mov      dword ptr [rax+0x10], ecx
+       mov      dword ptr [rdx+0x10], eax
 						;; size=24 bbWeight=2 PerfScore 11.50
 G_M46002_IG15:
-       mov      rdi, rax
+       mov      rdi, rdx
        call     System.Threading.Monitor:Exit(System.Object)
-       mov      rsi, gword ptr [rbp-0x58]
+       mov      rsi, gword ptr [rbp-0x48]
        test     rsi, rsi
        jne      SHORT G_M46002_IG19
        inc      ebx
-       cmp      r14d, ebx
+       mov      esi, dword ptr [rbp-0x40]
+       cmp      esi, ebx
        jne      SHORT G_M46002_IG17
-						;; size=24 bbWeight=4 PerfScore 20.00
+						;; size=26 bbWeight=4 PerfScore 24.00
 G_M46002_IG16:
        xor      ebx, ebx
 						;; size=2 bbWeight=2 PerfScore 0.50
 G_M46002_IG17:
-       inc      r15d
-       cmp      r14d, r15d
+       mov      eax, dword ptr [rbp-0x3C]
+       inc      eax
+       cmp      esi, eax
+       mov      dword ptr [rbp-0x3C], eax
+       mov      ecx, esi
        jg       SHORT G_M46002_IG13
-						;; size=8 bbWeight=4 PerfScore 6.00
+						;; size=14 bbWeight=4 PerfScore 15.00
 G_M46002_IG18:
        xor      rcx, rcx
        jmp      SHORT G_M46002_IG20
 						;; size=4 bbWeight=0.50 PerfScore 1.12
 G_M46002_IG19:
        mov      rcx, rsi
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46002_IG20:
        mov      r12, rcx
        test     r12, r12
-       mov      r15, gword ptr [rbp-0x40]
        jne      G_M46002_IG25
-						;; size=16 bbWeight=0.50 PerfScore 1.25
+						;; size=12 bbWeight=0.50 PerfScore 0.75
 G_M46002_IG21:
        mov      esi, 16
        shlx     ebx, esi, r13d
 						;; size=10 bbWeight=0.50 PerfScore 0.38
 G_M46002_IG22:
        cmp      ebx, 0x800
        jl       SHORT G_M46002_IG23
        mov      esi, ebx
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        mov      edx, 16
        call     System.GC:AllocateNewArray(long,int,int):System.Array
        mov      r12, rax
        jmp      SHORT G_M46002_IG24
 						;; size=35 bbWeight=0.50 PerfScore 2.62
 G_M46002_IG23:
        movsxd   rsi, ebx
        mov      rdi, 0xD1FFAB1E      ; ubyte[]
        call     CORINFO_HELP_NEWARR_1_VC
        mov      r12, rax
 						;; size=21 bbWeight=0.50 PerfScore 0.88
 G_M46002_IG24:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M46002_IG27
        cmp      byte  ptr [r12], r12b
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x2C], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x2C]
        mov      rdi, r14
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x30], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      rdi, gword ptr [r15+0x10]
        mov      r9d, 1
        mov      esi, 2
        cmp      dword ptr [rdi+0x08], r13d
        cmovg    r9d, esi
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x30]
        mov      r8d, -1
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferAllocated(int,int,int,int,int):this
        jmp      G_M46002_IG27
-						;; size=148 bbWeight=0.50 PerfScore 18.12
+						;; size=144 bbWeight=0.50 PerfScore 17.62
 G_M46002_IG25:
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       G_M46002_IG27
        mov      rdi, r12
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ebx, eax
        mov      eax, dword ptr [r12+0x08]
        mov      dword ptr [rbp-0x34], eax
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, ebx
        mov      edx, dword ptr [rbp-0x34]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        jmp      SHORT G_M46002_IG27
-						;; size=71 bbWeight=0.50 PerfScore 9.00
+						;; size=67 bbWeight=0.50 PerfScore 8.50
 G_M46002_IG26:
        mov      rbx, rcx
        xor      rdi, rdi
        mov      gword ptr [r12+rax+0x10], rdi
-       mov      r14, gword ptr [rbp-0x48]
        cmp      byte  ptr [r14+0x9D], 0
        je       SHORT G_M46002_IG29
        mov      rdi, rbx
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      r12d, eax
        mov      eax, dword ptr [rbx+0x08]
        mov      dword ptr [rbp-0x38], eax
        cmp      byte  ptr [r15], r15b
        mov      rdi, r15
        call     System.Runtime.CompilerServices.RuntimeHelpers:GetHashCode(System.Object):int
        mov      ecx, eax
        mov      esi, r12d
        mov      edx, dword ptr [rbp-0x38]
        mov      rdi, r14
        mov      r8d, r13d
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        call     [rax]System.Buffers.ArrayPoolEventSource:BufferRented(int,int,int,int):this
        mov      r12, rbx
-						;; size=81 bbWeight=0.50 PerfScore 10.38
+						;; size=77 bbWeight=0.50 PerfScore 9.88
 G_M46002_IG27:
        mov      rax, r12
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46002_IG28:
-       add      rsp, 56
+       add      rsp, 40
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M46002_IG29:
        mov      r12, rbx
        jmp      SHORT G_M46002_IG27
 						;; size=5 bbWeight=0.25 PerfScore 0.56
 G_M46002_IG30:
        mov      edi, 10
        call     CORINFO_HELP_GETDYNAMIC_GCTHREADSTATIC_BASE_NOCTOR_OPTIMIZED
        jmp      G_M46002_IG03
 						;; size=15 bbWeight=0 PerfScore 0.00
 G_M46002_IG31:
        mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[ubyte]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M46002_IG07
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M46002_IG32:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M46002_IG11
-						;; size=10 bbWeight=0 PerfScore 0.00
-G_M46002_IG33:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.SharedArrayPoolStatics
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M46002_IG12
 						;; size=20 bbWeight=0 PerfScore 0.00
-G_M46002_IG34:
+G_M46002_IG33:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 973, prolog size 27, PerfScore 231.31, instruction count 249, allocated bytes for code 973 (MethodHash=a1ab4c4d) for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
+; Total bytes of code 955, prolog size 24, PerfScore 241.81, instruction count 250, allocated bytes for code 955 (MethodHash=a1ab4c4d) for method System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (FullOpts)
-36 (-5.98 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 10 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 11 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  3,  3   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r13         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T04] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T08] (  3,  3   )     ref  ->  r12         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T07] (  3,  3   )     ref  ->  r12         class-hnd single-def <System.Object>
 ;  V03 arg3         [V03,T01] (  8,  5.50)    long  ->  rbx         single-def
 ;  V04 arg4         [V04,T02] (  8,  5   )    long  ->  r15         single-def
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V07 tmp2         [V07,T14] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V07 tmp2         [V07,T18] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V09 tmp4         [V09,T15] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V09 tmp4         [V09,T19] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V10 tmp5         [V10    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V11 tmp6         [V11,T12] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V11 tmp6         [V11,T16] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp7         [V12    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V13 tmp8         [V13,T13] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V13 tmp8         [V13,T17] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V14 tmp9         [V14    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp10        [V15    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V16 tmp11        [V16,T00] (  8, 15   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V16 tmp11        [V16,T00] (  8, 15   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V17 tmp12        [V17,T05] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V18 tmp13        [V18,T10] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V19 tmp14        [V19,T03] (  4,  8   )    long  ->  rdi         "impAppendStmt"
-;  V20 tmp15        [V20,T09] (  3,  5   )     int  ->  rbx         "Inlining Arg"
+;  V18 tmp13        [V18,T09] (  2,  4   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V19 tmp14        [V19    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V20 tmp15        [V20,T08] (  3,  5   )     int  ->  rbx         "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V22 tmp17        [V22    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V23 tmp18        [V23,T16] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V24 tmp19        [V24,T17] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V25 tmp20        [V25,T18] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V26 tmp21        [V26,T19] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V27 tmp22        [V27,T06] (  3,  6   )    long  ->  rdi         "index expr"
-;  V28 cse0         [V28,T11] (  2,  2   )     ref  ->  r12         "CSE #01: moderate"
+;  V23 tmp18        [V23,T14] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V24 tmp19        [V24,T03] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V25 tmp20        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V26 tmp21        [V26,T20] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V27 tmp22        [V27,T21] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V28 tmp23        [V28,T22] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V29 tmp24        [V29,T23] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V30 tmp25        [V30,T10] (  2,  4   )    long  ->  rdi         "index expr"
+;  V31 cse0         [V31,T13] (  3,  3   )    long  ->  rax         "CSE #01: moderate"
+;  V32 cse1         [V32,T15] (  2,  2   )     ref  ->  r12         "CSE #02: moderate"
+;  V33 rat0         [V33,T11] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V34 rat1         [V34,T12] (  2,  4   )    long  ->  rax         "TLS access"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M46466_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x30], rdi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      r13, rdi
        mov      r14, rsi
        mov      r12, rdx
        mov      rbx, rcx
        mov      r15, r8
-						;; size=38 bbWeight=1 PerfScore 9.75
+						;; size=31 bbWeight=1 PerfScore 8.75
 G_M46466_IG02:
        cmp      rbx, -1
        jl       G_M46466_IG16
        cmp      r15, -1
        jl       G_M46466_IG15
        mov      edi, 0xD1FFAB1E
        cmp      rbx, rdi
        jl       SHORT G_M46466_IG04
 						;; size=30 bbWeight=1 PerfScore 4.00
 G_M46466_IG03:
        mov      edi, 0xD1FFAB1E
        cmp      rbx, rdi
-       jg       G_M46466_IG12
+       jg       G_M46466_IG13
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M46466_IG04:
        mov      edi, 0xD1FFAB1E
        cmp      r15, rdi
        jl       SHORT G_M46466_IG06
 						;; size=10 bbWeight=1 PerfScore 1.50
 G_M46466_IG05:
        mov      edi, 0xD1FFAB1E
        cmp      r15, rdi
-       jg       G_M46466_IG13
+       jg       G_M46466_IG14
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M46466_IG06:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r14, gword ptr [rbp-0x38]
+       mov      r14, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r14+0x28]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [r14+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [r14+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r12, gword ptr [rax]
-       mov      gword ptr [rbp-0x40], r12
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r12, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=131 bbWeight=1 PerfScore 20.00
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M46466_IG08
+						;; size=159 bbWeight=1 PerfScore 27.50
 G_M46466_IG07:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M46466_IG17
-       mov      r12, gword ptr [rbp-0x40]
+       sar      ecx, 16
+       jmp      SHORT G_M46466_IG09
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M46466_IG08:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M46466_IG09:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r12+8*rdi+0x10]
-       mov      r14, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [r14+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      G_M46466_IG14
-						;; size=76 bbWeight=1 PerfScore 16.00
-G_M46466_IG08:
        cmp      ebx, -1
-       je       SHORT G_M46466_IG10
-						;; size=5 bbWeight=1 PerfScore 1.25
-G_M46466_IG09:
+       je       SHORT G_M46466_IG11
+						;; size=25 bbWeight=1 PerfScore 5.25
+G_M46466_IG10:
        mov      rdi, r14
        mov      esi, ebx
        mov      edx, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=20 bbWeight=0.50 PerfScore 2.00
-G_M46466_IG10:
+G_M46466_IG11:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r13, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=47 bbWeight=1 PerfScore 6.25
-G_M46466_IG11:
-       add      rsp, 24
+						;; size=43 bbWeight=1 PerfScore 5.25
+G_M46466_IG12:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M46466_IG12:
+G_M46466_IG13:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, rbx
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M46466_IG13:
+G_M46466_IG14:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r15
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M46466_IG14:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M46466_IG08
-						;; size=10 bbWeight=0 PerfScore 0.00
 G_M46466_IG15:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r15
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
 G_M46466_IG16:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, rbx
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
-G_M46466_IG17:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 602, prolog size 22, PerfScore 66.50, instruction count 138, allocated bytes for code 602 (MethodHash=1cc84a7d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
+; Total bytes of code 566, prolog size 16, PerfScore 63.00, instruction count 132, allocated bytes for code 566 (MethodHash=1cc84a7d) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,long,long):this (FullOpts)
-36 (-4.36 % of base) - System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this
 ; Assembly listing for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 9 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 8 single block inlinees; 13 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] (  3,  3   )     ref  ->  [rbp-0x30]  this class-hnd single-def <System.Threading.Timer>
+;  V00 this         [V00,T06] (  3,  3   )     ref  ->  r15         this class-hnd single-def <System.Threading.Timer>
 ;  V01 arg1         [V01,T02] (  4,  4   )     ref  ->  rbx         class-hnd single-def <System.Threading.TimerCallback>
-;  V02 arg2         [V02,T08] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T07] (  3,  3   )     ref  ->  r14         class-hnd single-def <System.Object>
 ;* V03 arg3         [V03    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
 ;* V04 arg4         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
-;  V05 loc0         [V05,T05] (  7,  4.50)    long  ->  r13        
-;  V06 loc1         [V06,T06] (  7,  4   )    long  ->  r12        
+;  V05 loc0         [V05,T04] (  7,  4.50)    long  ->  r13        
+;  V06 loc1         [V06,T05] (  7,  4   )    long  ->  r12        
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T20] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
-;  V09 tmp2         [V09,T24] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
+;  V08 tmp1         [V08,T24] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
+;  V09 tmp2         [V09,T28] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
 ;* V10 tmp3         [V10    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V11 tmp4         [V11,T16] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V11 tmp4         [V11,T20] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp5         [V12    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V13 tmp6         [V13,T14] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V14 tmp7         [V14,T21] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
-;  V15 tmp8         [V15,T25] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
+;* V13 tmp6         [V13,T18] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;  V14 tmp7         [V14,T25] (  6,  4.50)  double  ->  mm0         "Inline return value spill temp"
+;  V15 tmp8         [V15,T29] (  4,  3   )  double  ->  mm0         "Inline stloc first use temp"
 ;* V16 tmp9         [V16    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V17 tmp10        [V17,T17] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V17 tmp10        [V17,T21] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V18 tmp11        [V18    ] (  0,  0   )    long  ->  zero-ref    ld-addr-op "Inlining Arg"
-;* V19 tmp12        [V19,T15] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V19 tmp12        [V19,T19] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp14        [V21    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V22 tmp15        [V22,T00] (  8, 15   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
+;  V22 tmp15        [V22,T00] (  8, 15   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Threading.TimerQueueTimer>
 ;  V23 tmp16        [V23,T03] (  3,  6   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Threading.TimerHolder>
-;  V24 tmp17        [V24,T10] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.Threading.TimerQueue[]>
-;  V25 tmp18        [V25,T01] (  4,  8   )    long  ->  rdi         "impAppendStmt"
-;  V26 tmp19        [V26,T09] (  3,  5   )     int  ->  r13         "Inlining Arg"
+;  V24 tmp17        [V24,T09] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <System.Threading.TimerQueue[]>
+;* V25 tmp18        [V25    ] (  0,  0   )    long  ->  zero-ref    "impAppendStmt"
+;  V26 tmp19        [V26,T08] (  3,  5   )     int  ->  r13         "Inlining Arg"
 ;* V27 tmp20        [V27    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V28 tmp21        [V28    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V29 tmp22        [V29,T11] (  2,  2   )    long  ->  rcx         single-def "field V03._ticks (fldOffset=0x0)" P-INDEP
-;  V30 tmp23        [V30,T12] (  2,  2   )    long  ->   r8         single-def "field V04._ticks (fldOffset=0x0)" P-INDEP
-;  V31 tmp24        [V31,T27] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V32 tmp25        [V32,T28] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V33 tmp26        [V33,T29] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V34 tmp27        [V34,T30] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V35 tmp28        [V35,T04] (  3,  6   )    long  ->  rdi         "index expr"
-;  V36 cse0         [V36,T13] (  2,  2   )     ref  ->  r14         "CSE #04: moderate"
-;  V37 cse1         [V37,T22] (  5,  4   )  double  ->  mm2         "CSE #01: aggressive"
-;  V38 cse2         [V38,T23] (  6,  3   )  double  ->  mm3         multi-def "CSE #02: moderate"
-;  V39 cse3         [V39,T26] (  3,  3   )  double  ->  mm1         "CSE #03: moderate"
-;  V40 rat0         [V40,T18] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V41 rat1         [V41,T19] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V29 tmp22        [V29,T16] (  3,  2   )     int  ->  rcx         "Inline return value spill temp"
+;  V30 tmp23        [V30,T01] (  4,  7   )     int  ->  rcx         "dup spill"
+;* V31 tmp24        [V31    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;  V32 tmp25        [V32,T10] (  2,  2   )    long  ->  rcx         single-def "field V03._ticks (fldOffset=0x0)" P-INDEP
+;  V33 tmp26        [V33,T11] (  2,  2   )    long  ->   r8         single-def "field V04._ticks (fldOffset=0x0)" P-INDEP
+;  V34 tmp27        [V34,T31] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V35 tmp28        [V35,T32] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V36 tmp29        [V36,T33] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V37 tmp30        [V37,T34] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V38 tmp31        [V38,T12] (  2,  4   )    long  ->  rdi         "index expr"
+;  V39 cse0         [V39,T15] (  3,  3   )    long  ->  rax         "CSE #04: moderate"
+;  V40 cse1         [V40,T17] (  2,  2   )     ref  ->  r14         "CSE #05: moderate"
+;  V41 cse2         [V41,T26] (  5,  4   )  double  ->  mm2         "CSE #01: moderate"
+;  V42 cse3         [V42,T27] (  6,  3   )  double  ->  mm3         multi-def "CSE #02: moderate"
+;  V43 cse4         [V43,T30] (  3,  3   )  double  ->  mm1         "CSE #03: moderate"
+;  V44 rat0         [V44,T13] (  2,  4   )    long  ->  rax         "TLS field access"
+;  V45 rat1         [V45,T14] (  2,  4   )    long  ->  rax         "TLS access"
+;  V46 rat2         [V46,T22] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V47 rat3         [V47,T23] (  3,  6   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 8
 
 G_M54850_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 24
-       vzeroupper 
-       lea      rbp, [rsp+0x40]
-       mov      gword ptr [rbp-0x30], rdi
+       push     rax
+       lea      rbp, [rsp+0x30]
+       mov      r15, rdi
        mov      rbx, rsi
        mov      r14, rdx
-						;; size=32 bbWeight=1 PerfScore 9.25
+						;; size=25 bbWeight=1 PerfScore 8.25
 G_M54850_IG02:
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, rcx
        vmovsd   xmm1, qword ptr [reloc @RWD00]
        vdivsd   xmm0, xmm0, xmm1
        vmovsd   xmm2, qword ptr [reloc @RWD08]
        vucomisd xmm0, xmm2
        ja       SHORT G_M54850_IG05
 						;; size=35 bbWeight=1 PerfScore 27.33
 G_M54850_IG03:
        vmovsd   xmm3, qword ptr [reloc @RWD16]
        vucomisd xmm3, xmm0
        ja       SHORT G_M54850_IG04
        jmp      SHORT G_M54850_IG06
 						;; size=16 bbWeight=0.50 PerfScore 4.00
 G_M54850_IG04:
        vmovaps  xmm0, xmm3
        jmp      SHORT G_M54850_IG06
 						;; size=6 bbWeight=0.50 PerfScore 1.12
 G_M54850_IG05:
        vmovaps  xmm0, xmm2
 						;; size=4 bbWeight=0.50 PerfScore 0.12
 G_M54850_IG06:
        vmovddup xmm3, xmm0
        vmovddup xmm4, xmm0
        vmovddup xmm0, xmm0
        vcmppd   xmm3, xmm4, xmm3, 0
        vandpd   xmm0, xmm3, xmm0
        vcmppd   xmm3, xmm0, xmmword ptr [reloc @RWD32], 13
        vcvttsd2si rdi, xmm0
        vmovd    xmm0, rdi
        vpbroadcastq xmm0, xmm0
        vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD48], xmm3
        vmovd    r13, xmm0
        cmp      r13, -1
        jl       G_M54850_IG24
        mov      edi, 0xD1FFAB1E
        cmp      r13, rdi
        jl       SHORT G_M54850_IG08
 						;; size=80 bbWeight=1 PerfScore 26.08
 G_M54850_IG07:
        mov      edi, 0xD1FFAB1E
        cmp      r13, rdi
-       jg       G_M54850_IG20
+       jg       G_M54850_IG21
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M54850_IG08:
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, r8
        vdivsd   xmm0, xmm0, xmm1
        vucomisd xmm0, xmm2
        ja       SHORT G_M54850_IG11
 						;; size=19 bbWeight=1 PerfScore 21.33
 G_M54850_IG09:
        vmovsd   xmm3, qword ptr [reloc @RWD16]
        vucomisd xmm3, xmm0
        ja       SHORT G_M54850_IG10
        jmp      SHORT G_M54850_IG12
 						;; size=16 bbWeight=0.50 PerfScore 4.00
 G_M54850_IG10:
        vmovaps  xmm0, xmm3
        jmp      SHORT G_M54850_IG12
 						;; size=6 bbWeight=0.50 PerfScore 1.12
 G_M54850_IG11:
        vmovaps  xmm0, xmm2
 						;; size=4 bbWeight=0.50 PerfScore 0.12
 G_M54850_IG12:
        vmovddup xmm1, xmm0
        vmovddup xmm2, xmm0
        vmovddup xmm0, xmm0
        vcmppd   xmm1, xmm2, xmm1, 0
        vandpd   xmm0, xmm1, xmm0
        vcmppd   xmm1, xmm0, xmmword ptr [reloc @RWD32], 13
        vcvttsd2si rdi, xmm0
        vmovd    xmm0, rdi
        vpbroadcastq xmm0, xmm0
        vpblendvb xmm0, xmm0, xmmword ptr [reloc @RWD48], xmm1
        vmovd    r12, xmm0
        cmp      r12, -1
        jl       G_M54850_IG23
        mov      edi, 0xD1FFAB1E
        cmp      r12, rdi
        jl       SHORT G_M54850_IG14
 						;; size=80 bbWeight=1 PerfScore 26.08
 G_M54850_IG13:
        mov      edi, 0xD1FFAB1E
        cmp      r12, rdi
-       jg       G_M54850_IG21
+       jg       G_M54850_IG22
 						;; size=14 bbWeight=0.50 PerfScore 0.75
 G_M54850_IG14:
        mov      rdi, rbx
        mov      rsi, 0xD1FFAB1E      ; 'callback'
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        call     [rax]System.ArgumentNullException:ThrowIfNull(System.Object,System.String)
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerQueueTimer
        call     CORINFO_HELP_NEWSFAST
-       mov      gword ptr [rbp-0x38], rax
+       mov      gword ptr [rbp-0x30], rax
        lea      rdi, bword ptr [rax+0x20]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rbx, gword ptr [rbp-0x38]
+       mov      rbx, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [rbx+0x28]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      qword ptr [rbx+0x48], -1
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        call     [rax]System.Threading.ExecutionContext:Capture():System.Threading.ExecutionContext
        lea      rdi, bword ptr [rbx+0x30]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       mov      r14, gword ptr [rax]
-       mov      gword ptr [rbp-0x40], r14
+       mov      rdi, 0xD1FFAB1E      ; const ptr
+       mov      r14, gword ptr [rdi]
+       mov      rdi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; function address
-						;; size=131 bbWeight=1 PerfScore 20.00
+       call     rax
+       add      rax, 76
+       mov      ecx, dword ptr [rax+0x10]
+       lea      edx, [rcx-0x01]
+       mov      dword ptr [rax+0x10], edx
+       movzx    rax, cx
+       test     eax, eax
+       je       SHORT G_M54850_IG16
+						;; size=159 bbWeight=1 PerfScore 27.50
 G_M54850_IG15:
-       call     rax ; Interop+Sys:SchedGetCpu():int
-       mov      edi, eax
-       mov      rsi, rdi
-       sar      rsi, 63
-       and      rsi, 15
-       add      rsi, rdi
-       and      rsi, -16
-       sub      rdi, rsi
-       cmp      rdi, 16
-       jae      G_M54850_IG25
-       mov      r14, gword ptr [rbp-0x40]
+       sar      ecx, 16
+       jmp      SHORT G_M54850_IG17
+						;; size=5 bbWeight=0.50 PerfScore 1.25
+G_M54850_IG16:
+       mov      rax, 0xD1FFAB1E      ; code for System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       call     [rax]System.Threading.ProcessorIdCache:RefreshCurrentProcessorId():int
+       mov      ecx, eax
+						;; size=14 bbWeight=0.50 PerfScore 1.75
+G_M54850_IG17:
+       mov      edi, ecx
+       and      rdi, 15
        mov      rsi, gword ptr [r14+8*rdi+0x10]
-       mov      rbx, gword ptr [rbp-0x38]
        lea      rdi, bword ptr [rbx+0x08]
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       cmp      dword ptr [rdi], 0
-       jne      G_M54850_IG22
-						;; size=76 bbWeight=1 PerfScore 16.00
-G_M54850_IG16:
        cmp      r13d, -1
-       je       SHORT G_M54850_IG18
-						;; size=6 bbWeight=1 PerfScore 1.25
-G_M54850_IG17:
+       je       SHORT G_M54850_IG19
+						;; size=26 bbWeight=1 PerfScore 5.25
+G_M54850_IG18:
        mov      rdi, rbx
        mov      esi, r13d
        mov      edx, r12d
        mov      rax, 0xD1FFAB1E      ; code for System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
        call     [rax]System.Threading.TimerQueueTimer:Change(uint,uint):ubyte:this
 						;; size=21 bbWeight=0.50 PerfScore 2.00
-G_M54850_IG18:
+G_M54850_IG19:
        mov      rdi, 0xD1FFAB1E      ; System.Threading.TimerHolder
        call     CORINFO_HELP_NEWFAST
        mov      r12, rax
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      r15, gword ptr [rbp-0x30]
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=48 bbWeight=1 PerfScore 6.25
-G_M54850_IG19:
-       add      rsp, 24
+						;; size=44 bbWeight=1 PerfScore 5.25
+G_M54850_IG20:
+       add      rsp, 8
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
-G_M54850_IG20:
+G_M54850_IG21:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r13
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M54850_IG21:
+G_M54850_IG22:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r12
        mov      esi, 0xD1FFAB1E
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowGreater[long](long,long,System.String)
        int3     
 						;; size=44 bbWeight=0 PerfScore 0.00
-G_M54850_IG22:
-       call     CORINFO_HELP_POLL_GC
-       jmp      G_M54850_IG16
-						;; size=10 bbWeight=0 PerfScore 0.00
 G_M54850_IG23:
        mov      edi, 0x1720A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r12
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
 G_M54850_IG24:
        mov      edi, 0x1723A
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdx, rax
        mov      rdi, r13
        mov      rsi, -1
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        call     [rax]System.ArgumentOutOfRangeException:ThrowLess[long](long,long,System.String)
        int3     
 						;; size=49 bbWeight=0 PerfScore 0.00
-G_M54850_IG25:
-       call     CORINFO_HELP_RNGCHKFAIL
-       int3     
-						;; size=6 bbWeight=0 PerfScore 0.00
 RWD00  	dq	40C3880000000000h	;        10000
 RWD08  	dq	430A36E2EB1C4328h	; 9.22337204e+14
 RWD16  	dq	C30A36E2EB1C4328h	; -9.22337204e+14
 RWD24  	dd	00000000h, 00000000h
 RWD32  	dq	43E0000000000000h, 43E0000000000000h
 RWD48  	dq	7FFFFFFFFFFFFFFFh, 7FFFFFFFFFFFFFFFh
 
 
-; Total bytes of code 825, prolog size 22, PerfScore 171.83, instruction count 184, allocated bytes for code 825 (MethodHash=a03129bd) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)
+; Total bytes of code 789, prolog size 16, PerfScore 168.33, instruction count 178, allocated bytes for code 789 (MethodHash=a03129bd) for method System.Threading.Timer:.ctor(System.Threading.TimerCallback,System.Object,System.TimeSpan,System.TimeSpan):this (FullOpts)

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

@MihuBot
Copy link
Owner Author

MihuBot commented Jun 14, 2024

@MihaZupan

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