Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[JitDiff X64] [MichalPetryka] Fold null checks against known non-null values #751

Open
MihuBot opened this issue Oct 23, 2024 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Oct 23, 2024

Job completed in 18 minutes 49 seconds.
dotnet/runtime#109164

Diffs

Diffs
Found 318 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39526560
Total bytes of diff: 39527312
Total bytes of delta: 752 (0.00 % of base)
Total relative delta: 0.11
    diff is a regression.
    relative diff is a regression.


Top file regressions (bytes):
        1131 : System.Collections.Immutable.dasm (0.05 % of base)
           3 : System.IO.Packaging.dasm (0.00 % of base)

Top file improvements (bytes):
         -92 : System.Security.Cryptography.dasm (-0.01 % of base)
         -67 : System.Net.Http.dasm (-0.01 % of base)
         -58 : System.Text.Json.dasm (-0.00 % of base)
         -57 : System.Private.Xml.dasm (-0.00 % of base)
         -28 : System.Linq.Expressions.dasm (-0.00 % of base)
         -24 : System.Collections.NonGeneric.dasm (-0.17 % of base)
         -14 : System.Security.Cryptography.Pkcs.dasm (-0.00 % of base)
         -14 : Microsoft.Extensions.DependencyModel.dasm (-0.02 % of base)
         -14 : System.Threading.Tasks.Dataflow.dasm (-0.00 % of base)
          -7 : System.Net.Http.Json.dasm (-0.00 % of base)
          -3 : System.ComponentModel.TypeConverter.dasm (-0.00 % of base)
          -2 : System.Composition.Hosting.dasm (-0.00 % of base)
          -2 : System.Composition.TypedParts.dasm (-0.00 % of base)

15 total files with Code Size differences (13 improved, 2 regressed), 244 unchanged.

Top method regressions (bytes):
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[long](System.Collections.Generic.IEnumerable`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[short](System.Collections.Generic.IEnumerable`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[ubyte](System.Collections.Generic.IEnumerable`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
          35 (8.03 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.FromBase64Transform:AppendInputBuffers(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):System.Span`1[ubyte]:this (FullOpts)
           9 (1.04 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HeaderUtilities:Encode5987(System.String):System.String (FullOpts)
           3 (5.08 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
           2 (0.11 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:TryHandleReferenceFromJsonElement(byref,byref,System.Text.Json.JsonElement,byref):ubyte (FullOpts)

Top method improvements (bytes):
         -57 (-22.18 % of base) : System.Net.Http.dasm - System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (FullOpts)
         -47 (-4.00 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
         -19 (-5.99 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryToBoolean(System.String,byref):System.Exception (FullOpts)
         -16 (-12.50 % of base) : System.Net.Http.dasm - System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this (FullOpts)
         -14 (-0.33 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSigner:Sign(System.ReadOnlyMemory`1[ubyte],System.String,ubyte,byref):System.Security.Cryptography.Pkcs.Asn1.SignerInfoAsn:this (FullOpts)
         -14 (-6.48 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:TrySignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding,byref):ubyte:this (FullOpts)
         -14 (-6.48 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:TrySignHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding,byref):ubyte:this (FullOpts)
         -14 (-6.73 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyData(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
         -13 (-1.27 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(float):this (FullOpts)
         -12 (-10.00 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.Resolution.ReferenceAssemblyPathResolver:.ctor(System.String,System.String[]):this (FullOpts)
         -12 (-11.01 % of base) : System.Collections.NonGeneric.dasm - System.Collections.CaseInsensitiveComparer:get_DefaultInvariant():System.Collections.CaseInsensitiveComparer (FullOpts)
         -12 (-11.01 % of base) : System.Collections.NonGeneric.dasm - System.Collections.CaseInsensitiveHashCodeProvider:get_DefaultInvariant():System.Collections.CaseInsensitiveHashCodeProvider (FullOpts)
         -12 (-12.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Nullable`1[int],System.Nullable`1[int]]:.cctor() (FullOpts)
         -12 (-8.45 % of base) : System.Linq.Expressions.dasm - System.Dynamic.DynamicObject+MetaDynamic:.ctor(System.Linq.Expressions.Expression,System.Dynamic.DynamicObject):this (FullOpts)
         -12 (-8.45 % of base) : System.Linq.Expressions.dasm - System.Dynamic.ExpandoObject+MetaExpando:.ctor(System.Linq.Expressions.Expression,System.Dynamic.ExpandoObject):this (FullOpts)
         -11 (-0.26 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (FullOpts)
         -10 (-7.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:CreateLeaf(double):System.Collections.Immutable.ImmutableList`1+Node[double] (FullOpts)
         -10 (-6.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:SignData(System.IO.Stream,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
         -10 (-5.38 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
         -10 (-6.10 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:SignHash(ubyte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
         -10 (-4.95 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
         -10 (-4.93 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyHash(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
         -10 (-3.32 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyHash(ubyte[],ubyte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
         -10 (-2.41 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryToSingle(System.String,byref):System.Exception (FullOpts)
          -9 (-2.94 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:ToBoolean(System.String):ubyte (FullOpts)
          -8 (-0.81 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.RSAPssX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
          -8 (-2.68 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509SignatureGenerator:CreateForRSA(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.X509SignatureGenerator (FullOpts)
          -7 (-1.62 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryToDouble(System.String,byref):System.Exception (FullOpts)
          -5 (-4.55 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashProviderDispenser:KmacSupported(System.String):ubyte (FullOpts)
          -4 (-1.92 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:DeleteFromJsonAsync(System.Net.Http.HttpClient,System.Uri,System.Type,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -4 (-0.65 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:Decrypt(ubyte[],System.Security.Cryptography.RSAEncryptionPadding):ubyte[]:this (FullOpts)
          -3 (-10.00 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.PasswordPropertyTextAttribute:IsDefaultAttribute():ubyte:this (FullOpts)
          -3 (-0.07 % of base) : System.Net.Http.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (FullOpts)
          -2 (-2.30 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.Resolution.AppBaseCompilationAssemblyResolver:.ctor():this (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[double,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[int,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[long,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[short,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Numerics.Vector`1[float],System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[ubyte,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-1.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:CreateLeaf(int):System.Collections.Immutable.ImmutableList`1+Node[int] (FullOpts)
          -2 (-1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[long]:CreateLeaf(long):System.Collections.Immutable.ImmutableList`1+Node[long] (FullOpts)
          -2 (-1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[short]:CreateLeaf(short):System.Collections.Immutable.ImmutableList`1+Node[short] (FullOpts)
          -2 (-1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]]:CreateLeaf(System.Nullable`1[int]):System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]] (FullOpts)
          -2 (-1.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[ubyte]:CreateLeaf(ubyte):System.Collections.Immutable.ImmutableList`1+Node[ubyte] (FullOpts)
          -2 (-1.28 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.CurrentScope.CurrentScopeExportDescriptorProvider+<>c:<GetExportDescriptors>b__1_0(System.Collections.Generic.IEnumerable`1[System.Composition.Hosting.Core.CompositionDependency]):System.Composition.Hosting.Core.ExportDescriptor:this (FullOpts)
          -2 (-1.43 % of base) : System.Composition.TypedParts.dasm - System.Composition.TypedParts.ActivationFeatures.PropertyInjectionFeature+<>c:<GetDependencies>b__3_3(<>f__AnonymousType1`2[<>f__AnonymousType0`2[System.Reflection.PropertyInfo,System.Attribute[]],System.Composition.TypedParts.ActivationFeatures.PropertyImportSite]):ubyte:this (FullOpts)
          -2 (-1.47 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.LambdaCompiler+<>c:<TryEmitSwitchInstruction>b__179_0(System.Linq.Expressions.SwitchCase):ubyte:this (FullOpts)
          -2 (-1.47 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LightCompiler+<>c:<CompileSwitchExpression>b__56_0(System.Linq.Expressions.SwitchCase):ubyte:this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[double]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[int]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[long]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[short]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[System.Nullable`1[int]]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[System.Numerics.Vector`1[float]]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[ubyte]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -1 (-0.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:CreateLeaf(System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]] (FullOpts)
          -1 (-0.48 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:FromJsonAsyncCore(System.Func`4[System.Net.Http.HttpClient,System.Uri,System.Threading.CancellationToken,System.Threading.Tasks.Task`1[System.Net.Http.HttpResponseMessage]],System.Net.Http.HttpClient,System.Uri,System.Type,System.Text.Json.JsonSerializerOptions,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -1 (-0.48 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:FromJsonAsyncCore(System.Func`4[System.Net.Http.HttpClient,System.Uri,System.Threading.CancellationToken,System.Threading.Tasks.Task`1[System.Net.Http.HttpResponseMessage]],System.Net.Http.HttpClient,System.Uri,System.Type,System.Text.Json.Serialization.JsonSerializerContext,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -1 (-0.57 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:GetFromJsonAsync(System.Net.Http.HttpClient,System.Uri,System.Type,System.Text.Json.JsonSerializerOptions,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -1 (-0.47 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlBaseConverter:StringToHexBinary(System.String):ubyte[] (FullOpts)

Top method regressions (percentages):
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[long](System.Collections.Generic.IEnumerable`1[long]):System.Collections.Immutable.ImmutableHashSet`1[long] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[short](System.Collections.Generic.IEnumerable`1[short]):System.Collections.Immutable.ImmutableHashSet`1[short] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Nullable`1[int]](System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]):System.Collections.Immutable.ImmutableHashSet`1[System.Nullable`1[int]] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[System.Numerics.Vector`1[float]](System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]):System.Collections.Immutable.ImmutableHashSet`1[System.Numerics.Vector`1[float]] (FullOpts)
         168 (32.56 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[ubyte](System.Collections.Generic.IEnumerable`1[ubyte]):System.Collections.Immutable.ImmutableHashSet`1[ubyte] (FullOpts)
          35 (8.03 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.FromBase64Transform:AppendInputBuffers(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]):System.Span`1[ubyte]:this (FullOpts)
           3 (5.08 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
           9 (1.04 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HeaderUtilities:Encode5987(System.String):System.String (FullOpts)
           2 (0.11 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:TryHandleReferenceFromJsonElement(byref,byref,System.Text.Json.JsonElement,byref):ubyte (FullOpts)

Top method improvements (percentages):
         -57 (-22.18 % of base) : System.Net.Http.dasm - System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (FullOpts)
         -16 (-12.50 % of base) : System.Net.Http.dasm - System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this (FullOpts)
         -12 (-12.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Nullable`1[int],System.Nullable`1[int]]:.cctor() (FullOpts)
         -12 (-11.01 % of base) : System.Collections.NonGeneric.dasm - System.Collections.CaseInsensitiveComparer:get_DefaultInvariant():System.Collections.CaseInsensitiveComparer (FullOpts)
         -12 (-11.01 % of base) : System.Collections.NonGeneric.dasm - System.Collections.CaseInsensitiveHashCodeProvider:get_DefaultInvariant():System.Collections.CaseInsensitiveHashCodeProvider (FullOpts)
         -12 (-10.00 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.Resolution.ReferenceAssemblyPathResolver:.ctor(System.String,System.String[]):this (FullOpts)
          -3 (-10.00 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.PasswordPropertyTextAttribute:IsDefaultAttribute():ubyte:this (FullOpts)
         -12 (-8.45 % of base) : System.Linq.Expressions.dasm - System.Dynamic.DynamicObject+MetaDynamic:.ctor(System.Linq.Expressions.Expression,System.Dynamic.DynamicObject):this (FullOpts)
         -12 (-8.45 % of base) : System.Linq.Expressions.dasm - System.Dynamic.ExpandoObject+MetaExpando:.ctor(System.Linq.Expressions.Expression,System.Dynamic.ExpandoObject):this (FullOpts)
         -10 (-7.35 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[double]:CreateLeaf(double):System.Collections.Immutable.ImmutableList`1+Node[double] (FullOpts)
         -14 (-6.73 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyData(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
         -14 (-6.48 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:TrySignData(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding,byref):ubyte:this (FullOpts)
         -14 (-6.48 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:TrySignHash(System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding,byref):ubyte:this (FullOpts)
         -10 (-6.10 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:SignHash(ubyte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
         -10 (-6.06 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:SignData(System.IO.Stream,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
         -19 (-5.99 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryToBoolean(System.String,byref):System.Exception (FullOpts)
         -10 (-5.38 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:SignData(ubyte[],int,int,System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte[]:this (FullOpts)
         -10 (-4.95 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyData(ubyte[],int,int,ubyte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
         -10 (-4.93 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyHash(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
          -5 (-4.55 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.HashProviderDispenser:KmacSupported(System.String):ubyte (FullOpts)
         -47 (-4.00 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
         -10 (-3.32 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:VerifyHash(ubyte[],ubyte[],System.Security.Cryptography.HashAlgorithmName,System.Security.Cryptography.RSASignaturePadding):ubyte:this (FullOpts)
          -9 (-2.94 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:ToBoolean(System.String):ubyte (FullOpts)
          -8 (-2.68 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.X509SignatureGenerator:CreateForRSA(System.Security.Cryptography.RSA,System.Security.Cryptography.RSASignaturePadding):System.Security.Cryptography.X509Certificates.X509SignatureGenerator (FullOpts)
         -10 (-2.41 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryToSingle(System.String,byref):System.Exception (FullOpts)
          -2 (-2.30 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.Resolution.AppBaseCompilationAssemblyResolver:.ctor():this (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[double,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[int,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[long,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[short,System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[System.Numerics.Vector`1[float],System.Nullable`1[int]]:.cctor() (FullOpts)
          -2 (-2.04 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableDictionary`2+Comparers[ubyte,System.Nullable`1[int]]:.cctor() (FullOpts)
          -4 (-1.92 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:DeleteFromJsonAsync(System.Net.Http.HttpClient,System.Uri,System.Type,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -2 (-1.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[int]:CreateLeaf(int):System.Collections.Immutable.ImmutableList`1+Node[int] (FullOpts)
          -2 (-1.67 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[ubyte]:CreateLeaf(ubyte):System.Collections.Immutable.ImmutableList`1+Node[ubyte] (FullOpts)
          -2 (-1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[long]:CreateLeaf(long):System.Collections.Immutable.ImmutableList`1+Node[long] (FullOpts)
          -2 (-1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[short]:CreateLeaf(short):System.Collections.Immutable.ImmutableList`1+Node[short] (FullOpts)
          -2 (-1.65 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]]:CreateLeaf(System.Nullable`1[int]):System.Collections.Immutable.ImmutableList`1+Node[System.Nullable`1[int]] (FullOpts)
          -7 (-1.62 % of base) : System.Private.Xml.dasm - System.Xml.XmlConvert:TryToDouble(System.String,byref):System.Exception (FullOpts)
          -2 (-1.47 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.LambdaCompiler+<>c:<TryEmitSwitchInstruction>b__179_0(System.Linq.Expressions.SwitchCase):ubyte:this (FullOpts)
          -2 (-1.47 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LightCompiler+<>c:<CompileSwitchExpression>b__56_0(System.Linq.Expressions.SwitchCase):ubyte:this (FullOpts)
          -2 (-1.43 % of base) : System.Composition.TypedParts.dasm - System.Composition.TypedParts.ActivationFeatures.PropertyInjectionFeature+<>c:<GetDependencies>b__3_3(<>f__AnonymousType1`2[<>f__AnonymousType0`2[System.Reflection.PropertyInfo,System.Attribute[]],System.Composition.TypedParts.ActivationFeatures.PropertyImportSite]):ubyte:this (FullOpts)
          -2 (-1.28 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.CurrentScope.CurrentScopeExportDescriptorProvider+<>c:<GetExportDescriptors>b__1_0(System.Collections.Generic.IEnumerable`1[System.Composition.Hosting.Core.CompositionDependency]):System.Composition.Hosting.Core.ExportDescriptor:this (FullOpts)
         -13 (-1.27 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonWriter:WritePropertyName(float):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[double]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[int]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[long]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[short]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[System.Nullable`1[int]]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[System.Numerics.Vector`1[float]]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -2 (-1.03 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.DataflowBlock+ChooseTarget`1[ubyte]:.ctor(System.Runtime.CompilerServices.StrongBox`1[System.Threading.Tasks.Task],System.Threading.CancellationToken):this (FullOpts)
          -8 (-0.81 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.X509Certificates.RSAPssX509SignatureGenerator:GetSignatureAlgorithmIdentifier(System.Security.Cryptography.HashAlgorithmName):ubyte[]:this (FullOpts)
          -1 (-0.79 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]]:CreateLeaf(System.Numerics.Vector`1[float]):System.Collections.Immutable.ImmutableList`1+Node[System.Numerics.Vector`1[float]] (FullOpts)
          -4 (-0.65 % of base) : System.Security.Cryptography.dasm - System.Security.Cryptography.RSACryptoServiceProvider:Decrypt(ubyte[],System.Security.Cryptography.RSAEncryptionPadding):ubyte[]:this (FullOpts)
          -1 (-0.57 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:GetFromJsonAsync(System.Net.Http.HttpClient,System.Uri,System.Type,System.Text.Json.JsonSerializerOptions,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -1 (-0.48 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:FromJsonAsyncCore(System.Func`4[System.Net.Http.HttpClient,System.Uri,System.Threading.CancellationToken,System.Threading.Tasks.Task`1[System.Net.Http.HttpResponseMessage]],System.Net.Http.HttpClient,System.Uri,System.Type,System.Text.Json.JsonSerializerOptions,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -1 (-0.48 % of base) : System.Net.Http.Json.dasm - System.Net.Http.Json.HttpClientJsonExtensions:FromJsonAsyncCore(System.Func`4[System.Net.Http.HttpClient,System.Uri,System.Threading.CancellationToken,System.Threading.Tasks.Task`1[System.Net.Http.HttpResponseMessage]],System.Net.Http.HttpClient,System.Uri,System.Type,System.Text.Json.Serialization.JsonSerializerContext,System.Threading.CancellationToken):System.Threading.Tasks.Task`1[System.Object] (FullOpts)
          -1 (-0.47 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XmlBaseConverter:StringToHexBinary(System.String):ubyte[] (FullOpts)
         -14 (-0.33 % of base) : System.Security.Cryptography.Pkcs.dasm - System.Security.Cryptography.Pkcs.CmsSigner:Sign(System.ReadOnlyMemory`1[ubyte],System.String,ubyte,byref):System.Security.Cryptography.Pkcs.Asn1.SignerInfoAsn:this (FullOpts)
         -11 (-0.26 % of base) : System.Private.Xml.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (FullOpts)
          -3 (-0.07 % of base) : System.Net.Http.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (FullOpts)

72 total methods with Code Size differences (61 improved, 11 regressed), 232488 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 23, 2024

Top method regressions

168 (32.56 % of base) - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double]
 ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (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; 15 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 15 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.25)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
+;  V00 arg0         [V00,T02] (  6,  4.25)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[double]>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T08] (  3,  2   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;  V04 tmp3         [V04,T06] (  4,  2   )     ref  ->  rbx         class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;  V05 tmp4         [V05,T09] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;  V06 tmp5         [V06,T03] (  4,  4   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[double]>
 ;  V07 tmp6         [V07,T00] ( 11, 11   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;* V08 tmp7         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;* V09 tmp8         [V09    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
 ;* V10 tmp9         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
 ;  V11 tmp10        [V11    ] (  5,  2.50)  struct (16) [rbp-0x38]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
 ;* V12 tmp11        [V12    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
 ;  V13 tmp12        [V13,T11] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
 ;  V14 tmp13        [V14,T10] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
 ;  V15 tmp14        [V15,T04] (  4,  4   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[double]>
-;  V16 tmp15        [V16,T02] (  6,  6   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
-;  V17 tmp16        [V17,T13] (  2,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
-;  V18 tmp17        [V18,T12] (  3,  1.50)     int  ->  [rbp-0x30]  do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
-;  V19 tmp18        [V19,T17] (  2,  1   )     int  ->  [rbp-0x2C]  do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
-;  V20 tmp19        [V20,T14] (  2,  1   )     ref  ->  rdi         single-def "field V12._root (fldOffset=0x0)" P-INDEP
-;  V21 tmp20        [V21,T15] (  2,  1   )     ref  ->  rax         single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
-;  V22 tmp21        [V22,T16] (  2,  1   )     ref  ->  rdx         single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-;  V23 tmp22        [V23,T18] (  2,  1   )     int  ->  rcx         "field V12._count (fldOffset=0x18)" P-INDEP
-;  V24 cse0         [V24,T07] (  4,  2   )     ref  ->  r14         "CSE #04: moderate"
-;  V25 cse1         [V25,T05] (  6,  3   )     ref  ->  registers   multi-def "CSE #02: aggressive"
+;  V16 tmp15        [V16,T01] (  9,  9   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
+;* V17 tmp16        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[double]>
+;* V18 tmp17        [V18    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
+;* V19 tmp18        [V19    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
+;  V20 tmp19        [V20    ] (  5,  2.50)  struct (16) [rbp-0x48]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]>
+;  V21 tmp20        [V21    ] (  2,  2   )  struct (32) [rbp-0x68]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]>
+;  V22 tmp21        [V22,T12] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
+;  V23 tmp22        [V23,T15] (  2,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
+;  V24 tmp23        [V24,T13] (  3,  1.50)     int  ->  [rbp-0x30]  do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
+;  V25 tmp24        [V25,T20] (  2,  1   )     int  ->  [rbp-0x2C]  do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
+;  V26 tmp25        [V26,T16] (  2,  1   )     ref  ->  rdi         single-def "field V12._root (fldOffset=0x0)" P-INDEP
+;  V27 tmp26        [V27,T17] (  2,  1   )     ref  ->  rax         single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
+;  V28 tmp27        [V28,T18] (  2,  1   )     ref  ->  rdx         single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+;  V29 tmp28        [V29,T21] (  2,  1   )     int  ->  rcx         "field V12._count (fldOffset=0x18)" P-INDEP
+;  V30 tmp29        [V30,T19] (  2,  1   )     ref  ->  [rbp-0x48]  do-not-enreg[] "field V20._root (fldOffset=0x0)" P-DEP
+;  V31 tmp30        [V31,T14] (  3,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[] "field V20._count (fldOffset=0x8)" P-DEP
+;  V32 tmp31        [V32,T22] (  2,  1   )     int  ->  [rbp-0x3C]  do-not-enreg[] "field V20._countType (fldOffset=0xc)" P-DEP
+;  V33 cse0         [V33,T07] (  4,  2   )     ref  ->  r14         "CSE #04: moderate"
+;  V34 cse1         [V34,T05] (  6,  3   )     ref  ->  registers   multi-def "CSE #02: aggressive"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 104
 
 G_M54777_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 104
+       lea      rbp, [rsp+0x90]
        xor      eax, eax
-       mov      qword ptr [rbp-0x38], rax
+       mov      qword ptr [rbp-0x68], rax
+       vxorps   xmm8, xmm8, xmm8
+       vmovdqu  ymmword ptr [rbp-0x60], ymm8
+       vmovdqa  xmmword ptr [rbp-0x40], xmm8
+       mov      qword ptr [rbp-0x30], rax
        mov      rbx, rdi
-						;; size=28 bbWeight=1 PerfScore 8.25
+						;; size=50 bbWeight=1 PerfScore 13.58
 G_M54777_IG02:
        test     rbx, rbx
        je       G_M54777_IG08
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M54777_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableHashSet`1[double]
        cmp      qword ptr [rbx], rdi
        jne      G_M54777_IG08
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M54777_IG04:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r15, gword ptr [rdi]
        cmp      r15, gword ptr [rbx+0x08]
        je       G_M54777_IG06
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableHashSet`1[double]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r13, gword ptr [rdi]
        mov      rdi, r13
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
        lea      rdi, bword ptr [r14+0x10]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        xor      edi, edi
        mov      dword ptr [r14+0x20], edi
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
        lea      rdi, bword ptr [r14+0x18]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, gword ptr [r14+0x10]
        mov      rax, gword ptr [r14+0x08]
        mov      ecx, dword ptr [r14+0x20]
        mov      rdx, gword ptr [r14+0x18]
        mov      gword ptr [rsp], rdi
        mov      gword ptr [rsp+0x08], rax
        mov      gword ptr [rsp+0x10], rdx
        mov      dword ptr [rsp+0x18], ecx
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
        mov      gword ptr [rbp-0x38], rax
        mov      qword ptr [rbp-0x30], rdx
        mov      edx, dword ptr [rbp-0x30]
        cmp      dword ptr [rbp-0x2C], 0
        jne      SHORT G_M54777_IG05
        mov      edx, dword ptr [rbp-0x30]
        add      edx, dword ptr [r14+0x20]
 						;; size=212 bbWeight=0.50 PerfScore 25.62
 G_M54777_IG05:
        mov      rdi, r14
        mov      rsi, gword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
        jmp      SHORT G_M54777_IG07
 						;; size=21 bbWeight=0.50 PerfScore 3.25
 G_M54777_IG06:
        mov      rax, rbx
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M54777_IG07:
-       jmp      G_M54777_IG11
+       jmp      G_M54777_IG13
 						;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M54777_IG08:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r15, gword ptr [rdi]
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
        cmp      r15, gword ptr [r14+0x08]
-       je       G_M54777_IG09
+       je       G_M54777_IG11
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableHashSet`1[double]
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        mov      r12, rdi
        mov      rdi, r12
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]]):this
        lea      rdi, bword ptr [r13+0x10]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        xor      edi, edi
        mov      dword ptr [r13+0x20], edi
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[double]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]]
        lea      rdi, bword ptr [r13+0x18]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rsi, r14
-       mov      rdi, r13
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],ubyte):System.Collections.Immutable.ImmutableHashSet`1[double]:this
-       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],ubyte):System.Collections.Immutable.ImmutableHashSet`1[double]:this
-       jmp      SHORT G_M54777_IG10
-						;; size=180 bbWeight=0.50 PerfScore 17.12
+       lea      rdi, [rbp-0x68]
+       mov      rsi, r13
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[double]):this
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[double]):this
+       lea      rdi, [rsp]
+       lea      rsi, [rbp-0x68]
+       mov      rcx, gword ptr [rsi]
+       mov      gword ptr [rsp], rcx
+       add      rsi, 8
+       add      rdi, 8
+       mov      rcx, gword ptr [rsi]
+       mov      gword ptr [rsp+0x08], rcx
+       add      rsi, 8
+       add      rdi, 8
+       mov      rcx, gword ptr [rsi]
+       mov      gword ptr [rsp+0x10], rcx
+       add      rsi, 8
+       add      rdi, 8
+       movsq    
+       mov      rdi, r14
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[double]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[double]
+       mov      gword ptr [rbp-0x48], rax
+       mov      qword ptr [rbp-0x40], rdx
+       mov      rsi, r13
+       mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.Requires:NotNull[System.Collections.Immutable.ImmutableHashSet`1[double]](System.Collections.Immutable.ImmutableHashSet`1[double],System.String)
+       mov      rdx, 0xD1FFAB1E      ; 'priorSet'
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+						;; size=287 bbWeight=0.50 PerfScore 25.62
 G_M54777_IG09:
+       call     [rax]System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+       mov      edx, dword ptr [rbp-0x40]
+       cmp      dword ptr [rbp-0x3C], 0
+       jne      SHORT G_M54777_IG10
+       mov      edx, dword ptr [rbp-0x40]
+       add      edx, dword ptr [r13+0x20]
+						;; size=18 bbWeight=0.50 PerfScore 5.50
+G_M54777_IG10:
+       mov      rdi, r13
+       mov      rsi, gword ptr [rbp-0x48]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[double]],int):System.Collections.Immutable.ImmutableHashSet`1[double]:this
+       jmp      SHORT G_M54777_IG12
+						;; size=21 bbWeight=0.50 PerfScore 3.25
+G_M54777_IG11:
        mov      rax, r14
 						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M54777_IG10:
+G_M54777_IG12:
        mov      rdi, rax
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[double]:Union(System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double]:this
 						;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M54777_IG11:
+G_M54777_IG13:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M54777_IG12:
-       add      rsp, 56
+G_M54777_IG14:
+       add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 516, prolog size 25, PerfScore 65.69, instruction count 121, allocated bytes for code 516 (MethodHash=e49c2a06) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
+; Total bytes of code 684, prolog size 47, PerfScore 88.27, instruction count 158, allocated bytes for code 684 (MethodHash=e49c2a06) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[double](System.Collections.Generic.IEnumerable`1[double]):System.Collections.Immutable.ImmutableHashSet`1[double] (FullOpts)
 ; ============================================================
168 (32.56 % of base) - System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int]
 ; Assembly listing for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (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; 15 single block inlinees; 12 inlinees without PGO data
+; 0 inlinees with PGO data; 21 single block inlinees; 15 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.25)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+;  V00 arg0         [V00,T02] (  6,  4.25)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T08] (  3,  2   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;  V04 tmp3         [V04,T06] (  4,  2   )     ref  ->  rbx         class-hnd exact "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;  V05 tmp4         [V05,T09] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;  V06 tmp5         [V06,T03] (  4,  4   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
 ;  V07 tmp6         [V07,T00] ( 11, 11   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;* V08 tmp7         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;* V09 tmp8         [V09    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
 ;* V10 tmp9         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
 ;  V11 tmp10        [V11    ] (  5,  2.50)  struct (16) [rbp-0x38]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
 ;* V12 tmp11        [V12    ] (  0,  0   )  struct (32) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
 ;  V13 tmp12        [V13,T11] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
 ;  V14 tmp13        [V14,T10] (  3,  1.50)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
 ;  V15 tmp14        [V15,T04] (  4,  4   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-;  V16 tmp15        [V16,T02] (  6,  6   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
-;  V17 tmp16        [V17,T13] (  2,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
-;  V18 tmp17        [V18,T12] (  3,  1.50)     int  ->  [rbp-0x30]  do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
-;  V19 tmp18        [V19,T17] (  2,  1   )     int  ->  [rbp-0x2C]  do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
-;  V20 tmp19        [V20,T14] (  2,  1   )     ref  ->  rdi         single-def "field V12._root (fldOffset=0x0)" P-INDEP
-;  V21 tmp20        [V21,T15] (  2,  1   )     ref  ->  rax         single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
-;  V22 tmp21        [V22,T16] (  2,  1   )     ref  ->  rdx         single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
-;  V23 tmp22        [V23,T18] (  2,  1   )     int  ->  rcx         "field V12._count (fldOffset=0x18)" P-INDEP
-;  V24 cse0         [V24,T07] (  4,  2   )     ref  ->  r14         "CSE #04: moderate"
-;  V25 cse1         [V25,T05] (  6,  3   )     ref  ->  registers   multi-def "CSE #02: aggressive"
+;  V16 tmp15        [V16,T01] (  9,  9   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
+;* V17 tmp16        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Immutable.ImmutableHashSet`1[int]>
+;* V18 tmp17        [V18    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[S] "spilled call-like call argument" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
+;* V19 tmp18        [V19    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
+;  V20 tmp19        [V20    ] (  5,  2.50)  struct (16) [rbp-0x48]  do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]>
+;  V21 tmp20        [V21    ] (  2,  2   )  struct (32) [rbp-0x68]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]>
+;  V22 tmp21        [V22,T12] (  3,  1.50)     int  ->  rdx         "Inline stloc first use temp"
+;  V23 tmp22        [V23,T15] (  2,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[] "field V11._root (fldOffset=0x0)" P-DEP
+;  V24 tmp23        [V24,T13] (  3,  1.50)     int  ->  [rbp-0x30]  do-not-enreg[] "field V11._count (fldOffset=0x8)" P-DEP
+;  V25 tmp24        [V25,T20] (  2,  1   )     int  ->  [rbp-0x2C]  do-not-enreg[] "field V11._countType (fldOffset=0xc)" P-DEP
+;  V26 tmp25        [V26,T16] (  2,  1   )     ref  ->  rdi         single-def "field V12._root (fldOffset=0x0)" P-INDEP
+;  V27 tmp26        [V27,T17] (  2,  1   )     ref  ->  rax         single-def "field V12._equalityComparer (fldOffset=0x8)" P-INDEP
+;  V28 tmp27        [V28,T18] (  2,  1   )     ref  ->  rdx         single-def "field V12._hashBucketEqualityComparer (fldOffset=0x10)" P-INDEP
+;  V29 tmp28        [V29,T21] (  2,  1   )     int  ->  rcx         "field V12._count (fldOffset=0x18)" P-INDEP
+;  V30 tmp29        [V30,T19] (  2,  1   )     ref  ->  [rbp-0x48]  do-not-enreg[] "field V20._root (fldOffset=0x0)" P-DEP
+;  V31 tmp30        [V31,T14] (  3,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[] "field V20._count (fldOffset=0x8)" P-DEP
+;  V32 tmp31        [V32,T22] (  2,  1   )     int  ->  [rbp-0x3C]  do-not-enreg[] "field V20._countType (fldOffset=0xc)" P-DEP
+;  V33 cse0         [V33,T07] (  4,  2   )     ref  ->  r14         "CSE #04: moderate"
+;  V34 cse1         [V34,T05] (  6,  3   )     ref  ->  registers   multi-def "CSE #02: aggressive"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 104
 
 G_M37119_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 56
-       lea      rbp, [rsp+0x60]
+       sub      rsp, 104
+       lea      rbp, [rsp+0x90]
        xor      eax, eax
-       mov      qword ptr [rbp-0x38], rax
+       mov      qword ptr [rbp-0x68], rax
+       vxorps   xmm8, xmm8, xmm8
+       vmovdqu  ymmword ptr [rbp-0x60], ymm8
+       vmovdqa  xmmword ptr [rbp-0x40], xmm8
+       mov      qword ptr [rbp-0x30], rax
        mov      rbx, rdi
-						;; size=28 bbWeight=1 PerfScore 8.25
+						;; size=50 bbWeight=1 PerfScore 13.58
 G_M37119_IG02:
        test     rbx, rbx
        je       G_M37119_IG08
 						;; size=9 bbWeight=1 PerfScore 1.25
 G_M37119_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableHashSet`1[int]
        cmp      qword ptr [rbx], rdi
        jne      G_M37119_IG08
 						;; size=19 bbWeight=0.25 PerfScore 1.06
 G_M37119_IG04:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r15, gword ptr [rdi]
        cmp      r15, gword ptr [rbx+0x08]
        je       G_M37119_IG06
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableHashSet`1[int]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r13, gword ptr [rdi]
        mov      rdi, r13
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
        lea      rdi, bword ptr [r14+0x10]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        xor      edi, edi
        mov      dword ptr [r14+0x20], edi
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
        lea      rdi, bword ptr [r14+0x18]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, gword ptr [r14+0x10]
        mov      rax, gword ptr [r14+0x08]
        mov      ecx, dword ptr [r14+0x20]
        mov      rdx, gword ptr [r14+0x18]
        mov      gword ptr [rsp], rdi
        mov      gword ptr [rsp+0x08], rax
        mov      gword ptr [rsp+0x10], rdx
        mov      dword ptr [rsp+0x18], ecx
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
        mov      gword ptr [rbp-0x38], rax
        mov      qword ptr [rbp-0x30], rdx
        mov      edx, dword ptr [rbp-0x30]
        cmp      dword ptr [rbp-0x2C], 0
        jne      SHORT G_M37119_IG05
        mov      edx, dword ptr [rbp-0x30]
        add      edx, dword ptr [r14+0x20]
 						;; size=212 bbWeight=0.50 PerfScore 25.62
 G_M37119_IG05:
        mov      rdi, r14
        mov      rsi, gword ptr [rbp-0x38]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
        jmp      SHORT G_M37119_IG07
 						;; size=21 bbWeight=0.50 PerfScore 3.25
 G_M37119_IG06:
        mov      rax, rbx
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M37119_IG07:
-       jmp      G_M37119_IG11
+       jmp      G_M37119_IG13
 						;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M37119_IG08:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r15, gword ptr [rdi]
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      r14, gword ptr [rdi]
        cmp      r15, gword ptr [r14+0x08]
-       je       G_M37119_IG09
+       je       G_M37119_IG11
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableHashSet`1[int]
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        mov      r12, rdi
        mov      rdi, r12
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
        call     [rax]System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]:Freeze(System.Action`1[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]]):this
        lea      rdi, bword ptr [r13+0x10]
        mov      rsi, r12
        call     CORINFO_HELP_ASSIGN_REF
        xor      edi, edi
        mov      dword ptr [r13+0x20], edi
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:GetHashBucketEqualityComparer(System.Collections.Generic.IEqualityComparer`1[int]):System.Collections.Generic.IEqualityComparer`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]]
        lea      rdi, bword ptr [r13+0x18]
        mov      rsi, rax
        call     CORINFO_HELP_ASSIGN_REF
-       mov      rsi, r14
-       mov      rdi, r13
-       mov      edx, 1
-       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],ubyte):System.Collections.Immutable.ImmutableHashSet`1[int]:this
-       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],ubyte):System.Collections.Immutable.ImmutableHashSet`1[int]:this
-       jmp      SHORT G_M37119_IG10
-						;; size=180 bbWeight=0.50 PerfScore 17.12
+       lea      rdi, [rbp-0x68]
+       mov      rsi, r13
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[int]):this
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]:.ctor(System.Collections.Immutable.ImmutableHashSet`1[int]):this
+       lea      rdi, [rsp]
+       lea      rsi, [rbp-0x68]
+       mov      rcx, gword ptr [rsi]
+       mov      gword ptr [rsp], rcx
+       add      rsi, 8
+       add      rdi, 8
+       mov      rcx, gword ptr [rsi]
+       mov      gword ptr [rsp+0x08], rcx
+       add      rsi, 8
+       add      rdi, 8
+       mov      rcx, gword ptr [rsi]
+       mov      gword ptr [rsp+0x10], rcx
+       add      rsi, 8
+       add      rdi, 8
+       movsq    
+       mov      rdi, r14
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int]
+       mov      gword ptr [rbp-0x48], rax
+       mov      qword ptr [rbp-0x40], rdx
+       mov      rsi, r13
+       mov      rdi, 0xD1FFAB1E      ; System.Collections.Immutable.Requires:NotNull[System.Collections.Immutable.ImmutableHashSet`1[int]](System.Collections.Immutable.ImmutableHashSet`1[int],System.String)
+       mov      rdx, 0xD1FFAB1E      ; 'priorSet'
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+						;; size=287 bbWeight=0.50 PerfScore 25.62
 G_M37119_IG09:
+       call     [rax]System.Collections.Immutable.Requires:NotNull[System.__Canon](System.__Canon,System.String)
+       mov      edx, dword ptr [rbp-0x40]
+       cmp      dword ptr [rbp-0x3C], 0
+       jne      SHORT G_M37119_IG10
+       mov      edx, dword ptr [rbp-0x40]
+       add      edx, dword ptr [r13+0x20]
+						;; size=18 bbWeight=0.50 PerfScore 5.50
+G_M37119_IG10:
+       mov      rdi, r13
+       mov      rsi, gword ptr [rbp-0x48]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
+       call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Wrap(System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[int]],int):System.Collections.Immutable.ImmutableHashSet`1[int]:this
+       jmp      SHORT G_M37119_IG12
+						;; size=21 bbWeight=0.50 PerfScore 3.25
+G_M37119_IG11:
        mov      rax, r14
 						;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M37119_IG10:
+G_M37119_IG12:
        mov      rdi, rax
        mov      rsi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int]:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int]:this
 						;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M37119_IG11:
+G_M37119_IG13:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M37119_IG12:
-       add      rsp, 56
+G_M37119_IG14:
+       add      rsp, 104
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 
-; Total bytes of code 516, prolog size 25, PerfScore 65.69, instruction count 121, allocated bytes for code 516 (MethodHash=1b9d6f00) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
+; Total bytes of code 684, prolog size 47, PerfScore 88.27, instruction count 158, allocated bytes for code 684 (MethodHash=1b9d6f00) for method System.Collections.Immutable.ImmutableHashSet:ToImmutableHashSet[int](System.Collections.Generic.IEnumerable`1[int]):System.Collections.Immutable.ImmutableHashSet`1[int] (FullOpts)
 ; ============================================================
3 (5.08 % of base) - System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte
 ; Assembly listing for method System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
+; rsp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] (  3,  3   )  ushort  ->  rdi         single-def
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 cse0         [V02,T02] (  2,  1   )     ref  ->  rdi         "CSE #01: moderate"
 ;  V03 cse1         [V03,T01] (  3,  2.50)     int  ->  rsi         "CSE #02: aggressive"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M64796_IG01:
-       push     rbp
-       mov      rbp, rsp
-						;; size=4 bbWeight=1 PerfScore 1.25
+       push     rax
+						;; size=1 bbWeight=1 PerfScore 1.00
 G_M64796_IG02:
        movzx    rsi, di
        cmp      esi, 32
        jle      SHORT G_M64796_IG05
 						;; size=8 bbWeight=1 PerfScore 1.50
 G_M64796_IG03:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M64796_IG04:
-       pop      rbp
+       add      rsp, 8
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M64796_IG05:
        mov      rcx, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rcx]
        mov      ecx, 4
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Array:IndexOf[ushort](ushort[],ushort,int,int):int
        call     [rax]System.Array:IndexOf[ushort](ushort[],ushort,int,int):int
        cmp      eax, -1
        setne    al
        movzx    rax, al
 						;; size=41 bbWeight=0.50 PerfScore 3.75
 G_M64796_IG06:
-       pop      rbp
+       add      rsp, 8
        ret      
-						;; size=2 bbWeight=0.50 PerfScore 0.75
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 
-; Total bytes of code 59, prolog size 4, PerfScore 8.12, instruction count 19, allocated bytes for code 59 (MethodHash=e95702e3) for method System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
+; Total bytes of code 62, prolog size 1, PerfScore 7.62, instruction count 18, allocated bytes for code 62 (MethodHash=e95702e3) for method System.IO.Packaging.ContentType:IsLinearWhiteSpaceChar(ushort):ubyte (FullOpts)
 ; ============================================================

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 23, 2024

Top method improvements

-57 (-22.18 % of base) - System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte
 ; Assembly listing for method System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (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; 5 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  4,  3.50)     int  ->  rdi         single-def
 ;  V01 arg1         [V01,T00] (  7,  4.50)     ref  ->  rbx         class-hnd single-def <System.Net.Http.HttpMethod>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V03 tmp1         [V03,T03] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V03 tmp1         [V03    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V04 tmp2         [V04    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V05 tmp3         [V05,T04] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V06 tmp4         [V06,T05] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V05 tmp3         [V05,T03] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V06 tmp4         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V07 tmp5         [V07,T02] (  3,  1.50)   ubyte  ->  r15         "Inline return value spill temp"
-;  V08 tmp6         [V08,T06] (  2,  1   )   ubyte  ->  r15         "Inline return value spill temp"
+;* V08 tmp6         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;
 ; Lcl frame size = 0
 
 G_M44026_IG01:
        push     rbp
        push     r15
        push     rbx
        lea      rbp, [rsp+0x10]
        mov      rbx, rsi
 						;; size=12 bbWeight=1 PerfScore 3.75
 G_M44026_IG02:
        lea      eax, [rdi-0x12C]
        cmp      eax, 2
        ja       SHORT G_M44026_IG07
 						;; size=11 bbWeight=1 PerfScore 1.75
 G_M44026_IG03:
        test     rbx, rbx
        jne      SHORT G_M44026_IG05
-       mov      rax, 0xD1FFAB1E      ; const ptr
-       cmp      gword ptr [rax], 0
-       sete     al
-       movzx    rax, al
-						;; size=25 bbWeight=0.50 PerfScore 2.88
+       xor      eax, eax
+						;; size=7 bbWeight=0.50 PerfScore 0.75
 G_M44026_IG04:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M44026_IG05:
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rsi, gword ptr [rsi+0x08]
        mov      rdi, gword ptr [rbx+0x08]
        mov      edx, 5
        mov      rax, 0xD1FFAB1E      ; code for System.String:Equals(System.String,System.String,int):ubyte
 						;; size=36 bbWeight=0.50 PerfScore 3.38
 G_M44026_IG06:
        pop      rbx
        pop      r15
        pop      rbp
        tail.jmp [rax]System.String:Equals(System.String,System.String,int):ubyte
 						;; size=7 bbWeight=0.50 PerfScore 1.75
 G_M44026_IG07:
        cmp      edi, 303
-       jne      G_M44026_IG11
+       jne      SHORT G_M44026_IG11
        test     rbx, rbx
        jne      SHORT G_M44026_IG08
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       cmp      gword ptr [rsi], 0
-       je       SHORT G_M44026_IG11
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       cmp      gword ptr [rsi], 0
-       sete     r15b
-       movzx    r15, r15b
+       xor      r15d, r15d
        jmp      SHORT G_M44026_IG09
-						;; size=57 bbWeight=0.50 PerfScore 6.62
+						;; size=18 bbWeight=0.50 PerfScore 2.38
 G_M44026_IG08:
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rsi, gword ptr [rsi+0x08]
        mov      rdi, gword ptr [rbx+0x08]
        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
        jne      SHORT G_M44026_IG11
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rsi, gword ptr [rsi+0x08]
        mov      rdi, gword ptr [rbx+0x08]
        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
        mov      r15d, eax
 						;; size=83 bbWeight=0.50 PerfScore 10.50
 G_M44026_IG09:
        test     r15d, r15d
        sete     al
        movzx    rax, al
 						;; size=9 bbWeight=0.50 PerfScore 0.75
 G_M44026_IG10:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 G_M44026_IG11:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M44026_IG12:
        pop      rbx
        pop      r15
        pop      rbp
        ret      
 						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 257, prolog size 12, PerfScore 35.25, instruction count 69, allocated bytes for code 257 (MethodHash=43e05405) for method System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (FullOpts)
+; Total bytes of code 200, prolog size 12, PerfScore 28.88, instruction count 60, allocated bytes for code 200 (MethodHash=43e05405) for method System.Net.Http.RedirectHandler:RequestRequiresForceGet(int,System.Net.Http.HttpMethod):ubyte (FullOpts)
 ; ============================================================
-47 (-4.00 % of base) - System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this
 ; Assembly listing for method System.Text.Json.Utf8JsonWriter:WritePropertyName(double):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; 52 single block inlinees; 23 inlinees without PGO data
+; 0 inlinees with PGO data; 53 single block inlinees; 23 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T05] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Text.Json.Utf8JsonWriter>
-;  V01 arg1         [V01,T56] (  4,  4   )  double  ->  [rbp-0x60]  single-def
+;  V01 arg1         [V01,T60] (  4,  4   )  double  ->  [rbp-0x60]  single-def
 ;* V02 loc0         [V02    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[ubyte]>
 ;  V03 loc1         [V03    ] (  4,  2.50)     int  ->  [rbp-0x68]  do-not-enreg[X] addr-exposed ld-addr-op ptr
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ubyte]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ubyte]>
 ;  V08 tmp4         [V08,T12] (  2,  4   )    long  ->  r15         "Inlining Arg"
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inlining Arg" <System.Span`1[ubyte]>
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Buffers.StandardFormat>
 ;* V11 tmp7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Buffers.StandardFormat>
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[ushort]>
 ;  V13 tmp9         [V13    ] (  4,  7   )  struct ( 8) [rbp-0x70]  do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Buffers.StandardFormat>
 ;* V14 tmp10        [V14    ] (  0,  0   )  double  ->  zero-ref    ld-addr-op "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )  double  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
 ;* V16 tmp12        [V16    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V17 tmp13        [V17    ] (  0,  0   )  struct (16) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp14        [V18    ] (  1,  0.50)  struct ( 8) [rbp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
 ;* V19 tmp15        [V19    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;* V20 tmp16        [V20    ] (  0,  0   )  struct (16) zero-ref    "Inline stloc first use temp" <System.Span`1[ushort]>
 ;* V21 tmp17        [V21    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]>
 ;* V22 tmp18        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V23 tmp19        [V23    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V24 tmp20        [V24    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V25 tmp21        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp22        [V26    ] (  0,  0   )  double  ->  zero-ref    "impAppendStmt"
-;  V27 tmp23        [V27,T22] (  2,  2   )     ref  ->  rcx         class-hnd "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
+;  V27 tmp23        [V27,T22] (  2,  2   )     ref  ->  rcx         class-hnd single-def "Inline return value spill temp" <System.Globalization.NumberFormatInfo>
 ;* V28 tmp24        [V28    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V29 tmp25        [V29    ] (  1,  1   )  struct (32) [rbp-0x58]  do-not-enreg[XS] addr-exposed ld-addr-op unsafe-buffer "stackallocLocal"
 ;* V30 tmp26        [V30    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V31 tmp27        [V31    ] (  0,  0   )  struct (16) zero-ref    "Inline stloc first use temp" <System.Span`1[ubyte]>
 ;  V32 tmp28        [V32    ] ( 11,  8.50)  struct (32) [rbp-0x90]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op ptr "Inline ldloca(s) first use temp" <System.Collections.Generic.ValueListBuilder`1[ubyte]>
 ;  V33 tmp29        [V33,T14] (  4,  3   )     ref  ->  rax         class-hnd exact single-def "Inline stloc first use temp" <System.String>
 ;* V34 tmp30        [V34    ] (  0,  0   )     int  ->  zero-ref   
 ;* V35 tmp31        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V36 tmp32        [V36    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
 ;  V37 tmp33        [V37,T09] (  4,  4   )     int  ->  rdx         "Inlining Arg"
 ;* V38 tmp34        [V38    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V39 tmp35        [V39    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V40 tmp36        [V40,T54] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
+;* V40 tmp36        [V40,T58] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;* V41 tmp37        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V42 tmp38        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V43 tmp39        [V43    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp40        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp41        [V45    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V46 tmp42        [V46,T23] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;* V47 tmp43        [V47    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V48 tmp44        [V48    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V49 tmp45        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V50 tmp46        [V50    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;  V51 tmp47        [V51,T24] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V52 tmp48        [V52,T31] (  2,  2   )     int  ->  rdx         "Inlining Arg"
+;  V52 tmp48        [V52,T32] (  2,  2   )     int  ->  rdx         "Inlining Arg"
 ;  V53 tmp49        [V53,T17] (  3,  2.50)     ref  ->  r14         class-hnd single-def "Inline stloc first use temp" <ubyte[]>
 ;  V54 tmp50        [V54,T04] (  4,  6   )     int  ->  rdi         "Inlining Arg"
 ;* V55 tmp51        [V55    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V56 tmp52        [V56    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V57 tmp53        [V57    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V58 tmp54        [V58    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V59 tmp55        [V59    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "Inlining Arg"
 ;* V60 tmp56        [V60    ] (  0,  0   )     int  ->  zero-ref    ptr "Inlining Arg"
 ;* V61 tmp57        [V61    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
 ;* V62 tmp58        [V62    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V63 tmp59        [V63    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V64 tmp60        [V64    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V65 tmp61        [V65,T20] (  4,  2   )     int  ->  r15         "Inline stloc first use temp"
 ;  V66 tmp62        [V66    ] (  5,  5   )  struct (16) [rbp-0xA0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ubyte]>
-;  V67 tmp63        [V67,T34] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
+;  V67 tmp63        [V67,T36] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
 ;* V68 tmp64        [V68    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V69 tmp65        [V69    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
 ;* V70 tmp66        [V70    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ubyte]>
 ;  V71 tmp67        [V71,T01] ( 20, 10   )     int  ->  r14         "Inline stloc first use temp"
 ;* V72 tmp68        [V72    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[ubyte]>
 ;* V73 tmp69        [V73    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp70        [V74    ] (  0,  0   )  struct (16) zero-ref    "Inline return value spill temp" <System.Span`1[ubyte]>
 ;  V75 tmp71        [V75,T03] ( 14,  7   )   byref  ->  r13         "Inline stloc first use temp"
 ;  V76 tmp72        [V76,T02] ( 16,  8   )     int  ->  r12         "Inline stloc first use temp"
 ;  V77 tmp73        [V77,T08] (  4,  4   )   byref  ->  r14         single-def "Inlining Arg"
 ;  V78 tmp74        [V78,T13] (  7,  3.50)     ref  ->  rdi         class-hnd single-def "Inline stloc first use temp" <System.Object>
 ;* V79 tmp75        [V79    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;* V80 tmp76        [V80    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <System.Buffers.MemoryManager`1[ubyte]>
 ;* V81 tmp77        [V81    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ubyte]>
 ;* V82 tmp78        [V82    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op "Inline stloc first use temp" <System.Span`1[ubyte]>
-;  V83 tmp79        [V83,T35] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
-;  V84 tmp80        [V84,T36] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
+;  V83 tmp79        [V83,T37] (  3,  1.50)    long  ->  rdi         "Inline stloc first use temp"
+;  V84 tmp80        [V84,T38] (  3,  1.50)     int  ->  rsi         "Inline stloc first use temp"
 ;* V85 tmp81        [V85    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def ptr "updating class info" <ubyte[]>
 ;* V86 tmp82        [V86    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "updating class info" <ubyte[]>
 ;  V87 tmp83        [V87,T25] (  2,  2   )   byref  ->  rax         single-def "Inlining Arg"
 ;* V88 tmp84        [V88    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V89 tmp85        [V89    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V90 tmp86        [V90    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;  V91 tmp87        [V91,T06] (  8,  4   )     int  ->  rdi         "Inline stloc first use temp"
 ;* V92 tmp88        [V92    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V93 tmp89        [V93    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V94 tmp90        [V94,T10] (  4,  4   )     int  ->  rdi         "Inlining Arg"
 ;* V95 tmp91        [V95    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
 ;  V96 tmp92        [V96,T26] (  2,  2   )   byref  ->  rsi         single-def "Inlining Arg"
-;  V97 tmp93        [V97,T32] (  2,  2   )     int  ->  rcx         "Inlining Arg"
+;  V97 tmp93        [V97,T33] (  2,  2   )     int  ->  rcx         "Inlining Arg"
 ;* V98 tmp94        [V98    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V99 tmp95        [V99    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V100 tmp96       [V100,T11] (  4,  4   )     int  ->  rdx         "Inlining Arg"
-;  V101 tmp97       [V101    ] (  4,  4   )  struct (16) [rbp-0xB0]  do-not-enreg[XSA] multireg-arg must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
-;* V102 tmp98       [V102    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V103 tmp99       [V103    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V100 tmp96       [V100,T11] (  4,  4   )     int  ->  rsi         "Inlining Arg"
+;* V101 tmp97       [V101    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[ubyte]>
+;  V102 tmp98       [V102,T27] (  2,  2   )   byref  ->  rdx         single-def "Inlining Arg"
+;  V103 tmp99       [V103,T34] (  2,  2   )     int  ->  rdi         "Inlining Arg"
 ;* V104 tmp100      [V104    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V105 tmp101      [V105    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V106 tmp102      [V106,T07] (  4,  3   )   byref  ->  r15         single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-;* V107 tmp103      [V107,T50] (  0,  0   )     int  ->  zero-ref    ptr "field V02._length (fldOffset=0x8)" P-INDEP
-;  V108 tmp104      [V108,T27] (  2,  2   )   byref  ->  r15         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
-;* V109 tmp105      [V109,T51] (  0,  0   )     int  ->  zero-ref    ptr "field V05._length (fldOffset=0x8)" P-INDEP
-;* V110 tmp106      [V110    ] (  0,  0   )   byref  ->  zero-ref    "field V06._reference (fldOffset=0x0)" P-INDEP
-;* V111 tmp107      [V111    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
-;* V112 tmp108      [V112    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V07._reference (fldOffset=0x0)" P-INDEP
-;* V113 tmp109      [V113    ] (  0,  0   )     int  ->  zero-ref    ptr "field V07._length (fldOffset=0x8)" P-INDEP
-;* V114 tmp110      [V114,T49] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V09._reference (fldOffset=0x0)" P-INDEP
-;* V115 tmp111      [V115,T52] (  0,  0   )     int  ->  zero-ref    ptr "field V09._length (fldOffset=0x8)" P-INDEP
-;* V116 tmp112      [V116    ] (  0,  0   )   ubyte  ->  zero-ref    "field V10._format (fldOffset=0x0)" P-INDEP
-;* V117 tmp113      [V117    ] (  0,  0   )   ubyte  ->  zero-ref    "field V10._precision (fldOffset=0x1)" P-INDEP
-;* V118 tmp114      [V118    ] (  0,  0   )   ubyte  ->  zero-ref    "field V11._format (fldOffset=0x0)" P-INDEP
-;* V119 tmp115      [V119    ] (  0,  0   )   ubyte  ->  zero-ref    "field V11._precision (fldOffset=0x1)" P-INDEP
-;  V120 tmp116      [V120,T18] (  3,  2.50)   byref  ->  r14         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
-;  V121 tmp117      [V121,T19] (  3,  2.50)     int  ->  r13         "field V12._length (fldOffset=0x8)" P-INDEP
-;  V122 tmp118      [V122    ] (  3,  4   )   ubyte  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "field V13._format (fldOffset=0x0)" P-DEP
-;  V123 tmp119      [V123    ] (  3,  4   )   ubyte  ->  [rbp-0x6F]  do-not-enreg[X] addr-exposed "field V13._precision (fldOffset=0x1)" P-DEP
-;* V124 tmp120      [V124    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-;* V125 tmp121      [V125    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
-;  V126 tmp122      [V126,T39] (  2,  1   )   byref  ->  rsi         single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-;* V127 tmp123      [V127,T55] (  0,  0   )     int  ->  zero-ref    ptr "field V19._length (fldOffset=0x8)" P-INDEP
-;* V128 tmp124      [V128    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V129 tmp125      [V129    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
-;* V130 tmp126      [V130    ] (  0,  0   )   byref  ->  zero-ref    "field V21._reference (fldOffset=0x0)" P-DEP
-;* V131 tmp127      [V131    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-DEP
-;* V132 tmp128      [V132    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
-;* V133 tmp129      [V133    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
-;  V134 tmp130      [V134,T28] (  2,  2   )   byref  ->  r14         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;  V135 tmp131      [V135,T33] (  2,  2   )     int  ->  r13         "field V23._length (fldOffset=0x8)" P-INDEP
-;  V136 tmp132      [V136,T29] (  2,  2   )   byref  ->  rsi         single-def "field V30._reference (fldOffset=0x0)" P-INDEP
-;* V137 tmp133      [V137,T53] (  0,  0   )     int  ->  zero-ref    ptr "field V30._length (fldOffset=0x8)" P-INDEP
-;* V138 tmp134      [V138    ] (  0,  0   )   byref  ->  zero-ref    "field V31._reference (fldOffset=0x0)" P-INDEP
-;* V139 tmp135      [V139    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
-;* V140 tmp136      [V140    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V36._reference (fldOffset=0x0)" P-INDEP
-;* V141 tmp137      [V141    ] (  0,  0   )     int  ->  zero-ref    ptr "field V36._length (fldOffset=0x8)" P-INDEP
-;  V142 tmp138      [V142,T40] (  2,  1   )   byref  ->  rsi         single-def "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V143 tmp139      [V143    ] (  0,  0   )     int  ->  zero-ref    ptr "field V38._length (fldOffset=0x8)" P-INDEP
-;* V144 tmp140      [V144    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V41._reference (fldOffset=0x0)" P-INDEP
-;* V145 tmp141      [V145    ] (  0,  0   )     int  ->  zero-ref    ptr "field V41._length (fldOffset=0x8)" P-INDEP
-;* V146 tmp142      [V146    ] (  0,  0   )   byref  ->  zero-ref    "field V47._reference (fldOffset=0x0)" P-INDEP
-;* V147 tmp143      [V147    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
-;  V148 tmp144      [V148,T41] (  2,  1   )   byref  ->  rsi         single-def "field V48._reference (fldOffset=0x0)" P-INDEP
-;  V149 tmp145      [V149,T45] (  2,  1   )     int  ->  rdx         "field V48._length (fldOffset=0x8)" P-INDEP
-;  V150 tmp146      [V150,T42] (  2,  1   )   byref  ->  rsi         single-def "field V49._reference (fldOffset=0x0)" P-INDEP
-;  V151 tmp147      [V151,T46] (  2,  1   )     int  ->  rdx         "field V49._length (fldOffset=0x8)" P-INDEP
-;* V152 tmp148      [V152    ] (  0,  0   )   byref  ->  zero-ref    "field V50._reference (fldOffset=0x0)" P-INDEP
-;* V153 tmp149      [V153    ] (  0,  0   )     int  ->  zero-ref    "field V50._length (fldOffset=0x8)" P-INDEP
-;* V154 tmp150      [V154    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V55._reference (fldOffset=0x0)" P-INDEP
-;* V155 tmp151      [V155    ] (  0,  0   )     int  ->  zero-ref    ptr "field V55._length (fldOffset=0x8)" P-INDEP
-;* V156 tmp152      [V156    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V57._reference (fldOffset=0x0)" P-INDEP
-;* V157 tmp153      [V157    ] (  0,  0   )     int  ->  zero-ref    ptr "field V57._length (fldOffset=0x8)" P-INDEP
-;  V158 tmp154      [V158,T21] (  3,  2   )   byref  ->  rsi         single-def "field V58._reference (fldOffset=0x0)" P-INDEP
-;  V159 tmp155      [V159,T15] (  4,  3   )     int  ->  rdx         "field V58._length (fldOffset=0x8)" P-INDEP
-;* V160 tmp156      [V160    ] (  0,  0   )   byref  ->  zero-ref    "field V61._reference (fldOffset=0x0)" P-INDEP
-;* V161 tmp157      [V161    ] (  0,  0   )     int  ->  zero-ref    ptr "field V61._length (fldOffset=0x8)" P-INDEP
-;  V162 tmp158      [V162    ] (  2,  1.50)   byref  ->  [rbp-0xA0]  do-not-enreg[X] addr-exposed ptr "field V66._reference (fldOffset=0x0)" P-DEP
-;  V163 tmp159      [V163    ] (  4,  2.50)     int  ->  [rbp-0x98]  do-not-enreg[X] addr-exposed ptr "field V66._length (fldOffset=0x8)" P-DEP
-;* V164 tmp160      [V164    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP
-;* V165 tmp161      [V165    ] (  0,  0   )     int  ->  zero-ref    ptr "field V69._length (fldOffset=0x8)" P-INDEP
-;* V166 tmp162      [V166    ] (  0,  0   )   byref  ->  zero-ref    "field V70._reference (fldOffset=0x0)" P-INDEP
-;* V167 tmp163      [V167    ] (  0,  0   )     int  ->  zero-ref    "field V70._length (fldOffset=0x8)" P-INDEP
-;* V168 tmp164      [V168    ] (  0,  0   )   byref  ->  zero-ref    "field V72._reference (fldOffset=0x0)" P-INDEP
-;* V169 tmp165      [V169    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
-;* V170 tmp166      [V170    ] (  0,  0   )   byref  ->  zero-ref    "field V74._reference (fldOffset=0x0)" P-INDEP
-;* V171 tmp167      [V171    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
-;* V172 tmp168      [V172    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V79._reference (fldOffset=0x0)" P-INDEP
-;* V173 tmp169      [V173    ] (  0,  0   )     int  ->  zero-ref    ptr "field V79._length (fldOffset=0x8)" P-INDEP
-;* V174 tmp170      [V174    ] (  0,  0   )   byref  ->  zero-ref    "field V81._reference (fldOffset=0x0)" P-DEP
-;* V175 tmp171      [V175    ] (  0,  0   )     int  ->  zero-ref    "field V81._length (fldOffset=0x8)" P-DEP
-;  V176 tmp172      [V176,T43] (  2,  1   )   byref  ->  r13         "field V82._reference (fldOffset=0x0)" P-INDEP
-;  V177 tmp173      [V177,T47] (  2,  1   )     int  ->  r12         "field V82._length (fldOffset=0x8)" P-INDEP
-;* V178 tmp174      [V178    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V88._reference (fldOffset=0x0)" P-INDEP
-;* V179 tmp175      [V179    ] (  0,  0   )     int  ->  zero-ref    "field V88._length (fldOffset=0x8)" P-INDEP
-;* V180 tmp176      [V180    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V90._reference (fldOffset=0x0)" P-INDEP
-;* V181 tmp177      [V181    ] (  0,  0   )     int  ->  zero-ref    ptr "field V90._length (fldOffset=0x8)" P-INDEP
-;  V182 tmp178      [V182,T44] (  2,  1   )   byref  ->  rdi         single-def "field V95._reference (fldOffset=0x0)" P-INDEP
-;  V183 tmp179      [V183,T48] (  2,  1   )     int  ->  rsi         "field V95._length (fldOffset=0x8)" P-INDEP
-;  V184 tmp180      [V184    ] (  3,  2.50)   byref  ->  [rbp-0xB0]  do-not-enreg[X] addr-exposed ptr "field V101._reference (fldOffset=0x0)" P-DEP
-;  V185 tmp181      [V185    ] (  3,  2.50)     int  ->  [rbp-0xA8]  do-not-enreg[X] addr-exposed ptr "field V101._length (fldOffset=0x8)" P-DEP
-;  V186 tmp182      [V186,T30] (  2,  2   )     ref  ->  rdi         single-def "argument with side effect"
-;  V187 GsCookie    [V187    ] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V188 tmp184      [V188,T00] ( 39, 21   )     ref  ->  rbx         single-def "shadowVar"
-;  V189 cse0        [V189,T37] (  3,  1.50)     int  ->  r14         "CSE #04: conservative"
-;  V190 cse1        [V190,T38] (  3,  1.50)     int  ->  r14         "CSE #05: conservative"
-;  V191 cse2        [V191,T16] (  3,  3   )     int  ->  rdi         "CSE #02: moderate"
+;* V106 tmp102      [V106    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V107 tmp103      [V107    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;  V108 tmp104      [V108,T07] (  4,  3   )   byref  ->  r15         single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+;* V109 tmp105      [V109,T54] (  0,  0   )     int  ->  zero-ref    ptr "field V02._length (fldOffset=0x8)" P-INDEP
+;  V110 tmp106      [V110,T28] (  2,  2   )   byref  ->  r15         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;* V111 tmp107      [V111,T55] (  0,  0   )     int  ->  zero-ref    ptr "field V05._length (fldOffset=0x8)" P-INDEP
+;* V112 tmp108      [V112    ] (  0,  0   )   byref  ->  zero-ref    "field V06._reference (fldOffset=0x0)" P-INDEP
+;* V113 tmp109      [V113    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x8)" P-INDEP
+;* V114 tmp110      [V114    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V07._reference (fldOffset=0x0)" P-INDEP
+;* V115 tmp111      [V115    ] (  0,  0   )     int  ->  zero-ref    ptr "field V07._length (fldOffset=0x8)" P-INDEP
+;* V116 tmp112      [V116,T53] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V09._reference (fldOffset=0x0)" P-INDEP
+;* V117 tmp113      [V117,T56] (  0,  0   )     int  ->  zero-ref    ptr "field V09._length (fldOffset=0x8)" P-INDEP
+;* V118 tmp114      [V118    ] (  0,  0   )   ubyte  ->  zero-ref    "field V10._format (fldOffset=0x0)" P-INDEP
+;* V119 tmp115      [V119    ] (  0,  0   )   ubyte  ->  zero-ref    "field V10._precision (fldOffset=0x1)" P-INDEP
+;* V120 tmp116      [V120    ] (  0,  0   )   ubyte  ->  zero-ref    "field V11._format (fldOffset=0x0)" P-INDEP
+;* V121 tmp117      [V121    ] (  0,  0   )   ubyte  ->  zero-ref    "field V11._precision (fldOffset=0x1)" P-INDEP
+;  V122 tmp118      [V122,T18] (  3,  2.50)   byref  ->  r14         single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;  V123 tmp119      [V123,T19] (  3,  2.50)     int  ->  r13         "field V12._length (fldOffset=0x8)" P-INDEP
+;  V124 tmp120      [V124    ] (  3,  4   )   ubyte  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "field V13._format (fldOffset=0x0)" P-DEP
+;  V125 tmp121      [V125    ] (  3,  4   )   ubyte  ->  [rbp-0x6F]  do-not-enreg[X] addr-exposed "field V13._precision (fldOffset=0x1)" P-DEP
+;* V126 tmp122      [V126    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+;* V127 tmp123      [V127    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
+;  V128 tmp124      [V128,T41] (  2,  1   )   byref  ->  rsi         single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+;* V129 tmp125      [V129,T59] (  0,  0   )     int  ->  zero-ref    ptr "field V19._length (fldOffset=0x8)" P-INDEP
+;* V130 tmp126      [V130    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
+;* V131 tmp127      [V131    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
+;* V132 tmp128      [V132    ] (  0,  0   )   byref  ->  zero-ref    "field V21._reference (fldOffset=0x0)" P-DEP
+;* V133 tmp129      [V133    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x8)" P-DEP
+;* V134 tmp130      [V134    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V22._reference (fldOffset=0x0)" P-INDEP
+;* V135 tmp131      [V135    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
+;  V136 tmp132      [V136,T29] (  2,  2   )   byref  ->  r14         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;  V137 tmp133      [V137,T35] (  2,  2   )     int  ->  r13         "field V23._length (fldOffset=0x8)" P-INDEP
+;  V138 tmp134      [V138,T30] (  2,  2   )   byref  ->  rsi         single-def "field V30._reference (fldOffset=0x0)" P-INDEP
+;* V139 tmp135      [V139,T57] (  0,  0   )     int  ->  zero-ref    ptr "field V30._length (fldOffset=0x8)" P-INDEP
+;* V140 tmp136      [V140    ] (  0,  0   )   byref  ->  zero-ref    "field V31._reference (fldOffset=0x0)" P-INDEP
+;* V141 tmp137      [V141    ] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x8)" P-INDEP
+;* V142 tmp138      [V142    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V36._reference (fldOffset=0x0)" P-INDEP
+;* V143 tmp139      [V143    ] (  0,  0   )     int  ->  zero-ref    ptr "field V36._length (fldOffset=0x8)" P-INDEP
+;  V144 tmp140      [V144,T42] (  2,  1   )   byref  ->  rsi         single-def "field V38._reference (fldOffset=0x0)" P-INDEP
+;* V145 tmp141      [V145    ] (  0,  0   )     int  ->  zero-ref    ptr "field V38._length (fldOffset=0x8)" P-INDEP
+;* V146 tmp142      [V146    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V41._reference (fldOffset=0x0)" P-INDEP
+;* V147 tmp143      [V147    ] (  0,  0   )     int  ->  zero-ref    ptr "field V41._length (fldOffset=0x8)" P-INDEP
+;* V148 tmp144      [V148    ] (  0,  0   )   byref  ->  zero-ref    "field V47._reference (fldOffset=0x0)" P-INDEP
+;* V149 tmp145      [V149    ] (  0,  0   )     int  ->  zero-ref    "field V47._length (fldOffset=0x8)" P-INDEP
+;  V150 tmp146      [V150,T43] (  2,  1   )   byref  ->  rsi         single-def "field V48._reference (fldOffset=0x0)" P-INDEP
+;  V151 tmp147      [V151,T48] (  2,  1   )     int  ->  rdx         "field V48._length (fldOffset=0x8)" P-INDEP
+;  V152 tmp148      [V152,T44] (  2,  1   )   byref  ->  rsi         single-def "field V49._reference (fldOffset=0x0)" P-INDEP
+;  V153 tmp149      [V153,T49] (  2,  1   )     int  ->  rdx         "field V49._length (fldOffset=0x8)" P-INDEP
+;* V154 tmp150      [V154    ] (  0,  0   )   byref  ->  zero-ref    "field V50._reference (fldOffset=0x0)" P-INDEP
+;* V155 tmp151      [V155    ] (  0,  0   )     int  ->  zero-ref    "field V50._length (fldOffset=0x8)" P-INDEP
+;* V156 tmp152      [V156    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V55._reference (fldOffset=0x0)" P-INDEP
+;* V157 tmp153      [V157    ] (  0,  0   )     int  ->  zero-ref    ptr "field V55._length (fldOffset=0x8)" P-INDEP
+;* V158 tmp154      [V158    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V57._reference (fldOffset=0x0)" P-INDEP
+;* V159 tmp155      [V159    ] (  0,  0   )     int  ->  zero-ref    ptr "field V57._length (fldOffset=0x8)" P-INDEP
+;  V160 tmp156      [V160,T21] (  3,  2   )   byref  ->  rsi         single-def "field V58._reference (fldOffset=0x0)" P-INDEP
+;  V161 tmp157      [V161,T15] (  4,  3   )     int  ->  rdx         "field V58._length (fldOffset=0x8)" P-INDEP
+;* V162 tmp158      [V162    ] (  0,  0   )   byref  ->  zero-ref    "field V61._reference (fldOffset=0x0)" P-INDEP
+;* V163 tmp159      [V163    ] (  0,  0   )     int  ->  zero-ref    ptr "field V61._length (fldOffset=0x8)" P-INDEP
+;  V164 tmp160      [V164    ] (  2,  1.50)   byref  ->  [rbp-0xA0]  do-not-enreg[X] addr-exposed ptr "field V66._reference (fldOffset=0x0)" P-DEP
+;  V165 tmp161      [V165    ] (  4,  2.50)     int  ->  [rbp-0x98]  do-not-enreg[X] addr-exposed ptr "field V66._length (fldOffset=0x8)" P-DEP
+;* V166 tmp162      [V166    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V69._reference (fldOffset=0x0)" P-INDEP
+;* V167 tmp163      [V167    ] (  0,  0   )     int  ->  zero-ref    ptr "field V69._length (fldOffset=0x8)" P-INDEP
+;* V168 tmp164      [V168    ] (  0,  0   )   byref  ->  zero-ref    "field V70._reference (fldOffset=0x0)" P-INDEP
+;* V169 tmp165      [V169    ] (  0,  0   )     int  ->  zero-ref    "field V70._length (fldOffset=0x8)" P-INDEP
+;* V170 tmp166      [V170    ] (  0,  0   )   byref  ->  zero-ref    "field V72._reference (fldOffset=0x0)" P-INDEP
+;* V171 tmp167      [V171    ] (  0,  0   )     int  ->  zero-ref    "field V72._length (fldOffset=0x8)" P-INDEP
+;* V172 tmp168      [V172    ] (  0,  0   )   byref  ->  zero-ref    "field V74._reference (fldOffset=0x0)" P-INDEP
+;* V173 tmp169      [V173    ] (  0,  0   )     int  ->  zero-ref    "field V74._length (fldOffset=0x8)" P-INDEP
+;* V174 tmp170      [V174    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V79._reference (fldOffset=0x0)" P-INDEP
+;* V175 tmp171      [V175    ] (  0,  0   )     int  ->  zero-ref    ptr "field V79._length (fldOffset=0x8)" P-INDEP
+;* V176 tmp172      [V176    ] (  0,  0   )   byref  ->  zero-ref    "field V81._reference (fldOffset=0x0)" P-DEP
+;* V177 tmp173      [V177    ] (  0,  0   )     int  ->  zero-ref    "field V81._length (fldOffset=0x8)" P-DEP
+;  V178 tmp174      [V178,T45] (  2,  1   )   byref  ->  r13         "field V82._reference (fldOffset=0x0)" P-INDEP
+;  V179 tmp175      [V179,T50] (  2,  1   )     int  ->  r12         "field V82._length (fldOffset=0x8)" P-INDEP
+;* V180 tmp176      [V180    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V88._reference (fldOffset=0x0)" P-INDEP
+;* V181 tmp177      [V181    ] (  0,  0   )     int  ->  zero-ref    "field V88._length (fldOffset=0x8)" P-INDEP
+;* V182 tmp178      [V182    ] (  0,  0   )   byref  ->  zero-ref    single-def ptr "field V90._reference (fldOffset=0x0)" P-INDEP
+;* V183 tmp179      [V183    ] (  0,  0   )     int  ->  zero-ref    ptr "field V90._length (fldOffset=0x8)" P-INDEP
+;  V184 tmp180      [V184,T46] (  2,  1   )   byref  ->  rdi         single-def "field V95._reference (fldOffset=0x0)" P-INDEP
+;  V185 tmp181      [V185,T51] (  2,  1   )     int  ->  rsi         "field V95._length (fldOffset=0x8)" P-INDEP
+;  V186 tmp182      [V186,T47] (  2,  1   )   byref  ->  rsi         single-def "field V101._reference (fldOffset=0x0)" P-INDEP
+;  V187 tmp183      [V187,T52] (  2,  1   )     int  ->  rdx         "field V101._length (fldOffset=0x8)" P-INDEP
+;  V188 tmp184      [V188,T31] (  2,  2   )     ref  ->  rdi         single-def "argument with side effect"
+;  V189 GsCookie    [V189    ] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V190 tmp186      [V190,T00] ( 39, 21   )     ref  ->  rbx         single-def "shadowVar"
+;  V191 cse0        [V191,T39] (  3,  1.50)     int  ->  r14         "CSE #04: conservative"
+;  V192 cse1        [V192,T40] (  3,  1.50)     int  ->  r14         "CSE #05: conservative"
+;  V193 cse2        [V193,T16] (  3,  3   )     int  ->  rdi         "CSE #02: moderate"
 ;
-; Lcl frame size = 136
+; Lcl frame size = 120
 
 G_M13619_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 136
-       lea      rbp, [rsp+0xB0]
+       sub      rsp, 120
+       lea      rbp, [rsp+0xA0]
        vxorps   xmm8, xmm8, xmm8
-       vmovdqu  ymmword ptr [rbp-0xB0], ymm8
-       vmovdqu  ymmword ptr [rbp-0x90], ymm8
+       vmovdqu  ymmword ptr [rbp-0xA0], ymm8
+       vmovdqa  xmmword ptr [rbp-0x80], xmm8
        mov      qword ptr [rbp-0x30], 0xD1FFAB1E
-						;; size=54 bbWeight=1 PerfScore 12.08
+						;; size=48 bbWeight=1 PerfScore 12.08
 G_M13619_IG02:
        mov      rbx, rdi
        vmovsd   qword ptr [rbp-0x60], xmm0
        vmovd    rsi, xmm0
        mov      rdx, 0xD1FFAB1E
        andn     rsi, rsi, rdx
        je       G_M13619_IG33
        test     dword ptr [rsp], esp
        sub      rsp, 128
        lea      r15, [rsp]
        mov      word  ptr [rbp-0x70], 0
        xor      r14, r14
        xor      r13d, r13d
        movzx    rsi, byte  ptr [rbp-0x70]
        movzx    rdx, byte  ptr [rbp-0x6F]
        or       esi, edx
        je       SHORT G_M13619_IG04
 						;; size=73 bbWeight=1 PerfScore 13.50
 G_M13619_IG03:
        lea      rsi, [rbp-0x38]
        mov      edx, 3
        lea      rdi, [rbp-0x70]
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.StandardFormat:Format(System.Span`1[ushort]):System.Span`1[ushort]:this
        call     [rax]System.Buffers.StandardFormat:Format(System.Span`1[ushort]):System.Span`1[ushort]:this
        mov      r14, rax
        mov      r13d, edx
 						;; size=31 bbWeight=0.50 PerfScore 2.50
 G_M13619_IG04:
        mov      rdi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rdi]
        mov      rax, 0xD1FFAB1E      ; code for System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
        call     [rax]System.Globalization.NumberFormatInfo:<GetInstance>g__GetProviderNonNull|58_0(System.IFormatProvider):System.Globalization.NumberFormatInfo
        mov      rcx, rax
        lea      rsi, [rbp-0x58]
        mov      bword ptr [rbp-0x80], rsi
        mov      dword ptr [rbp-0x78], 32
        xor      rsi, rsi
        mov      gword ptr [rbp-0x90], rsi
 						;; size=52 bbWeight=1 PerfScore 9.50
 G_M13619_IG05:
        mov      dword ptr [rbp-0x88], esi
        mov      rsi, r14
        mov      edx, r13d
        lea      rdi, [rbp-0x90]
        vmovsd   xmm0, qword ptr [rbp-0x60]
        mov      rax, 0xD1FFAB1E      ; code for System.Number:FormatFloat[double,ubyte](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String
        call     [rax]System.Number:FormatFloat[double,ubyte](byref,double,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo):System.String
        test     rax, rax
        je       SHORT G_M13619_IG07
 						;; size=41 bbWeight=1 PerfScore 9.50
 G_M13619_IG06:
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rsi]
        lea      rsi, bword ptr [rax+0x0C]
        mov      edx, dword ptr [rax+0x08]
        mov      rcx, r15
        mov      r8d, 128
        lea      r9, [rbp-0x68]
        mov      rax, 0xD1FFAB1E      ; code for System.Text.UTF8Encoding+UTF8EncodingSealed:TryGetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte:this
        call     [rax]System.Text.UTF8Encoding+UTF8EncodingSealed:TryGetBytes(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref):ubyte:this
        jmp      SHORT G_M13619_IG09
 						;; size=47 bbWeight=0.50 PerfScore 5.50
 G_M13619_IG07:
        mov      edx, dword ptr [rbp-0x88]
        cmp      edx, dword ptr [rbp-0x78]
        ja       G_M13619_IG32
        mov      rsi, bword ptr [rbp-0x80]
        cmp      edx, 128
        jbe      SHORT G_M13619_IG08
        xor      edx, edx
        mov      dword ptr [rbp-0x68], edx
        jmp      SHORT G_M13619_IG09
 						;; size=34 bbWeight=0.50 PerfScore 4.75
 G_M13619_IG08:
        mov      edx, edx
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.SpanHelpers:Memmove(byref,byref,ulong)
        call     [rax]System.SpanHelpers:Memmove(byref,byref,ulong)
        mov      edi, dword ptr [rbp-0x88]
        mov      dword ptr [rbp-0x68], edi
 						;; size=26 bbWeight=0.50 PerfScore 2.88
 G_M13619_IG09:
        mov      r14, gword ptr [rbp-0x90]
        test     r14, r14
        je       SHORT G_M13619_IG12
 						;; size=12 bbWeight=1 PerfScore 2.25
 G_M13619_IG10:
        xor      rdi, rdi
        mov      gword ptr [rbp-0x90], rdi
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M13619_IG29
 						;; size=28 bbWeight=0.50 PerfScore 2.75
 G_M13619_IG11:
        mov      rdi, 0xD1FFAB1E      ; data for System.Buffers.ArrayPool`1[ubyte]:s_shared
        mov      rdi, gword ptr [rdi]
        mov      rsi, r14
        xor      edx, edx
        mov      rax, 0xD1FFAB1E      ; code for System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Buffers.SharedArrayPool`1[ubyte]:Return(ubyte[],ubyte):this
 						;; size=32 bbWeight=0.50 PerfScore 4.50
 G_M13619_IG12:
        mov      edi, dword ptr [rbp-0x68]
        cmp      edi, 128
        ja       G_M13619_IG32
        mov      rsi, r15
        mov      edx, edi
        cmp      edx, 0xD1FFAB1E
        jg       G_M13619_IG31
        mov      edi, dword ptr [rbx+0x74]
        test     dil, 2
        jne      SHORT G_M13619_IG14
 						;; size=41 bbWeight=1 PerfScore 7.25
 G_M13619_IG13:
        cmp      byte  ptr [rbx+0x38], 0
        je       G_M13619_IG30
        cmp      byte  ptr [rbx+0x3A], 5
        je       G_M13619_IG30
 						;; size=20 bbWeight=0.50 PerfScore 4.00
 G_M13619_IG14:
        test     dil, 1
        jne      SHORT G_M13619_IG16
 						;; size=6 bbWeight=1 PerfScore 1.25
 G_M13619_IG15:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.Utf8JsonWriter:WriteStringMinimizedPropertyName(System.ReadOnlySpan`1[ubyte]):this
        call     [rax]System.Text.Json.Utf8JsonWriter:WriteStringMinimizedPropertyName(System.ReadOnlySpan`1[ubyte]):this
        jmp      G_M13619_IG25
 						;; size=20 bbWeight=0.50 PerfScore 2.75
 G_M13619_IG16:
        mov      bword ptr [rbp-0xA0], rsi
        mov      dword ptr [rbp-0x98], edx
        mov      r15d, dword ptr [rbx+0x28]
        and      r15d, 0xD1FFAB1E
        imul     r15d, dword ptr [rbx+0x2C]
        mov      edi, r15d
        add      edi, dword ptr [rbp-0x98]
        mov      esi, dword ptr [rbx+0x30]
        lea      esi, [rdi+rsi+0x05]
        mov      edi, dword ptr [rbx+0x4C]
        sub      edi, dword ptr [rbx+0x34]
        cmp      edi, esi
        jge      SHORT G_M13619_IG17
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.Utf8JsonWriter:Grow(int):this
        call     [rax]System.Text.Json.Utf8JsonWriter:Grow(int):this
 						;; size=70 bbWeight=0.50 PerfScore 12.12
 G_M13619_IG17:
        lea      r14, bword ptr [rbx+0x40]
        xor      r13, r13
        xor      r12d, r12d
        mov      rdi, gword ptr [r14]
        test     rdi, rdi
        je       SHORT G_M13619_IG20
        mov      rax, qword ptr [rdi]
        test     dword ptr [rax], 0xD1FFAB1E
        jne      SHORT G_M13619_IG18
        mov      rax, qword ptr [rdi]
        mov      rax, qword ptr [rax+0x40]
        call     [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this
        mov      r13, rax
        mov      r12d, edx
        jmp      SHORT G_M13619_IG19
 						;; size=47 bbWeight=0.50 PerfScore 9.88
 G_M13619_IG18:
        lea      r13, bword ptr [rdi+0x10]
        mov      r12d, dword ptr [rdi+0x08]
 						;; size=8 bbWeight=0.50 PerfScore 1.25
 G_M13619_IG19:
        mov      edi, dword ptr [r14+0x08]
        and      edi, 0xD1FFAB1E
        mov      esi, dword ptr [r14+0x0C]
        mov      ecx, esi
        add      rcx, rdi
        mov      edx, r12d
        cmp      rcx, rdx
        ja       G_M13619_IG32
        add      r13, rdi
        mov      r12d, esi
 						;; size=37 bbWeight=0.50 PerfScore 3.38
 G_M13619_IG20:
        cmp      dword ptr [rbx+0x28], 0
        jge      SHORT G_M13619_IG21
        mov      r14d, dword ptr [rbx+0x34]
        lea      edi, [r14+0x01]
        mov      dword ptr [rbx+0x34], edi
        cmp      r14d, r12d
        jae      G_M13619_IG34
        mov      edi, r14d
        mov      byte  ptr [rdi+r13], 44
 						;; size=34 bbWeight=0.50 PerfScore 5.00
 G_M13619_IG21:
        cmp      byte  ptr [rbx+0x3A], 0
        je       SHORT G_M13619_IG23
        cmp      dword ptr [rbx+0x30], 2
        jne      SHORT G_M13619_IG22
        mov      edi, dword ptr [rbx+0x34]
        lea      esi, [rdi+0x01]
        mov      dword ptr [rbx+0x34], esi
        cmp      edi, r12d
        jae      G_M13619_IG34
        mov      byte  ptr [rdi+r13], 13
 						;; size=35 bbWeight=0.50 PerfScore 6.88
 G_M13619_IG22:
        mov      edi, dword ptr [rbx+0x34]
        lea      esi, [rdi+0x01]
        mov      dword ptr [rbx+0x34], esi
        cmp      edi, r12d
        jae      G_M13619_IG34
        mov      byte  ptr [rdi+r13], 10
 						;; size=23 bbWeight=0.50 PerfScore 2.88
 G_M13619_IG23:
        mov      edi, dword ptr [rbx+0x34]
        cmp      edi, r12d
        ja       G_M13619_IG32
        mov      esi, edi
        add      rsi, r13
        mov      ecx, r12d
        sub      ecx, edi
        mov      rdi, rsi
        mov      esi, ecx
        movzx    rcx, byte  ptr [rbx+0x3B]
        mov      edx, r15d
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.JsonWriterHelper:WriteIndentation(System.Span`1[ubyte],int,ubyte)
        call     [rax]System.Text.Json.JsonWriterHelper:WriteIndentation(System.Span`1[ubyte],int,ubyte)
        add      r15d, dword ptr [rbx+0x34]
        mov      r14d, r15d
        mov      dword ptr [rbx+0x34], r14d
        lea      esi, [r14+0x01]
        mov      dword ptr [rbx+0x34], esi
        cmp      r14d, r12d
        jae      G_M13619_IG34
        mov      esi, r14d
        mov      byte  ptr [rsi+r13], 34
-       mov      edx, dword ptr [rbx+0x34]
-       cmp      edx, r12d
+       mov      esi, dword ptr [rbx+0x34]
+       cmp      esi, r12d
        ja       G_M13619_IG32
-       vxorps   xmm0, xmm0, xmm0
-       vmovdqu  xmmword ptr [rbp-0xB0], xmm0
-       mov      esi, edx
-       add      rsi, r13
+       mov      edx, esi
+       add      rdx, r13
        mov      edi, r12d
-       sub      edi, edx
+       sub      edi, esi
+       mov      rsi, rdx
        mov      edx, edi
-       lea      rdi, [rbp-0xB0]
-       mov      rax, 0xD1FFAB1E      ; code for System.Span`1[ubyte]:.ctor(byref,int):this
-       call     [rax]System.Span`1[ubyte]:.ctor(byref,int):this
-       mov      rsi, bword ptr [rbp-0xB0]
-       mov      edx, dword ptr [rbp-0xA8]
        lea      rdi, [rbp-0xA0]
        mov      rax, 0xD1FFAB1E      ; code for System.ReadOnlySpan`1[ubyte]:CopyTo(System.Span`1[ubyte]):this
        call     [rax]System.ReadOnlySpan`1[ubyte]:CopyTo(System.Span`1[ubyte]):this
        mov      r14d, dword ptr [rbx+0x34]
        add      r14d, dword ptr [rbp-0x98]
        mov      dword ptr [rbx+0x34], r14d
        lea      r8d, [r14+0x01]
        mov      dword ptr [rbx+0x34], r8d
        cmp      r14d, r12d
        jae      G_M13619_IG34
        mov      r8d, r14d
        mov      byte  ptr [r8+r13], 34
        mov      r14d, dword ptr [rbx+0x34]
        lea      r8d, [r14+0x01]
        mov      dword ptr [rbx+0x34], r8d
        cmp      r14d, r12d
-						;; size=223 bbWeight=0.50 PerfScore 23.29
-G_M13619_IG24:
        jae      G_M13619_IG34
        mov      r8d, r14d
        mov      byte  ptr [r8+r13], 58
        mov      r14d, dword ptr [rbx+0x34]
        lea      r8d, [r14+0x01]
        mov      dword ptr [rbx+0x34], r8d
        cmp      r14d, r12d
+						;; size=211 bbWeight=0.50 PerfScore 22.88
+G_M13619_IG24:
        jae      G_M13619_IG34
        mov      r8d, r14d
        mov      byte  ptr [r8+r13], 32
-						;; size=43 bbWeight=0.50 PerfScore 4.12
+						;; size=14 bbWeight=0.50 PerfScore 1.12
 G_M13619_IG25:
        and      dword ptr [rbx+0x28], 0xD1FFAB1E
        mov      word  ptr [rbx+0x39], 0x500
 						;; size=13 bbWeight=1 PerfScore 4.00
 G_M13619_IG26:
        cmp      qword ptr [rbp-0x30], 0xD1FFAB1E
        je       SHORT G_M13619_IG27
        call     CORINFO_HELP_FAIL_FAST
 						;; size=15 bbWeight=1 PerfScore 4.00
 G_M13619_IG27:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
 G_M13619_IG28:
        lea      rsp, [rbp-0x28]
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.50
 G_M13619_IG29:
        mov      rdi, 0xD1FFAB1E      ; System.Buffers.ArrayPool`1[ubyte]
        call     CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M13619_IG11
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M13619_IG30:
        movzx    r8, byte  ptr [rbx+0x3A]
        mov      edx, dword ptr [rbx+0x70]
        mov      edi, 31
        xor      esi, esi
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.ThrowHelper:ThrowInvalidOperationException(int,int,int,ubyte,ubyte)
        call     [rax]System.Text.Json.ThrowHelper:ThrowInvalidOperationException(int,int,int,ubyte,ubyte)
        int3     
 						;; size=30 bbWeight=0 PerfScore 0.00
 G_M13619_IG31:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.ThrowHelper:ThrowArgumentException_PropertyNameTooLarge(int)
        call     [rax]System.Text.Json.ThrowHelper:ThrowArgumentException_PropertyNameTooLarge(int)
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M13619_IG32:
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException()
        call     [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M13619_IG33:
        mov      rax, 0xD1FFAB1E      ; code for System.Text.Json.ThrowHelper:ThrowArgumentException_ValueNotSupported()
        call     [rax]System.Text.Json.ThrowHelper:ThrowArgumentException_ValueNotSupported()
        int3     
 						;; size=13 bbWeight=0 PerfScore 0.00
 G_M13619_IG34:
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
 						;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1176, prolog size 54, PerfScore 166.50, instruction count 281, allocated bytes for code 1176 (MethodHash=88eecacc) for method System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
+; Total bytes of code 1129, prolog size 48, PerfScore 163.08, instruction count 275, allocated bytes for code 1129 (MethodHash=88eecacc) for method System.Text.Json.Utf8JsonWriter:WritePropertyName(double):this (FullOpts)
 ; ============================================================
-16 (-12.50 % of base) - System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this
 ; Assembly listing for method System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():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; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  4,  3.50)     ref  ->  rbx         this class-hnd single-def <System.Net.Http.HttpRequestMessage>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T01] (  3,  5   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <System.Net.Http.HttpMethod>
 ;  V03 tmp2         [V03,T02] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <System.Net.Http.Headers.HttpRequestHeaders>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V05 tmp4         [V05,T03] (  3,  1.50)     ref  ->  rax        
 ;  V06 tmp5         [V06,T04] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V07 tmp6         [V07,T05] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
+;* V07 tmp6         [V07    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;
 ; Lcl frame size = 8
 
 G_M16845_IG01:
        push     rbp
        push     rbx
        push     rax
        lea      rbp, [rsp+0x10]
        mov      rbx, rdi
 						;; size=11 bbWeight=1 PerfScore 3.75
 G_M16845_IG02:
        mov      rdi, gword ptr [rbx+0x08]
        test     rdi, rdi
-       jne      SHORT G_M16845_IG05
+       je       SHORT G_M16845_IG04
 						;; size=9 bbWeight=1 PerfScore 3.25
 G_M16845_IG03:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
-       cmp      gword ptr [rsi], 0
-       jne      SHORT G_M16845_IG06
-						;; size=16 bbWeight=0.50 PerfScore 2.12
-G_M16845_IG04:
-       mov      rdi, gword ptr [rbx+0x18]
-       test     rdi, rdi
-       jne      SHORT G_M16845_IG08
-       xor      rax, rax
-       jmp      SHORT G_M16845_IG09
-						;; size=13 bbWeight=0.50 PerfScore 2.75
-G_M16845_IG05:
        mov      rsi, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rsi]
        mov      rsi, gword ptr [rsi+0x08]
        mov      rdi, gword ptr [rdi+0x08]
        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
-       jne      SHORT G_M16845_IG04
+       jne      SHORT G_M16845_IG06
 						;; size=42 bbWeight=0.50 PerfScore 5.50
-G_M16845_IG06:
+G_M16845_IG04:
        xor      eax, eax
 						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M16845_IG07:
+G_M16845_IG05:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M16845_IG08:
+G_M16845_IG06:
+       mov      rdi, gword ptr [rbx+0x18]
+       test     rdi, rdi
+       je       SHORT G_M16845_IG07
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.Headers.HttpRequestHeaders:get_Protocol():System.String:this
        call     [rax]System.Net.Http.Headers.HttpRequestHeaders:get_Protocol():System.String:this
-						;; size=12 bbWeight=0.50 PerfScore 1.62
-G_M16845_IG09:
+       jmp      SHORT G_M16845_IG08
+						;; size=23 bbWeight=0.50 PerfScore 4.25
+G_M16845_IG07:
+       xor      rax, rax
+						;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M16845_IG08:
        test     rax, rax
        setne    al
        movzx    rax, al
 						;; size=9 bbWeight=0.50 PerfScore 0.75
-G_M16845_IG10:
+G_M16845_IG09:
        add      rsp, 8
        pop      rbx
        pop      rbp
        ret      
 						;; size=7 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 128, prolog size 8, PerfScore 22.12, instruction count 39, allocated bytes for code 128 (MethodHash=3882be32) for method System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this (FullOpts)
+; Total bytes of code 112, prolog size 8, PerfScore 20.00, instruction count 36, allocated bytes for code 112 (MethodHash=3882be32) for method System.Net.Http.HttpRequestMessage:get_IsExtendedConnectRequest():ubyte:this (FullOpts)
 ; ============================================================

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

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

@MihuBot
Copy link
Owner Author

MihuBot commented Oct 23, 2024

@MichalPetryka

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

No branches or pull requests

1 participant