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] [hez2010] JIT: Devirtualization and inlining for GVM #997

Open
MihuBot opened this issue Feb 10, 2025 · 3 comments
Open

[JitDiff X64] [hez2010] JIT: Devirtualization and inlining for GVM #997

MihuBot opened this issue Feb 10, 2025 · 3 comments

Comments

@MihuBot
Copy link
Owner

MihuBot commented Feb 10, 2025

Job completed in 16 minutes 42 seconds (remote runner delay: 1 minute 16 seconds).
dotnet/runtime#112353

Diffs

Diffs
Found 103 files with textual diffs.

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 43747423
Total bytes of diff: 43734688
Total bytes of delta: -12735 (-0.03 % of base)
Total relative delta: -2.40
    diff is an improvement.
    relative diff is an improvement.


Total byte diff includes -9880 bytes from reconciling methods
	Base had   37 unique methods,     9880 unique bytes
	Diff had    0 unique methods,        0 unique bytes

Top file regressions (bytes):
         250 : System.Net.NameResolution.dasm (0.54 % of base)
         140 : System.ComponentModel.Composition.dasm (0.03 % of base)

Top file improvements (bytes):
       -3523 : System.Linq.dasm (-0.28 % of base)
       -1813 : System.Collections.Immutable.dasm (-0.10 % of base)
       -1482 : System.Composition.TypedParts.dasm (-3.14 % of base)
       -1223 : System.Collections.dasm (-0.29 % of base)
        -938 : System.Threading.Tasks.Dataflow.dasm (-0.08 % of base)
        -842 : Microsoft.CSharp.dasm (-0.25 % of base)
        -830 : System.Linq.Expressions.dasm (-0.09 % of base)
        -470 : System.Net.Requests.dasm (-0.32 % of base)
        -414 : Microsoft.Extensions.Http.dasm (-0.60 % of base)
        -369 : System.IO.Packaging.dasm (-0.34 % of base)
        -259 : System.Net.Http.dasm (-0.03 % of base)
        -254 : System.ComponentModel.Annotations.dasm (-0.49 % of base)
        -216 : System.Text.Json.dasm (-0.02 % of base)
        -188 : System.Private.DataContractSerialization.dasm (-0.02 % of base)
        -178 : System.Composition.Convention.dasm (-0.14 % of base)
         -75 : Microsoft.Extensions.DependencyModel.dasm (-0.10 % of base)
         -51 : System.Linq.Queryable.dasm (-0.01 % of base)

19 total files with Code Size differences (17 improved, 2 regressed), 244 unchanged.

Top method regressions (bytes):
         110 (47.62 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
          73 (29.08 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
          67 (15.09 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
          64 (6.43 % of base) : System.Net.Http.dasm - System.Net.Http.Metrics.SocketsHttpHandlerMetrics:.ctor(System.Diagnostics.Metrics.Meter):this (FullOpts)
          49 (6.81 % of base) : System.Net.Http.dasm - System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
          46 (12.07 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:GetBoxedInt32(int):System.Object (FullOpts)
          46 (12.40 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:GetErrorStatusCodeString(int):System.String (FullOpts)
          46 (5.01 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionTelemetry:BeforeResolution(System.Object,long):System.Net.NameResolutionActivity:this (FullOpts)
          44 (314.29 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
          44 (151.72 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionMetrics:IsEnabled():ubyte (FullOpts)
          39 (10.86 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionTelemetry:AfterResolution(System.Object,byref,System.Object,System.Exception):this (FullOpts)
          39 (28.26 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionTelemetry:AnyDiagnosticsEnabled():ubyte (FullOpts)
          28 (16.28 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)

Top method improvements (bytes):
       -1482 (-100.00 % of base) : System.Composition.TypedParts.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (FullOpts) (1 base, 0 diff methods)
        -457 (-100.00 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:InternalsVisibleTo(System.Reflection.Assembly,System.Reflection.Assembly):ubyte (FullOpts) (1 base, 0 diff methods)
        -436 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -424 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -422 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -422 (-39.59 % of base) : System.Net.Requests.dasm - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
        -421 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -421 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -420 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -419 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -414 (-40.00 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:get_Values():System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
        -348 (-100.00 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:IsDynamicMember(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol):ubyte (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -253 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts) (1 base, 0 diff methods)
        -227 (-94.58 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[double]():System.Collections.Generic.IEnumerator`1[double] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[long]():System.Collections.Generic.IEnumerator`1[long] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[short]():System.Collections.Generic.IEnumerator`1[short] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.Nullable`1[int]]():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.Numerics.Vector`1[float]]():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[ubyte]():System.Collections.Generic.IEnumerator`1[ubyte] (FullOpts) (1 base, 0 diff methods)
        -178 (-100.00 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:MemberHasExportMetadata(System.Reflection.MemberInfo):ubyte (FullOpts) (1 base, 0 diff methods)
        -168 (-21.03 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.Package:DoOperationOnEachPart(System.IO.Packaging.Package+PartOperation):this (FullOpts)
        -151 (-50.33 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[System.Nullable`1[int]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[System.Numerics.Vector`1[float]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[ubyte]:GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) (1 base, 0 diff methods)
        -116 (-100.00 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CompareAttribute:GetDisplayNameForProperty(System.Reflection.PropertyInfo):System.String:this (FullOpts) (1 base, 0 diff methods)
        -105 (-11.18 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
        -102 (-100.00 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts) (1 base, 0 diff methods)
         -97 (-8.55 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -97 (-33.92 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
         -96 (-9.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+IEnumerableSkipTakeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -86 (-14.19 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:IsNonAttributedTypeValidForSerialization(System.Type):ubyte (FullOpts)
         -75 (-2.00 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -61 (-38.36 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
         -59 (-7.89 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -58 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[int]():System.Collections.Generic.IEnumerator`1[int] (FullOpts) (1 base, 0 diff methods)
         -55 (-35.95 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts)
         -55 (-11.07 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteDynamicExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -55 (-8.61 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -55 (-8.76 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -55 (-18.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -53 (-5.24 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:LazyToArray():ubyte[]:this (FullOpts)
         -52 (-10.12 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -51 (-13.35 % of base) : System.Linq.Queryable.dasm - System.Linq.EnumerableRewriter:GetPublicType(System.Type):System.Type (FullOpts)
         -50 (-6.59 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.XmlCompatibilityReader:DeclareNamespaceCompatibility(System.String,System.String):this (FullOpts)
         -49 (-7.80 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:ToArray[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],byref):ubyte[] (FullOpts)
         -49 (-7.24 % of base) : System.Linq.dasm - System.Linq.Enumerable+ArrayWhereIterator`1[ubyte]:ToArray(System.ReadOnlySpan`1[ubyte],System.Func`2[ubyte,ubyte]):ubyte[] (FullOpts)
         -49 (-4.11 % of base) : System.Linq.dasm - System.Linq.Enumerable+Concat2Iterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -49 (-7.78 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatNIterator`1[ubyte]:LazyToArray():ubyte[]:this (FullOpts)
         -49 (-5.86 % of base) : System.Linq.dasm - System.Linq.Enumerable+IEnumerableWhereIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -49 (-5.51 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -49 (-4.07 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
         -48 (-7.32 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadRuntimes(byref):System.Collections.Generic.List`1[Microsoft.Extensions.DependencyModel.RuntimeFallbacks] (FullOpts)
         -48 (-78.69 % of base) : System.Net.Requests.dasm - System.Net.ProtocolViolationException:.ctor():this (FullOpts)
         -47 (-22.38 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.FileExtensionsAttribute:ValidateExtension(System.String):ubyte:this (FullOpts)
         -44 (-22.56 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.FileExtensionsAttribute:get_ExtensionsNormalized():System.String:this (FullOpts)
         -42 (-9.07 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatNIterator`1[ubyte]:PreallocatingToArray():ubyte[]:this (FullOpts)
         -42 (-19.81 % of base) : System.Linq.dasm - System.Linq.Enumerable+IListSkipTakeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -42 (-8.59 % of base) : System.Linq.dasm - System.Linq.Enumerable+OrderedIterator`1[ubyte]:ToArray(int,int):ubyte[]:this (FullOpts)
         -40 (-32.52 % of base) : System.Linq.dasm - System.Linq.Enumerable+ShuffleTakeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -40 (-50.63 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Error:NotSupported():System.NotSupportedException (FullOpts)
         -37 (-3.18 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
         -30 (-21.90 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CustomValidationAttribute:FormatErrorMessage(System.String):System.String:this (FullOpts)
         -30 (-2.59 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsBinding():System.Linq.Expressions.MemberBinding:this (FullOpts)
         -28 (-100.00 % of base) : System.Net.NameResolution.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection<T>.CopyTo(double[],int):this (FullOpts) (1 base, 0 diff methods)
         -28 (-100.00 % of base) : System.Net.Http.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection<T>.CopyTo(double[],int):this (FullOpts) (1 base, 0 diff methods)
         -23 (-10.04 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[double]():double:this (FullOpts)
         -23 (-10.13 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[int]():int:this (FullOpts)
         -23 (-10.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[long]():long:this (FullOpts)
         -23 (-10.04 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[short]():short:this (FullOpts)
         -23 (-10.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.Nullable`1[int]]():System.Nullable`1[int]:this (FullOpts)
         -23 (-9.20 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.Numerics.Vector`1[float]]():System.Numerics.Vector`1[float]:this (FullOpts)
         -23 (-10.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[ubyte]():ubyte:this (FullOpts)
         -17 (-15.74 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.ValidationAttribute:FormatErrorMessage(System.String):System.String:this (FullOpts)

Top method regressions (percentages):
          44 (314.29 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
          44 (151.72 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionMetrics:IsEnabled():ubyte (FullOpts)
         110 (47.62 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
          73 (29.08 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
          39 (28.26 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionTelemetry:AnyDiagnosticsEnabled():ubyte (FullOpts)
          28 (16.28 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts)
          67 (15.09 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
          46 (12.40 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:GetErrorStatusCodeString(int):System.String (FullOpts)
          46 (12.07 % of base) : System.Net.Http.dasm - System.Net.Http.DiagnosticsHelper:GetBoxedInt32(int):System.Object (FullOpts)
          39 (10.86 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionTelemetry:AfterResolution(System.Object,byref,System.Object,System.Exception):this (FullOpts)
          49 (6.81 % of base) : System.Net.Http.dasm - System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
          64 (6.43 % of base) : System.Net.Http.dasm - System.Net.Http.Metrics.SocketsHttpHandlerMetrics:.ctor(System.Diagnostics.Metrics.Meter):this (FullOpts)
          46 (5.01 % of base) : System.Net.NameResolution.dasm - System.Net.NameResolutionTelemetry:BeforeResolution(System.Object,long):System.Net.NameResolutionActivity:this (FullOpts)

Top method improvements (percentages):
         -28 (-100.00 % of base) : System.Net.NameResolution.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection<T>.CopyTo(double[],int):this (FullOpts) (1 base, 0 diff methods)
         -28 (-100.00 % of base) : System.Net.Http.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection<T>.CopyTo(double[],int):this (FullOpts) (1 base, 0 diff methods)
        -348 (-100.00 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:IsDynamicMember(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol):ubyte (FullOpts) (1 base, 0 diff methods)
        -457 (-100.00 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:InternalsVisibleTo(System.Reflection.Assembly,System.Reflection.Assembly):ubyte (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -259 (-100.00 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<TKey,TValue>>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[double]():System.Collections.Generic.IEnumerator`1[double] (FullOpts) (1 base, 0 diff methods)
         -58 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[int]():System.Collections.Generic.IEnumerator`1[int] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[long]():System.Collections.Generic.IEnumerator`1[long] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[short]():System.Collections.Generic.IEnumerator`1[short] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.Nullable`1[int]]():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.Numerics.Vector`1[float]]():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]] (FullOpts) (1 base, 0 diff methods)
        -186 (-100.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[ubyte]():System.Collections.Generic.IEnumerator`1[ubyte] (FullOpts) (1 base, 0 diff methods)
        -116 (-100.00 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CompareAttribute:GetDisplayNameForProperty(System.Reflection.PropertyInfo):System.String:this (FullOpts) (1 base, 0 diff methods)
       -1482 (-100.00 % of base) : System.Composition.TypedParts.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (FullOpts) (1 base, 0 diff methods)
        -178 (-100.00 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:MemberHasExportMetadata(System.Reflection.MemberInfo):ubyte (FullOpts) (1 base, 0 diff methods)
        -424 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -419 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -421 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -422 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -421 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -436 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -420 (-100.00 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:MoveNext():ubyte:this (FullOpts) (1 base, 0 diff methods)
        -253 (-100.00 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this (FullOpts) (1 base, 0 diff methods)
        -102 (-100.00 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[System.Nullable`1[int]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[System.Numerics.Vector`1[float]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this (FullOpts) (1 base, 0 diff methods)
        -134 (-100.00 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[ubyte]:GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) (1 base, 0 diff methods)
        -227 (-94.58 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
         -48 (-78.69 % of base) : System.Net.Requests.dasm - System.Net.ProtocolViolationException:.ctor():this (FullOpts)
         -40 (-50.63 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Error:NotSupported():System.NotSupportedException (FullOpts)
        -151 (-50.33 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
        -414 (-40.00 % of base) : Microsoft.Extensions.Http.dasm - Microsoft.Extensions.Http.Logging.HttpHeadersLogValue:get_Values():System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]:this (FullOpts)
        -422 (-39.59 % of base) : System.Net.Requests.dasm - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
         -61 (-38.36 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts)
         -55 (-35.95 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts)
         -97 (-33.92 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
         -40 (-32.52 % of base) : System.Linq.dasm - System.Linq.Enumerable+ShuffleTakeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -44 (-22.56 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.FileExtensionsAttribute:get_ExtensionsNormalized():System.String:this (FullOpts)
         -47 (-22.38 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.FileExtensionsAttribute:ValidateExtension(System.String):ubyte:this (FullOpts)
         -30 (-21.90 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CustomValidationAttribute:FormatErrorMessage(System.String):System.String:this (FullOpts)
        -168 (-21.03 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.Package:DoOperationOnEachPart(System.IO.Packaging.Package+PartOperation):this (FullOpts)
         -42 (-19.81 % of base) : System.Linq.dasm - System.Linq.Enumerable+IListSkipTakeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -55 (-18.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.__Canon]():System.__Canon:this (FullOpts)
         -17 (-15.74 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.ValidationAttribute:FormatErrorMessage(System.String):System.String:this (FullOpts)
         -86 (-14.19 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:IsNonAttributedTypeValidForSerialization(System.Type):ubyte (FullOpts)
         -51 (-13.35 % of base) : System.Linq.Queryable.dasm - System.Linq.EnumerableRewriter:GetPublicType(System.Type):System.Type (FullOpts)
        -105 (-11.18 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteMethodCallExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -55 (-11.07 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteDynamicExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -23 (-10.13 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[int]():int:this (FullOpts)
         -52 (-10.12 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -23 (-10.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[long]():long:this (FullOpts)
         -23 (-10.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.Nullable`1[int]]():System.Nullable`1[int]:this (FullOpts)
         -23 (-10.09 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[ubyte]():ubyte:this (FullOpts)
         -23 (-10.04 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[double]():double:this (FullOpts)
         -23 (-10.04 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[short]():short:this (FullOpts)
         -23 (-9.20 % of base) : System.Text.Json.dasm - System.Text.Json.Nodes.JsonValueOfElement:GetValue[System.Numerics.Vector`1[float]]():System.Numerics.Vector`1[float]:this (FullOpts)
         -96 (-9.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+IEnumerableSkipTakeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -42 (-9.07 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatNIterator`1[ubyte]:PreallocatingToArray():ubyte[]:this (FullOpts)
         -55 (-8.76 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteNewArrayExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -55 (-8.61 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -42 (-8.59 % of base) : System.Linq.dasm - System.Linq.Enumerable+OrderedIterator`1[ubyte]:ToArray(int,int):ubyte[]:this (FullOpts)
         -97 (-8.55 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteInvocationExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -59 (-7.89 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteIndexAssignment(System.Linq.Expressions.BinaryExpression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
         -49 (-7.80 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:ToArray[ubyte](System.Collections.Generic.IEnumerable`1[ubyte],byref):ubyte[] (FullOpts)
         -49 (-7.78 % of base) : System.Linq.dasm - System.Linq.Enumerable+ConcatNIterator`1[ubyte]:LazyToArray():ubyte[]:this (FullOpts)
         -48 (-7.32 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadRuntimes(byref):System.Collections.Generic.List`1[Microsoft.Extensions.DependencyModel.RuntimeFallbacks] (FullOpts)
         -49 (-7.24 % of base) : System.Linq.dasm - System.Linq.Enumerable+ArrayWhereIterator`1[ubyte]:ToArray(System.ReadOnlySpan`1[ubyte],System.Func`2[ubyte,ubyte]):ubyte[] (FullOpts)
         -50 (-6.59 % of base) : System.IO.Packaging.dasm - System.IO.Packaging.XmlCompatibilityReader:DeclareNamespaceCompatibility(System.String,System.String):this (FullOpts)
         -49 (-5.86 % of base) : System.Linq.dasm - System.Linq.Enumerable+IEnumerableWhereIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -49 (-5.51 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -53 (-5.24 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:LazyToArray():ubyte[]:this (FullOpts)
         -49 (-4.11 % of base) : System.Linq.dasm - System.Linq.Enumerable+Concat2Iterator`1[ubyte]:ToArray():ubyte[]:this (FullOpts)
         -49 (-4.07 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts)
         -37 (-3.18 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.RuntimeBinder:DeferBinding(Microsoft.CSharp.RuntimeBinder.ICSharpBinder,Microsoft.CSharp.RuntimeBinder.ArgumentObject[],System.Dynamic.DynamicMetaObject[],Microsoft.CSharp.RuntimeBinder.Semantics.LocalVariableSymbol[],byref):ubyte:this (FullOpts)
         -30 (-2.59 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsBinding():System.Linq.Expressions.MemberBinding:this (FullOpts)
         -75 (-2.00 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteListInitExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)

99 total methods with Code Size differences (86 improved, 13 regressed), 247682 unchanged.

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

Artifacts:

@MihuBot
Copy link
Owner Author

MihuBot commented Feb 10, 2025

Top method regressions

110 (47.62 % of base) - System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception)
 ; Assembly listing for method System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 16 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op single-def <System.TimeSpan>
 ;  V01 arg1         [V01,T01] (  3,  3   )     ref  ->  rsi         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T00] (  4,  3.50)     ref  ->  rdx         class-hnd single-def <System.Exception>
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (16) zero-ref    <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;  V04 loc1         [V04,T06] (  2,  1   )     ref  ->  rax         class-hnd exact single-def <System.String>
+;  V04 loc1         [V04,T06] (  2,  1   )     ref  ->  r14         class-hnd exact single-def <System.String>
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;* V07 tmp1         [V07    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;  V08 tmp2         [V08,T04] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Diagnostics.Metrics.Histogram`1[double]>
-;  V09 tmp3         [V09,T14] (  2,  2   )  double  ->  mm0         "Inlining Arg"
-;  V10 tmp4         [V10    ] (  3,  1.50)  struct (16) [rbp-0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;* V11 tmp5         [V11    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-;* V12 tmp6         [V12    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;  V13 tmp7         [V13,T05] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Diagnostics.Metrics.Histogram`1[double]>
+;  V07 tmp1         [V07,T03] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Diagnostics.Metrics.Histogram`1[double]>
+;  V08 tmp2         [V08,T04] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "impAppendStmt" <System.Diagnostics.Metrics.Histogram`1[double]>
+;* V09 tmp3         [V09    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
+;  V10 tmp4         [V10,T14] (  2,  2   )  double  ->  mm0         "Inlining Arg"
+;  V11 tmp5         [V11    ] (  3,  1.50)  struct (16) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
+;* V12 tmp6         [V12    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+;* V13 tmp7         [V13    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
 ;  V14 tmp8         [V14,T15] (  2,  2   )  double  ->  mm0         "Inlining Arg"
-;  V15 tmp9         [V15    ] (  6,  3   )  struct (32) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <<>y__InlineArray2`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+;  V15 tmp9         [V15    ] (  6,  3   )  struct (32) [rbp-0x48]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <<>y__InlineArray2`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
 ;  V18 tmp12        [V18,T02] (  3,  2   )    long  ->  rbx         single-def "field V00._ticks (fldOffset=0x0)" P-INDEP
 ;* V19 tmp13        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V03.key (fldOffset=0x0)" P-INDEP
 ;* V20 tmp14        [V20    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V03.value (fldOffset=0x8)" P-INDEP
 ;* V21 tmp15        [V21    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V05.key (fldOffset=0x0)" P-INDEP
 ;* V22 tmp16        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V05.value (fldOffset=0x8)" P-INDEP
-;* V23 tmp17        [V23,T08] (  0,  0   )     ref  ->  zero-ref    single-def "field V07.key (fldOffset=0x0)" P-INDEP
-;  V24 tmp18        [V24,T03] (  3,  2   )     ref  ->  r15         single-def "field V07.value (fldOffset=0x8)" P-INDEP
-;  V25 tmp19        [V25    ] (  2,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V10.key (fldOffset=0x0)" P-DEP
-;  V26 tmp20        [V26    ] (  2,  1   )     ref  ->  [rbp-0x18]  do-not-enreg[X] addr-exposed "field V10.value (fldOffset=0x8)" P-DEP
-;* V27 tmp21        [V27,T09] (  0,  0   )   byref  ->  zero-ref    single-def "field V11._reference (fldOffset=0x0)" P-INDEP
-;* V28 tmp22        [V28,T12] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x8)" P-INDEP
-;* V29 tmp23        [V29,T10] (  0,  0   )     ref  ->  zero-ref    single-def "field V12.key (fldOffset=0x0)" P-INDEP
-;  V30 tmp24        [V30,T07] (  2,  1   )     ref  ->  rax         single-def "field V12.value (fldOffset=0x8)" P-INDEP
+;* V23 tmp17        [V23,T08] (  0,  0   )     ref  ->  zero-ref    single-def "field V09.key (fldOffset=0x0)" P-INDEP
+;  V24 tmp18        [V24,T05] (  3,  2   )     ref  ->  r15         single-def "field V09.value (fldOffset=0x8)" P-INDEP
+;  V25 tmp19        [V25    ] (  2,  1   )     ref  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed "field V11.key (fldOffset=0x0)" P-DEP
+;  V26 tmp20        [V26    ] (  2,  1   )     ref  ->  [rbp-0x20]  do-not-enreg[X] addr-exposed "field V11.value (fldOffset=0x8)" P-DEP
+;* V27 tmp21        [V27,T09] (  0,  0   )   byref  ->  zero-ref    single-def "field V12._reference (fldOffset=0x0)" P-INDEP
+;* V28 tmp22        [V28,T12] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
+;* V29 tmp23        [V29,T10] (  0,  0   )     ref  ->  zero-ref    single-def "field V13.key (fldOffset=0x0)" P-INDEP
+;  V30 tmp24        [V30,T07] (  2,  1   )     ref  ->  r14         single-def "field V13.value (fldOffset=0x8)" P-INDEP
 ;* V31 tmp25        [V31    ] (  0,  0   )   byref  ->  zero-ref    "field V16._reference (fldOffset=0x0)" P-INDEP
 ;* V32 tmp26        [V32    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x8)" P-INDEP
 ;* V33 tmp27        [V33,T11] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
 ;* V34 tmp28        [V34,T13] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x8)" P-INDEP
 ;
-; Lcl frame size = 48
+; Lcl frame size = 56
 
 G_M12031_IG01:
        push     rbp
        push     r15
+       push     r14
        push     rbx
-       sub      rsp, 48
-       lea      rbp, [rsp+0x40]
+       sub      rsp, 56
+       lea      rbp, [rsp+0x50]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x48], rax
        vxorps   xmm8, xmm8, xmm8
        vmovdqu  ymmword ptr [rbp-0x40], ymm8
-       vmovdqa  xmmword ptr [rbp-0x20], xmm8
+       mov      qword ptr [rbp-0x20], rax
        mov      rbx, rdi
-						;; size=31 bbWeight=1 PerfScore 8.33
+						;; size=38 bbWeight=1 PerfScore 9.58
 G_M12031_IG02:
        mov      r15, rsi
        test     rdx, rdx
-       je       SHORT G_M12031_IG04
-						;; size=8 bbWeight=1 PerfScore 1.50
+       je       G_M12031_IG05
+						;; size=12 bbWeight=1 PerfScore 1.50
 G_M12031_IG03:
        mov      rdi, rdx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.NameResolutionTelemetry:GetErrorType(System.Exception):System.String
        call     [rax]System.Net.NameResolutionTelemetry:GetErrorType(System.Exception):System.String
-       mov      rsi, 0xD1FFAB1E      ; const ptr
+       mov      r14, rax
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M12031_IG09
+						;; size=37 bbWeight=0.50 PerfScore 4.00
+G_M12031_IG04:
+       mov      rsi, 0xD1FFAB1E      ; data for System.Net.NameResolutionMetrics:s_lookupDuration
        mov      rdi, gword ptr [rsi]
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, rbx
        vdivsd   xmm0, xmm0, qword ptr [reloc @RWD00]
+       cmp      byte  ptr [rdi], dil
        vxorps   ymm1, ymm1, ymm1
-       vmovdqu  ymmword ptr [rbp-0x40], ymm1
+       vmovdqu  ymmword ptr [rbp-0x48], ymm1
        mov      rsi, 0xD1FFAB1E      ; 'dns.question.name'
-       mov      gword ptr [rbp-0x40], rsi
-       mov      gword ptr [rbp-0x38], r15
+       mov      gword ptr [rbp-0x48], rsi
+       mov      gword ptr [rbp-0x40], r15
        mov      rsi, 0xD1FFAB1E      ; 'error.type'
-       mov      gword ptr [rbp-0x30], rsi
-       mov      gword ptr [rbp-0x28], rax
-       lea      rsi, bword ptr [rbp-0x40]
+       mov      gword ptr [rbp-0x38], rsi
+       mov      gword ptr [rbp-0x30], r14
+       lea      rsi, bword ptr [rbp-0x48]
        mov      edx, 2
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
        call     [rax]System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
-       jmp      SHORT G_M12031_IG05
-						;; size=113 bbWeight=0.50 PerfScore 18.96
-G_M12031_IG04:
-       mov      rsi, 0xD1FFAB1E      ; const ptr
+       jmp      SHORT G_M12031_IG07
+						;; size=101 bbWeight=0.50 PerfScore 18.71
+G_M12031_IG05:
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       SHORT G_M12031_IG10
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M12031_IG06:
+       mov      rsi, 0xD1FFAB1E      ; data for System.Net.NameResolutionMetrics:s_lookupDuration
        mov      rdi, gword ptr [rsi]
        vxorps   xmm0, xmm0, xmm0
        vcvtsi2sd xmm0, xmm0, rbx
        vdivsd   xmm0, xmm0, qword ptr [reloc @RWD00]
+       cmp      byte  ptr [rdi], dil
        mov      rsi, 0xD1FFAB1E      ; 'dns.question.name'
-       mov      gword ptr [rbp-0x20], rsi
-       mov      gword ptr [rbp-0x18], r15
-       lea      rsi, bword ptr [rbp-0x20]
+       mov      gword ptr [rbp-0x28], rsi
+       mov      gword ptr [rbp-0x20], r15
+       lea      rsi, bword ptr [rbp-0x28]
        mov      edx, 1
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
        call     [rax]System.Diagnostics.Metrics.Instrument`1[double]:RecordMeasurement(double,System.ReadOnlySpan`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):this
-						;; size=69 bbWeight=0.50 PerfScore 14.42
-G_M12031_IG05:
+						;; size=72 bbWeight=0.50 PerfScore 15.92
+G_M12031_IG07:
        nop      
 						;; size=1 bbWeight=1 PerfScore 0.25
-G_M12031_IG06:
-       add      rsp, 48
+G_M12031_IG08:
+       add      rsp, 56
        pop      rbx
+       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=1 PerfScore 2.75
+						;; size=11 bbWeight=1 PerfScore 3.25
+G_M12031_IG09:
+       mov      rdi, 0xD1FFAB1E      ; System.Net.NameResolutionMetrics
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M12031_IG04
+						;; size=27 bbWeight=0 PerfScore 0.00
+G_M12031_IG10:
+       mov      rdi, 0xD1FFAB1E      ; System.Net.NameResolutionMetrics
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M12031_IG06
+						;; size=27 bbWeight=0 PerfScore 0.00
 RWD00  	dq	416312D000000000h	;     10000000
 
 
-; Total bytes of code 231, prolog size 28, PerfScore 46.21, instruction count 51, allocated bytes for code 231 (MethodHash=abf3d100) for method System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
+; Total bytes of code 341, prolog size 35, PerfScore 55.33, instruction count 72, allocated bytes for code 341 (MethodHash=abf3d100) for method System.Net.NameResolutionMetrics:AfterResolution(System.TimeSpan,System.String,System.Exception) (FullOpts)
 ; ============================================================
73 (29.08 % of base) - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this
 ; Assembly listing for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 12 single block inlinees; 5 inlinees without PGO data
+; 0 inlinees with PGO data; 9 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] (  6,  6   )     ref  ->  rbx         this class-hnd single-def <System.ComponentModel.Composition.CompositionException>
-;  V01 arg1         [V01,T03] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.CompositionError>
+;  V01 arg1         [V01,T02] (  3,  3   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.CompositionError>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;  V03 tmp1         [V03,T01] (  4,  8   )     ref  ->  r13         class-hnd exact single-def "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V03 tmp1         [V03,T01] (  4,  8   )     ref  ->  r14         class-hnd exact single-def "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V04 tmp2         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp3         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V06 tmp4         [V06    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V07 tmp5         [V07,T06] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V07 tmp5         [V07,T03] (  4,  3.50)     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V08 tmp6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V09 tmp7         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
-;  V10 tmp8         [V10,T07] (  2,  2   )     ref  ->  r15         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V11 tmp9         [V11,T10] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V12 tmp10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V13 tmp11        [V13,T04] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V14 tmp12        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V15 tmp13        [V15,T08] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V16 tmp14        [V16,T02] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V17 cse0         [V17,T09] (  2,  2   )    long  ->  rdi         "CSE #02: moderate"
-;  V18 cse1         [V18,T05] (  3,  3   )    long  ->  r14         "CSE #01: aggressive"
+;  V10 tmp8         [V10,T05] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V11 tmp9         [V11,T04] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M19286_IG01:
        push     rbp
        push     r15
        push     r14
-       push     r13
        push     rbx
+       push     rax
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
-						;; size=19 bbWeight=1 PerfScore 6.00
+						;; size=18 bbWeight=1 PerfScore 6.00
 G_M19286_IG02:
-       mov      r14, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
-       mov      rdi, r14
+       mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r13, rax
-       lea      rdi, bword ptr [r13+0x10]
+       mov      r14, rax
+       lea      rdi, bword ptr [r14+0x10]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, 0xD1FFAB1E
        mov      qword ptr [rbx+0x68], rsi
        xor      rsi, rsi
        mov      gword ptr [rbx+0x10], rsi
-						;; size=58 bbWeight=1 PerfScore 6.25
+						;; size=55 bbWeight=1 PerfScore 6.00
 G_M19286_IG03:
        mov      gword ptr [rbx+0x20], rsi
-       mov      rsi, r13
+       mov      rsi, r14
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'errors'
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        call     [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       SHORT G_M19286_IG06
-						;; size=54 bbWeight=1 PerfScore 9.25
+       je       G_M19286_IG12
+						;; size=58 bbWeight=1 PerfScore 9.25
 G_M19286_IG04:
-       mov      esi, 1
-       mov      rdi, r14
-       call     CORINFO_HELP_NEWARR_1_OBJ
+       mov      rsi, r14
+       mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable:ICollectionToArray[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.ICollection`1[System.ComponentModel.Composition.CompositionError]):System.ComponentModel.Composition.CompositionError[]
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
+       call     [rax]System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
        mov      r15, rax
-       mov      r8d, 1
-       mov      rdi, r13
-       mov      rdx, r15
-       xor      esi, esi
-       xor      ecx, ecx
-       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
-       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
+       test     r15, r15
+       jne      SHORT G_M19286_IG06
+						;; size=33 bbWeight=1 PerfScore 5.25
+G_M19286_IG05:
+       mov      edi, 2
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
+       int3     
+						;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M19286_IG06:
+       cmp      dword ptr [r15+0x08], 0
+       jne      SHORT G_M19286_IG09
+						;; size=7 bbWeight=1 PerfScore 4.00
+G_M19286_IG07:
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       SHORT G_M19286_IG13
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M19286_IG08:
+       mov      rdi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
+       mov      rsi, gword ptr [rdi]
+       jmp      SHORT G_M19286_IG10
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M19286_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
        call     CORINFO_HELP_NEWSFAST
        mov      r14, rax
        lea      rdi, bword ptr [r14+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r14
+						;; size=33 bbWeight=0.50 PerfScore 1.75
+G_M19286_IG10:
        lea      rdi, bword ptr [rbx+0x70]
        call     CORINFO_HELP_ASSIGN_REF
        nop      
-						;; size=87 bbWeight=1 PerfScore 11.50
-G_M19286_IG05:
+						;; size=10 bbWeight=1 PerfScore 1.75
+G_M19286_IG11:
+       add      rsp, 8
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=9 bbWeight=1 PerfScore 3.50
-G_M19286_IG06:
+						;; size=11 bbWeight=1 PerfScore 3.25
+G_M19286_IG12:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_NONGCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_NONGCSTATIC_BASE
-       jmp      SHORT G_M19286_IG04
+       jmp      G_M19286_IG04
+						;; size=27 bbWeight=0 PerfScore 0.00
+G_M19286_IG13:
+       mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      SHORT G_M19286_IG08
 						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 251, prolog size 13, PerfScore 36.50, instruction count 60, allocated bytes for code 251 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
+; Total bytes of code 324, prolog size 12, PerfScore 43.38, instruction count 71, allocated bytes for code 324 (MethodHash=fe8bb4a9) for method System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts)
 ; ============================================================
67 (15.09 % of base) - System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException
 ; Assembly listing for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 13 single block inlinees; 8 inlinees without PGO data
+; 0 inlinees with PGO data; 10 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T02] (  4,  4   )     ref  ->  rbx         class-hnd single-def <System.ComponentModel.Composition.Primitives.ComposablePart>
 ;  V01 arg1         [V01,T03] (  4,  4   )     ref  ->  r15         class-hnd single-def <System.ComponentModel.Composition.Primitives.ExportDefinition>
 ;  V02 arg2         [V02,T04] (  4,  4   )     ref  ->  r14         class-hnd single-def <System.Exception>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;  V04 tmp1         [V04,T00] (  6, 12   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.Composition.CompositionException>
 ;  V05 tmp2         [V05,T01] (  4,  8   )     ref  ->  r15         class-hnd exact single-def "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V06 tmp3         [V06,T06] (  2,  4   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
+;  V06 tmp3         [V06,T05] (  2,  4   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.ComponentModel.Composition.CompositionError>
 ;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V08 tmp5         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V09 tmp6         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V10 tmp7         [V10,T08] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
+;  V10 tmp7         [V10,T06] (  4,  3.50)     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V11 tmp8         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
 ;* V12 tmp9         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.Linq.Enumerable+Iterator`1[System.ComponentModel.Composition.CompositionError]>
-;  V13 tmp10        [V13,T09] (  2,  2   )     ref  ->  rbx         class-hnd "Inline return value spill temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V14 tmp11        [V14,T12] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V15 tmp12        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V16 tmp13        [V16,T07] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;* V17 tmp14        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.ComponentModel.Composition.CompositionError[]>
-;  V18 tmp15        [V18,T10] (  2,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V19 tmp16        [V19,T05] (  3,  6   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
-;  V20 cse0         [V20,T11] (  2,  2   )    long  ->  rdi         "CSE #02: moderate"
+;  V13 tmp10        [V13,T08] (  3,  2   )     ref  ->  rsi         class-hnd "Inline return value spill temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
+;  V14 tmp11        [V14,T07] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]>
 ;
 ; Lcl frame size = 0
 
 G_M65036_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
        mov      rbx, rdi
        mov      r15, rsi
        mov      r14, rdx
 						;; size=22 bbWeight=1 PerfScore 6.25
 G_M65036_IG02:
        test     rbx, rbx
-       je       G_M65036_IG08
+       je       G_M65036_IG14
        test     r15, r15
-       je       G_M65036_IG07
+       je       G_M65036_IG13
        test     r14, r14
-       je       G_M65036_IG06
+       je       G_M65036_IG12
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionException
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        mov      rdi, rbx
        mov      rsi, r15
        mov      rdx, r14
        mov      rax, 0xD1FFAB1E      ; code for System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
        call     [rax]System.ComponentModel.Composition.ErrorBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionError
        mov      rbx, rax
        mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
        mov      esi, 1
        call     CORINFO_HELP_NEWARR_1_OBJ
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x10]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, 0xD1FFAB1E
        mov      qword ptr [r13+0x68], rsi
        xor      rsi, rsi
        mov      gword ptr [r13+0x10], rsi
 						;; size=124 bbWeight=1 PerfScore 15.50
 G_M65036_IG03:
        mov      gword ptr [r13+0x20], rsi
        mov      rsi, r15
        mov      rdi, 0xD1FFAB1E      ; Microsoft.Internal.Requires:NotNullElements[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.IEnumerable`1[System.ComponentModel.Composition.CompositionError],System.String)
        mov      rdx, 0xD1FFAB1E      ; 'errors'
        mov      rax, 0xD1FFAB1E      ; code for Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        call     [rax]Microsoft.Internal.Requires:NotNullElements[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.String)
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M65036_IG09
+       je       G_M65036_IG15
 						;; size=58 bbWeight=1 PerfScore 9.25
 G_M65036_IG04:
-       mov      esi, 1
-       mov      rdi, 0xD1FFAB1E      ; System.ComponentModel.Composition.CompositionError[]
-       call     CORINFO_HELP_NEWARR_1_OBJ
+       mov      rsi, r15
+       mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable:ICollectionToArray[System.ComponentModel.Composition.CompositionError](System.Collections.Generic.ICollection`1[System.ComponentModel.Composition.CompositionError]):System.ComponentModel.Composition.CompositionError[]
+       mov      rax, 0xD1FFAB1E      ; code for System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
+       call     [rax]System.Linq.Enumerable:ICollectionToArray[System.__Canon](System.Collections.Generic.ICollection`1[System.__Canon]):System.__Canon[]
        mov      rbx, rax
-       mov      r8d, 1
-       mov      rdi, r15
-       mov      rdx, rbx
-       xor      esi, esi
-       xor      ecx, ecx
-       mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
-       call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
+       test     rbx, rbx
+       jne      SHORT G_M65036_IG06
+						;; size=33 bbWeight=1 PerfScore 5.25
+G_M65036_IG05:
+       mov      edi, 2
+       mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowArgumentNullException(int)
+       call     [rax]System.ThrowHelper:ThrowArgumentNullException(int)
+       int3     
+						;; size=18 bbWeight=0.50 PerfScore 1.88
+G_M65036_IG06:
+       cmp      dword ptr [rbx+0x08], 0
+       jne      SHORT G_M65036_IG09
+						;; size=6 bbWeight=1 PerfScore 4.00
+G_M65036_IG07:
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M65036_IG16
+						;; size=19 bbWeight=0.50 PerfScore 2.12
+G_M65036_IG08:
+       mov      rdi, 0xD1FFAB1E      ; data for System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]:<Empty>k__BackingField
+       mov      rsi, gword ptr [rdi]
+       jmp      SHORT G_M65036_IG10
+						;; size=15 bbWeight=0.50 PerfScore 2.12
+G_M65036_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        mov      rsi, r15
+						;; size=33 bbWeight=0.50 PerfScore 1.75
+G_M65036_IG10:
        lea      rdi, bword ptr [r13+0x70]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rax, r13
-						;; size=96 bbWeight=1 PerfScore 11.50
-G_M65036_IG05:
+						;; size=12 bbWeight=1 PerfScore 1.75
+G_M65036_IG11:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.50
-G_M65036_IG06:
+G_M65036_IG12:
        mov      edi, 0x2242
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0.50 PerfScore 2.62
-G_M65036_IG07:
+G_M65036_IG13:
        mov      edi, 0x2174
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0.50 PerfScore 2.62
-G_M65036_IG08:
+G_M65036_IG14:
        mov      edi, 0x2238
        mov      rsi, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.ArgumentNullException:Throw(System.String)
        call     [rax]System.ArgumentNullException:Throw(System.String)
        int3     
 						;; size=36 bbWeight=0.50 PerfScore 2.62
-G_M65036_IG09:
+G_M65036_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_NONGCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_NONGCSTATIC_BASE
        jmp      G_M65036_IG04
 						;; size=27 bbWeight=0 PerfScore 0.00
+G_M65036_IG16:
+       mov      rdi, 0xD1FFAB1E      ; System.Collections.ObjectModel.ReadOnlyCollection`1[System.ComponentModel.Composition.CompositionError]
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M65036_IG08
+						;; size=27 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 444, prolog size 13, PerfScore 53.88, instruction count 96, allocated bytes for code 444 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
+; Total bytes of code 511, prolog size 13, PerfScore 61.25, instruction count 108, allocated bytes for code 511 (MethodHash=d76c01f3) for method System.ComponentModel.ExceptionBuilder:CreateCannotGetExportedValue(System.ComponentModel.Composition.Primitives.ComposablePart,System.ComponentModel.Composition.Primitives.ExportDefinition,System.Exception):System.ComponentModel.Composition.CompositionException (FullOpts)
 ; ============================================================
49 (6.81 % of base) - System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this
 ; Assembly listing for method System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
 ; 0 inlinees with PGO data; 10 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] (  6,  6   )     ref  ->  rbx         this class-hnd single-def <System.Net.Http.Metrics.MetricsHandler>
 ;  V01 arg1         [V01,T11] (  3,  3   )     ref  ->  r13         class-hnd single-def <System.Net.Http.HttpMessageHandler>
 ;  V02 arg2         [V02,T10] (  4,  3.50)     ref  ->  r14         class-hnd single-def <System.Diagnostics.Metrics.IMeterFactory>
 ;  V03 arg3         [V03,T07] (  5,  5   )   byref  ->  r15         single-def
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct ( 8) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <UNNAMED>
 ;* V05 tmp1         [V05    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V06 tmp2         [V06    ] (  0,  0   )   byref  ->  zero-ref    single-def
-;  V07 tmp3         [V07,T24] (  3,  2   )     ref  ->  rsi        
+;  V07 tmp3         [V07,T25] (  3,  2   )     ref  ->  rsi        
 ;* V08 tmp4         [V08    ] (  0,  0   )   byref  ->  zero-ref    single-def
-;  V09 tmp5         [V09,T22] (  4,  3.50)     ref  ->  rsi        
+;  V09 tmp5         [V09,T23] (  4,  3.50)     ref  ->  rsi        
 ;  V10 tmp6         [V10,T03] (  4,  8   )     ref  ->  r15         class-hnd single-def "impAppendStmt" <System.Object>
 ;  V11 tmp7         [V11,T04] (  4,  8   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.Diagnostics.Metrics.Meter>
-;  V12 tmp8         [V12,T27] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.UpDownCounter`1[long]>
+;  V12 tmp8         [V12,T28] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.UpDownCounter`1[long]>
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]>
 ;  V14 tmp10        [V14,T00] ( 11, 11   )     ref  ->  r13         class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]>
 ;  V15 tmp11        [V15,T05] (  4,  8   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
 ;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
 ;  V17 tmp13        [V17,T14] (  2,  4   )     ref  ->  [rbp-0x30]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
 ;  V18 tmp14        [V18,T15] (  2,  4   )     ref  ->  [rbp-0x38]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
 ;  V19 tmp15        [V19,T16] (  2,  4   )     ref  ->  [rbp-0x40]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
 ;  V20 tmp16        [V20,T17] (  2,  4   )     ref  ->  [rbp-0x48]  class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-;  V21 tmp17        [V21,T28] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.Histogram`1[double]>
+;  V21 tmp17        [V21,T29] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inline return value spill temp" <System.Diagnostics.Metrics.Histogram`1[double]>
 ;* V22 tmp18        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
-;  V23 tmp19        [V23,T01] ( 11, 11   )     ref  ->  r14         class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
-;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
-;  V25 tmp21        [V25,T06] (  4,  8   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
+;  V23 tmp19        [V23,T01] ( 11, 11   )     ref  ->  r13         class-hnd exact single-def "Inline stloc first use temp" <System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]>
+;  V24 tmp20        [V24,T18] (  2,  4   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <System.Diagnostics.Metrics.InstrumentAdvice`1[double]>
+;  V25 tmp21        [V25,T06] (  4,  8   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Func`1[System.Diagnostics.Metrics.Instrument]>
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
-;  V27 tmp23        [V27,T18] (  2,  4   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V28 tmp24        [V28,T19] (  2,  4   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
-;  V29 tmp25        [V29,T20] (  2,  4   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
-;  V30 tmp26        [V30,T21] (  2,  4   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
+;  V27 tmp23        [V27,T19] (  2,  4   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V28 tmp24        [V28,T20] (  2,  4   )     ref  ->  [rbp-0x50]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
+;  V29 tmp25        [V29,T21] (  2,  4   )     ref  ->  [rbp-0x58]  class-hnd exact spill-single-def "impAppendStmt" <System.String>
+;  V30 tmp26        [V30,T22] (  2,  4   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
 ;  V31 tmp27        [V31,T12] (  3,  4   )     ref  ->  rax         single-def "argument with side effect"
 ;  V32 tmp28        [V32,T13] (  3,  4   )     ref  ->  rax         single-def "argument with side effect"
-;  V33 cse0         [V33,T23] (  3,  3   )     ref  ->  [rbp-0x68]  spill-single-def "CSE #08: moderate"
+;  V33 cse0         [V33,T24] (  3,  3   )     ref  ->  [rbp-0x68]  spill-single-def "CSE #08: moderate"
 ;  V34 rat0         [V34,T08] (  4,  7   )     ref  ->  rsi         "replacement local"
-;  V35 rat1         [V35,T25] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V35 rat1         [V35,T26] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
 ;  V36 rat2         [V36,T09] (  4,  7   )     ref  ->  rsi         "replacement local"
-;  V37 rat3         [V37,T26] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
+;  V37 rat3         [V37,T27] (  3,  2   )    long  ->  rdi         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 72
 
 G_M65200_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     r12
        push     rbx
        sub      rsp, 72
        lea      rbp, [rsp+0x70]
        mov      rbx, rdi
        mov      r13, rsi
        mov      r14, rdx
        mov      r15, rcx
 						;; size=31 bbWeight=1 PerfScore 7.75
 G_M65200_IG02:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpMessageHandler:.ctor():this
        call     [rax]System.Net.Http.HttpMessageHandler:.ctor():this
        lea      rdi, bword ptr [rbx+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        test     r14, r14
        je       SHORT G_M65200_IG04
 						;; size=32 bbWeight=1 PerfScore 6.50
 G_M65200_IG03:
        mov      rdi, r14
        mov      rsi, 0xD1FFAB1E      ; 'System.Net.Http'
        xor      rdx, rdx
        xor      rcx, rcx
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.MeterFactoryExtensions:Create(System.Diagnostics.Metrics.IMeterFactory,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Meter
        call     [rax]System.Diagnostics.Metrics.MeterFactoryExtensions:Create(System.Diagnostics.Metrics.IMeterFactory,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]):System.Diagnostics.Metrics.Meter
        mov      rsi, rax
        jmp      SHORT G_M65200_IG05
 						;; size=34 bbWeight=0.50 PerfScore 3.25
 G_M65200_IG04:
        xor      rsi, rsi
 						;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M65200_IG05:
        test     rsi, rsi
        jne      SHORT G_M65200_IG08
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M65200_IG06:
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
        je       G_M65200_IG15
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M65200_IG07:
        mov      rdi, 0xD1FFAB1E      ; data for System.Net.Http.Metrics.MetricsHandler+SharedMeter:<Instance>k__BackingField
        mov      rsi, gword ptr [rdi]
 						;; size=13 bbWeight=0.50 PerfScore 1.12
 G_M65200_IG08:
        mov      rdi, r15
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        mov      r14, gword ptr [r15]
        cmp      byte  ptr [r14], r14b
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]
        call     CORINFO_HELP_NEWSFAST
        mov      r13, rax
        lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; 'http.client.active_requests'
        mov      gword ptr [r13+0x10], rdi
        mov      rdi, 0xD1FFAB1E      ; '{request}'
        mov      gword ptr [r13+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; 'Number of outbound HTTP requests that are currently active on t'
        mov      gword ptr [r13+0x20], rdi
        xor      rdi, rdi
        mov      gword ptr [r13+0x28], rdi
        mov      rdi, 0xD1FFAB1E      ; System.Func`1[System.Diagnostics.Metrics.Instrument]
        call     CORINFO_HELP_NEWSFAST
        mov      r12, rax
        mov      rax, gword ptr [r13+0x10]
        mov      gword ptr [rbp-0x30], rax
        mov      rcx, gword ptr [r13+0x18]
        mov      gword ptr [rbp-0x38], rcx
        mov      rdx, gword ptr [r13+0x20]
        mov      gword ptr [rbp-0x40], rdx
        mov      r8, gword ptr [r13+0x28]
        mov      gword ptr [rbp-0x68], r8
        mov      gword ptr [rbp-0x48], r8
        lea      rdi, bword ptr [r12+0x08]
        mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.Meter+<>c__DisplayClass41_0`1[long]:<CreateUpDownCounter>b__0():System.Diagnostics.Metrics.Instrument:this
        mov      qword ptr [r12+0x18], rdi
        mov      gword ptr [rsp], r12
        mov      rdi, r14
        mov      rdx, gword ptr [rbp-0x30]
        mov      rcx, gword ptr [rbp-0x38]
        mov      r8, gword ptr [rbp-0x40]
        mov      r9, gword ptr [rbp-0x48]
        mov      rsi, 0xD1FFAB1E      ; 'System.Diagnostics.Metrics.UpDownCounter`1[System.Int64]'
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
        call     [rax]System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[long](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
        mov      rsi, rax
        test     rsi, rsi
        je       SHORT G_M65200_IG10
 						;; size=227 bbWeight=1 PerfScore 42.25
 G_M65200_IG09:
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Metrics.UpDownCounter`1[long]
        cmp      qword ptr [rsi], rdi
-       jne      G_M65200_IG17
+       jne      G_M65200_IG18
 						;; size=19 bbWeight=0.50 PerfScore 2.12
 G_M65200_IG10:
        lea      rdi, bword ptr [rbx+0x10]
        call     CORINFO_HELP_ASSIGN_REF
        mov      r15, gword ptr [r15]
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       G_M65200_IG16
+						;; size=31 bbWeight=1 PerfScore 7.75
+G_M65200_IG11:
+       mov      rdi, 0xD1FFAB1E      ; data for System.Net.Http.DiagnosticsHelper:<ShortHistogramAdvice>k__BackingField
+       mov      r14, gword ptr [rdi]
        cmp      byte  ptr [r15], r15b
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]
        call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
-       lea      rdi, bword ptr [r14+0x08]
+       mov      r13, rax
+       lea      rdi, bword ptr [r13+0x08]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; 'http.client.request.duration'
-       mov      gword ptr [r14+0x10], rdi
+       mov      gword ptr [r13+0x10], rdi
        mov      rdi, 0xD1FFAB1E      ; 's'
-       mov      gword ptr [r14+0x18], rdi
+       mov      gword ptr [r13+0x18], rdi
        mov      rdi, 0xD1FFAB1E      ; 'Duration of HTTP client requests.'
-       mov      gword ptr [r14+0x20], rdi
+       mov      gword ptr [r13+0x20], rdi
        xor      rdi, rdi
-       mov      gword ptr [r14+0x28], rdi
-       mov      rdi, 0xD1FFAB1E      ; const ptr
-       mov      rsi, gword ptr [rdi]
-       lea      rdi, bword ptr [r14+0x30]
+       mov      gword ptr [r13+0x28], rdi
+       lea      rdi, bword ptr [r13+0x30]
+       mov      rsi, r14
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; System.Func`1[System.Diagnostics.Metrics.Instrument]
        call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       mov      r12, gword ptr [r14+0x10]
-       mov      rax, gword ptr [r14+0x18]
+       mov      r14, rax
+       mov      r12, gword ptr [r13+0x10]
+       mov      rax, gword ptr [r13+0x18]
        mov      gword ptr [rbp-0x50], rax
-       mov      rcx, gword ptr [r14+0x20]
+       mov      rcx, gword ptr [r13+0x20]
        mov      gword ptr [rbp-0x58], rcx
        mov      rdx, gword ptr [rbp-0x68]
        mov      gword ptr [rbp-0x60], rdx
-       lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, r14
+       lea      rdi, bword ptr [r14+0x08]
+       mov      rsi, r13
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.Meter+<>c__DisplayClass39_0`1[double]:<CreateHistogram>b__0():System.Diagnostics.Metrics.Instrument:this
-       mov      qword ptr [r13+0x18], rdi
-       mov      gword ptr [rsp], r13
+       mov      qword ptr [r14+0x18], rdi
+       mov      gword ptr [rsp], r14
        mov      rdi, r15
        mov      rdx, r12
        mov      rcx, gword ptr [rbp-0x50]
        mov      r8, gword ptr [rbp-0x58]
        mov      r9, gword ptr [rbp-0x60]
        mov      rsi, 0xD1FFAB1E      ; 'System.Diagnostics.Metrics.Histogram`1[System.Double]'
        mov      rax, 0xD1FFAB1E      ; code for System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[double](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
        call     [rax]System.Diagnostics.Metrics.Meter:GetOrCreateInstrument[double](System.Type,System.String,System.String,System.String,System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]],System.Func`1[System.Diagnostics.Metrics.Instrument]):System.Diagnostics.Metrics.Instrument:this
        mov      rsi, rax
        test     rsi, rsi
-						;; size=237 bbWeight=1 PerfScore 41.50
-G_M65200_IG11:
        je       SHORT G_M65200_IG13
-						;; size=2 bbWeight=1 PerfScore 1.00
+						;; size=230 bbWeight=1 PerfScore 39.25
 G_M65200_IG12:
        mov      rdi, 0xD1FFAB1E      ; System.Diagnostics.Metrics.Histogram`1[double]
        cmp      qword ptr [rsi], rdi
-       jne      SHORT G_M65200_IG16
+       jne      SHORT G_M65200_IG17
 						;; size=15 bbWeight=0.50 PerfScore 2.12
 G_M65200_IG13:
        lea      rdi, bword ptr [rbx+0x18]
        call     CORINFO_HELP_ASSIGN_REF
        nop      
 						;; size=10 bbWeight=1 PerfScore 1.75
 G_M65200_IG14:
        add      rsp, 72
        pop      rbx
        pop      r12
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=15 bbWeight=1 PerfScore 4.25
 G_M65200_IG15:
        mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Metrics.MetricsHandler+SharedMeter
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M65200_IG07
 						;; size=27 bbWeight=0 PerfScore 0.00
 G_M65200_IG16:
-       mov      rsi, rax
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
-       call     [rax]CORINFO_HELP_CHKCASTCLASS
-       int3     
-						;; size=16 bbWeight=0 PerfScore 0.00
+       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.DiagnosticsHelper
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      G_M65200_IG11
+						;; size=27 bbWeight=0 PerfScore 0.00
 G_M65200_IG17:
        mov      rsi, rax
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
        call     [rax]CORINFO_HELP_CHKCASTCLASS
        int3     
 						;; size=16 bbWeight=0 PerfScore 0.00
+G_M65200_IG18:
+       mov      rsi, rax
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_CHKCASTCLASS
+       call     [rax]CORINFO_HELP_CHKCASTCLASS
+       int3     
+						;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 720, prolog size 19, PerfScore 117.12, instruction count 161, allocated bytes for code 720 (MethodHash=405b014f) for method System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
+; Total bytes of code 769, prolog size 19, PerfScore 121.62, instruction count 169, allocated bytes for code 769 (MethodHash=405b014f) for method System.Net.Http.Metrics.MetricsHandler:.ctor(System.Net.Http.HttpMessageHandler,System.Diagnostics.Metrics.IMeterFactory,byref):this (FullOpts)
 ; ============================================================
44 (314.29 % of base) - System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double]
 ; Assembly listing for method System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rsp based frame
 ; partially interruptible
 ; No PGO data
 ; Final local variable assignments
 ;
 ;# V00 OutArgs      [V00    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M46385_IG01:
-						;; size=0 bbWeight=1 PerfScore 0.00
+       push     rax
+						;; size=1 bbWeight=1 PerfScore 1.00
 G_M46385_IG02:
-       mov      rax, 0xD1FFAB1E      ; const ptr
+       mov      rdi, 0xD1FFAB1E      ; global ptr
+       test     byte  ptr [rdi], 1
+       je       SHORT G_M46385_IG05
+						;; size=15 bbWeight=1 PerfScore 4.25
+G_M46385_IG03:
+       mov      rax, 0xD1FFAB1E      ; data for System.Net.Http.DiagnosticsHelper:<ShortHistogramAdvice>k__BackingField
        mov      rax, gword ptr [rax]
 						;; size=13 bbWeight=1 PerfScore 2.25
-G_M46385_IG03:
+G_M46385_IG04:
+       add      rsp, 8
        ret      
-						;; size=1 bbWeight=1 PerfScore 1.00
+						;; size=5 bbWeight=1 PerfScore 1.25
+G_M46385_IG05:
+       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.DiagnosticsHelper
+       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
+       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
+       jmp      SHORT G_M46385_IG03
+						;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 14, prolog size 0, PerfScore 3.25, instruction count 3, allocated bytes for code 14 (MethodHash=73d74ace) for method System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (FullOpts)
+; Total bytes of code 58, prolog size 1, PerfScore 8.75, instruction count 12, allocated bytes for code 58 (MethodHash=73d74ace) for method System.Net.Http.DiagnosticsHelper:get_ShortHistogramAdvice():System.Diagnostics.Metrics.InstrumentAdvice`1[double] (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/85fb4acc0642acf306ae779d8752fb81

@MihuBot
Copy link
Owner Author

MihuBot commented Feb 10, 2025

Top method improvements

-422 (-39.59 % of base) - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this
 ; Assembly listing for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 27 single block inlinees; 6 inlinees without PGO data
+; 0 inlinees with PGO data; 13 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] ( 12, 15.50)     ref  ->  rbx         this class-hnd single-def <System.Net.HttpWebResponse>
-;  V01 loc0         [V01,T02] ( 12, 18   )     ref  ->  [rbp-0x28]  do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
+;  V01 loc0         [V01,T02] ( 12, 18   )     ref  ->  [rbp-0x20]  do-not-enreg[M] class-hnd EH-live <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
 ;* V02 loc1         [V02    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;* V03 loc2         [V03    ] (  0,  0   )  struct (16) zero-ref    multireg-ret ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;  V05 tmp1         [V05,T12] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
+;  V05 tmp1         [V05,T10] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.WebHeaderCollection>
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;* V07 tmp3         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Net.WebHeaderCollection>
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]>
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Net.WebHeaderCollection>
 ;* V11 tmp7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V12 tmp8         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V13 tmp9         [V13,T20] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.StringComparer>
+;  V13 tmp9         [V13,T12] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.StringComparer>
 ;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V15 tmp11        [V15,T19] (  5,  2.50)     ref  ->  rsi        
-;  V16 tmp12        [V16,T21] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V17 tmp13        [V17,T15] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpResponseHeaders>
-;  V18 tmp14        [V18,T13] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-;  V19 tmp15        [V19,T22] (  3,  1.50)     ref  ->  r13         class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V20 tmp16        [V20,T16] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;* V21 tmp17        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;  V22 tmp18        [V22,T26] (  3,  1.50)     int  ->  r14         "Inline stloc first use temp"
-;  V23 tmp19        [V23,T10] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;* V25 tmp21        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V26 tmp22        [V26,T23] (  3,  1.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V27 tmp23        [V27,T17] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Net.Http.Headers.HttpContentHeaders>
-;  V28 tmp24        [V28,T14] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-;  V29 tmp25        [V29,T24] (  3,  1.50)     ref  ->  r13         class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V30 tmp26        [V30,T18] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;* V31 tmp27        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;  V32 tmp28        [V32,T27] (  3,  1.50)     int  ->  r14         "Inline stloc first use temp"
-;  V33 tmp29        [V33,T11] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;* V34 tmp30        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;* V35 tmp31        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V36 tmp32        [V36,T06] (  2,  8   )     ref  ->  r15         "field V02.key (fldOffset=0x0)" P-INDEP
-;  V37 tmp33        [V37,T07] (  2,  8   )     ref  ->  rsi         "field V02.value (fldOffset=0x8)" P-INDEP
-;  V38 tmp34        [V38,T08] (  2,  8   )     ref  ->  r15         "field V03.key (fldOffset=0x0)" P-INDEP
-;  V39 tmp35        [V39,T09] (  2,  8   )     ref  ->  rsi         "field V03.value (fldOffset=0x8)" P-INDEP
-;* V40 tmp36        [V40    ] (  0,  0   )     ref  ->  zero-ref    "field V06.key (fldOffset=0x0)" P-DEP
-;* V41 tmp37        [V41    ] (  0,  0   )     ref  ->  zero-ref    "field V06.value (fldOffset=0x8)" P-DEP
-;* V42 tmp38        [V42    ] (  0,  0   )     ref  ->  zero-ref    "field V09.key (fldOffset=0x0)" P-DEP
-;* V43 tmp39        [V43    ] (  0,  0   )     ref  ->  zero-ref    "field V09.value (fldOffset=0x8)" P-DEP
-;  V44 tmp40        [V44,T04] (  2, 16   )     ref  ->  rdx         "argument with side effect"
-;  V45 tmp41        [V45,T00] (  3, 24   )     ref  ->  r14         "argument with side effect"
-;  V46 tmp42        [V46,T05] (  2, 16   )     ref  ->  rdx         "argument with side effect"
-;  V47 tmp43        [V47,T01] (  3, 24   )     ref  ->  r14         "argument with side effect"
-;  V48 cse0         [V48,T25] (  3,  1.50)     ref  ->  rdi         "CSE #05: moderate"
-;  V49 rat0         [V49    ] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
+;  V15 tmp11        [V15,T11] (  5,  2.50)     ref  ->  rsi        
+;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
+;* V17 tmp13        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
+;* V18 tmp14        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
+;* V19 tmp15        [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
+;  V20 tmp16        [V20,T06] (  2,  8   )     ref  ->  r15         "field V02.key (fldOffset=0x0)" P-INDEP
+;  V21 tmp17        [V21,T07] (  2,  8   )     ref  ->  rsi         "field V02.value (fldOffset=0x8)" P-INDEP
+;  V22 tmp18        [V22,T08] (  2,  8   )     ref  ->  r15         "field V03.key (fldOffset=0x0)" P-INDEP
+;  V23 tmp19        [V23,T09] (  2,  8   )     ref  ->  rsi         "field V03.value (fldOffset=0x8)" P-INDEP
+;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    "field V06.key (fldOffset=0x0)" P-DEP
+;* V25 tmp21        [V25    ] (  0,  0   )     ref  ->  zero-ref    "field V06.value (fldOffset=0x8)" P-DEP
+;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    "field V09.key (fldOffset=0x0)" P-DEP
+;* V27 tmp23        [V27    ] (  0,  0   )     ref  ->  zero-ref    "field V09.value (fldOffset=0x8)" P-DEP
+;  V28 tmp24        [V28,T04] (  2, 16   )     ref  ->  rdx         "argument with side effect"
+;  V29 tmp25        [V29,T00] (  3, 24   )     ref  ->  r14         "argument with side effect"
+;  V30 tmp26        [V30,T05] (  2, 16   )     ref  ->  rdx         "argument with side effect"
+;  V31 tmp27        [V31,T01] (  3, 24   )     ref  ->  r14         "argument with side effect"
+;  V32 cse0         [V32,T13] (  3,  1.50)     ref  ->  rdi         "CSE #05: moderate"
+;  V33 rat0         [V33    ] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
 ;
-; Lcl frame size = 16
+; Lcl frame size = 24
 
 G_M7504_IG01:
        push     rbp
        push     r15
        push     r14
-       push     r13
        push     rbx
-       sub      rsp, 16
+       sub      rsp, 24
        lea      rbp, [rsp+0x30]
        mov      qword ptr [rbp-0x30], rsp
        mov      rbx, rdi
-						;; size=24 bbWeight=1 PerfScore 7.00
+						;; size=22 bbWeight=1 PerfScore 6.00
 G_M7504_IG02:
        cmp      gword ptr [rbx+0x08], 0
-       je       G_M7504_IG26
+       je       G_M7504_IG15
        cmp      gword ptr [rbx+0x20], 0
-       jne      G_M7504_IG24
+       jne      G_M7504_IG13
 						;; size=22 bbWeight=1 PerfScore 8.00
 G_M7504_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Net.WebHeaderCollection
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        mov      rdi, 0xD1FFAB1E      ; global ptr
        test     byte  ptr [rdi], 1
-       je       G_M7504_IG27
+       je       G_M7504_IG16
 						;; size=37 bbWeight=0.50 PerfScore 2.88
 G_M7504_IG04:
        mov      rdi, 0xD1FFAB1E      ; data for System.Collections.Specialized.NameObjectCollectionBase:s_defaultComparer
        mov      rdi, gword ptr [rdi]
        mov      rsi, rdi
        test     rsi, rsi
        cmove    rsi, rdi
        lea      rdi, bword ptr [r15+0x10]
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, r15
        mov      rax, 0xD1FFAB1E      ; code for System.Collections.Specialized.NameObjectCollectionBase:Reset():this
        call     [rax]System.Collections.Specialized.NameObjectCollectionBase:Reset():this
        lea      rdi, bword ptr [rbx+0x20]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
        mov      rdi, gword ptr [rbx+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpResponseMessage:get_Headers():System.Net.Http.Headers.HttpResponseHeaders:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpResponseMessage:get_Headers():System.Net.Http.Headers.HttpResponseHeaders:this
-       mov      r15, rax
-       cmp      dword ptr [r15+0x10], 0
-       je       SHORT G_M7504_IG05
-       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
-       call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       xor      edi, edi
-       mov      dword ptr [r13+0x18], edi
-       lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, r15
-       call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M7504_IG09
-						;; size=125 bbWeight=0.50 PerfScore 14.38
+       mov      rdi, rax
+       mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+       mov      gword ptr [rbp-0x20], rax
+						;; size=98 bbWeight=0.50 PerfScore 12.75
 G_M7504_IG05:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M7504_IG28
-						;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG06:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      r15, gword ptr [rdi]
-       mov      r14d, dword ptr [r15+0x08]
-       test     r14d, r14d
-       je       SHORT G_M7504_IG07
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       mov      dword ptr [r13+0x08], -1
-       mov      dword ptr [r13+0x0C], r14d
-       lea      rdi, bword ptr [r13+0x10]
-       mov      rsi, r15
-       call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M7504_IG09
-						;; size=66 bbWeight=0.50 PerfScore 6.38
-G_M7504_IG07:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M7504_IG29
-						;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG08:
-       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
-       mov      r13, gword ptr [rdi]
-						;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M7504_IG09:
-       mov      gword ptr [rbp-0x28], r13
-						;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M7504_IG10:
-       jmp      SHORT G_M7504_IG12
+       jmp      SHORT G_M7504_IG07
 						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M7504_IG11:
-       mov      rdi, gword ptr [rbp-0x28]
+G_M7504_IG06:
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        call     [r11]System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        mov      r15, rax
        mov      rsi, rdx
        mov      r14, gword ptr [rbx+0x20]
        mov      rdi, 0xD1FFAB1E      ; ', '
        mov      rax, 0xD1FFAB1E      ; code for System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        call     [rax]System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        mov      rdx, rax
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
 						;; size=68 bbWeight=4 PerfScore 72.00
-G_M7504_IG12:
-       mov      rdi, gword ptr [rbp-0x28]
+G_M7504_IG07:
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
-       jne      SHORT G_M7504_IG11
+       jne      SHORT G_M7504_IG06
 						;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG13:
-       mov      rdi, gword ptr [rbp-0x28]
+G_M7504_IG08:
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
        mov      rdi, gword ptr [rbx+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        test     rax, rax
-       je       G_M7504_IG24
+       je       G_M7504_IG13
        mov      rdi, gword ptr [rbx+0x08]
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpResponseMessage:get_Content():System.Net.Http.HttpContent:this
        mov      rdi, rax
        mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this
        cmp      dword ptr [rdi], edi
        call     [rax]System.Net.Http.HttpContent:get_Headers():System.Net.Http.Headers.HttpContentHeaders:this
-       mov      r15, rax
-       cmp      dword ptr [r15+0x10], 0
-       jne      SHORT G_M7504_IG18
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M7504_IG30
-						;; size=108 bbWeight=0.50 PerfScore 18.50
-G_M7504_IG14:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      r15, gword ptr [rdi]
-       mov      r14d, dword ptr [r15+0x08]
-       test     r14d, r14d
-       je       SHORT G_M7504_IG15
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       mov      dword ptr [r13+0x08], -1
-       mov      dword ptr [r13+0x0C], r14d
-       lea      rdi, bword ptr [r13+0x10]
-       mov      rsi, r15
-       call     CORINFO_HELP_ASSIGN_REF
-       jmp      SHORT G_M7504_IG17
-						;; size=66 bbWeight=0.50 PerfScore 6.38
-G_M7504_IG15:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M7504_IG31
-						;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG16:
-       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
-       mov      r13, gword ptr [rdi]
-						;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M7504_IG17:
-       jmp      SHORT G_M7504_IG19
+       mov      rdi, rax
+       mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+       cmp      dword ptr [rdi], edi
+       call     [rax]System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+       mov      gword ptr [rbp-0x20], rax
+						;; size=100 bbWeight=0.50 PerfScore 18.00
+G_M7504_IG09:
+       jmp      SHORT G_M7504_IG11
 						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M7504_IG18:
-       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
-       call     CORINFO_HELP_NEWSFAST
-       mov      r13, rax
-       xor      edi, edi
-       mov      dword ptr [r13+0x18], edi
-       lea      rdi, bword ptr [r13+0x08]
-       mov      rsi, r15
-       call     CORINFO_HELP_ASSIGN_REF
-						;; size=36 bbWeight=0.50 PerfScore 2.25
-G_M7504_IG19:
-       mov      gword ptr [rbp-0x28], r13
-						;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M7504_IG20:
-       jmp      SHORT G_M7504_IG22
-						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M7504_IG21:
-       mov      rdi, gword ptr [rbp-0x28]
+G_M7504_IG10:
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        call     [r11]System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:get_Current():System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]:this
        mov      r15, rax
        mov      rsi, rdx
        mov      r14, gword ptr [rbx+0x20]
        mov      rdi, 0xD1FFAB1E      ; ', '
        mov      rax, 0xD1FFAB1E      ; code for System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        call     [rax]System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String
        mov      rdx, rax
        mov      rdi, r14
        mov      rsi, r15
        mov      rax, qword ptr [r14]
        mov      rax, qword ptr [rax+0x50]
        call     [rax+0x08]System.Collections.Specialized.NameValueCollection:Set(System.String,System.String):this
 						;; size=68 bbWeight=4 PerfScore 72.00
-G_M7504_IG22:
-       mov      rdi, gword ptr [rbp-0x28]
+G_M7504_IG11:
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.Collections.IEnumerator:MoveNext():ubyte:this
        call     [r11]System.Collections.IEnumerator:MoveNext():ubyte:this
        test     eax, eax
-       jne      SHORT G_M7504_IG21
+       jne      SHORT G_M7504_IG10
 						;; size=21 bbWeight=4 PerfScore 22.00
-G_M7504_IG23:
-       mov      rdi, gword ptr [rbp-0x28]
+G_M7504_IG12:
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=17 bbWeight=0.50 PerfScore 2.12
-G_M7504_IG24:
+G_M7504_IG13:
        mov      rax, gword ptr [rbx+0x20]
 						;; size=4 bbWeight=1 PerfScore 2.00
-G_M7504_IG25:
-       add      rsp, 16
+G_M7504_IG14:
+       add      rsp, 24
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=1 PerfScore 3.75
-G_M7504_IG26:
+						;; size=11 bbWeight=1 PerfScore 3.25
+G_M7504_IG15:
        mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        call     [rax]System.ThrowHelper:ThrowObjectDisposedException(System.Object)
        int3     
 						;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M7504_IG27:
+G_M7504_IG16:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Specialized.NameObjectCollectionBase
        mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
        call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
        jmp      G_M7504_IG04
 						;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG28:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M7504_IG06
-						;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG29:
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M7504_IG08
-						;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG30:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M7504_IG14
-						;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG31:
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M7504_IG16
-						;; size=27 bbWeight=0 PerfScore 0.00
-G_M7504_IG32:
+G_M7504_IG17:
        push     rbp
        push     r15
        push     r14
-       push     r13
        push     rbx
-       sub      rsp, 16
+       push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x30]
-						;; size=23 bbWeight=0 PerfScore 0.00
-G_M7504_IG33:
-       cmp      gword ptr [rbp-0x28], 0
-       je       SHORT G_M7504_IG34
-       mov      rdi, gword ptr [rbp-0x28]
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M7504_IG18:
+       cmp      gword ptr [rbp-0x20], 0
+       je       SHORT G_M7504_IG19
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=24 bbWeight=0 PerfScore 0.00
-G_M7504_IG34:
+G_M7504_IG19:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M7504_IG35:
-       add      rsp, 16
+G_M7504_IG20:
+       add      rsp, 8
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=0 PerfScore 0.00
-G_M7504_IG36:
+						;; size=11 bbWeight=0 PerfScore 0.00
+G_M7504_IG21:
        push     rbp
        push     r15
        push     r14
-       push     r13
        push     rbx
-       sub      rsp, 16
+       push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
        lea      rbp, [rbp+0x30]
-						;; size=23 bbWeight=0 PerfScore 0.00
-G_M7504_IG37:
-       cmp      gword ptr [rbp-0x28], 0
-       je       SHORT G_M7504_IG38
-       mov      rdi, gword ptr [rbp-0x28]
+						;; size=18 bbWeight=0 PerfScore 0.00
+G_M7504_IG22:
+       cmp      gword ptr [rbp-0x20], 0
+       je       SHORT G_M7504_IG23
+       mov      rdi, gword ptr [rbp-0x20]
        mov      r11, 0xD1FFAB1E      ; code for System.IDisposable:Dispose():this
        call     [r11]System.IDisposable:Dispose():this
 						;; size=24 bbWeight=0 PerfScore 0.00
-G_M7504_IG38:
+G_M7504_IG23:
        nop      
 						;; size=1 bbWeight=0 PerfScore 0.00
-G_M7504_IG39:
-       add      rsp, 16
+G_M7504_IG24:
+       add      rsp, 8
        pop      rbx
-       pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=13 bbWeight=0 PerfScore 0.00
+						;; size=11 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1066, prolog size 24, PerfScore 276.12, instruction count 244, allocated bytes for code 1066 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
+; Total bytes of code 644, prolog size 22, PerfScore 246.88, instruction count 162, allocated bytes for code 644 (MethodHash=4c35e2af) for method System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts)
 ; ============================================================
-227 (-94.58 % of base) - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this
 ; Assembly listing for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
-; rbp based frame
-; partially interruptible
+; rsp based frame
+; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 7 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.Headers.HttpHeaders>
+;  V00 this         [V00,T00] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.Net.Http.Headers.HttpHeaders>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
-;  V02 tmp1         [V02,T04] (  3,  2   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V03 tmp2         [V03,T02] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24>
-;  V04 tmp3         [V04,T05] (  3,  1.50)     ref  ->  rax         class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
-;  V05 tmp4         [V05,T03] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]][]>
-;  V07 tmp6         [V07,T06] (  3,  1.50)     int  ->  r15         "Inline stloc first use temp"
-;  V08 tmp7         [V08,T01] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]>
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M54155_IG01:
-       push     rbp
-       push     r15
-       push     r14
-       push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
-       mov      rbx, rdi
-						;; size=15 bbWeight=1 PerfScore 5.75
+						;; size=0 bbWeight=1 PerfScore 0.00
 G_M54155_IG02:
-       cmp      dword ptr [rbx+0x10], 0
-       jne      SHORT G_M54155_IG08
-						;; size=6 bbWeight=1 PerfScore 4.00
+       mov      rax, 0xD1FFAB1E      ; code for System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+						;; size=10 bbWeight=1 PerfScore 0.25
 G_M54155_IG03:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M54155_IG10
-						;; size=19 bbWeight=0.50 PerfScore 2.12
-G_M54155_IG04:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Value
-       mov      rbx, gword ptr [rdi]
-       mov      r15d, dword ptr [rbx+0x08]
-       test     r15d, r15d
-       je       SHORT G_M54155_IG05
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
-       mov      dword ptr [r14+0x08], -1
-       mov      dword ptr [r14+0x0C], r15d
-       lea      rdi, bword ptr [r14+0x10]
-       mov      rsi, rbx
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, r14
-       jmp      SHORT G_M54155_IG07
-						;; size=69 bbWeight=0.50 PerfScore 6.50
-G_M54155_IG05:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       SHORT G_M54155_IG11
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M54155_IG06:
-       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:Empty
-       mov      rax, gword ptr [rdi]
-						;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M54155_IG07:
-       jmp      SHORT G_M54155_IG09
-						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M54155_IG08:
-       mov      rdi, 0xD1FFAB1E      ; System.Net.Http.Headers.HttpHeaders+<GetEnumeratorCore>d__24
-       call     CORINFO_HELP_NEWSFAST
-       mov      r15, rax
-       xor      edi, edi
-       mov      dword ptr [r15+0x18], edi
-       lea      rdi, bword ptr [r15+0x08]
-       mov      rsi, rbx
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, r15
-						;; size=39 bbWeight=0.50 PerfScore 2.38
-G_M54155_IG09:
-       add      rsp, 8
-       pop      rbx
-       pop      r14
-       pop      r15
-       pop      rbp
-       ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
-G_M54155_IG10:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M54155_IG04
-						;; size=27 bbWeight=0 PerfScore 0.00
-G_M54155_IG11:
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M54155_IG06
-						;; size=24 bbWeight=0 PerfScore 0.00
+       tail.jmp [rax]System.Net.Http.Headers.HttpHeaders:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this
+						;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 240, prolog size 12, PerfScore 28.25, instruction count 56, allocated bytes for code 240 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
+; Total bytes of code 13, prolog size 0, PerfScore 2.25, instruction count 2, allocated bytes for code 13 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts)
 ; ============================================================
-151 (-50.33 % of base) - System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this
 ; Assembly listing for method System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
-; partially interruptible
+; fully interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
+; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.IO.Packaging.PackagePartCollection>
+;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rdi         this class-hnd single-def <System.IO.Packaging.PackagePartCollection>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;  V02 tmp1         [V02,T00] (  4,  6   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.SortedList`2[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
 ;* V03 tmp2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
-;  V04 tmp3         [V04,T06] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "dup spill" <System.Collections.Generic.SortedList`2+ValueList[System.__Canon,System.__Canon]>
-;  V05 tmp4         [V05,T03] (  5,  4   )     ref  ->  r15        
-;  V06 tmp5         [V06,T04] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
+;  V04 tmp3         [V04,T04] (  2,  4   )     ref  ->  rax         class-hnd exact single-def "dup spill" <System.Collections.Generic.SortedList`2+ValueList[System.__Canon,System.__Canon]>
+;  V05 tmp4         [V05,T05] (  4,  3.50)     ref  ->  rax        
+;  V06 tmp5         [V06,T02] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
 ;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
-;  V08 tmp7         [V08,T09] (  3,  2   )     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]>
-;  V09 tmp8         [V09,T05] (  4,  4   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
+;* V08 tmp7         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]>
+;  V09 tmp8         [V09,T03] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
 ;* V10 tmp9         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]>
-;  V11 tmp10        [V11,T07] (  3,  3   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]>
-;  V12 tmp11        [V12,T10] (  3,  1.50)     ref  ->  rax         class-hnd exact "Inline return value spill temp" <System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]>
-;  V13 tmp12        [V13,T08] (  3,  3   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.IO.Packaging.PackagePart[]>
-;* V14 tmp13        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline stloc first use temp" <System.IO.Packaging.PackagePart[]>
-;  V15 tmp14        [V15,T11] (  3,  1.50)     int  ->  rbx         "Inline stloc first use temp"
-;  V16 tmp15        [V16,T01] (  5,  5   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]>
+;  V11 tmp10        [V11,T06] (  3,  3   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.SortedList`2[System.__Canon,System.__Canon]>
+;  V12 cse0         [V12,T07] (  3,  2.50)     ref  ->  rbx         "CSE #01: aggressive"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 0
 
 G_M63846_IG01:
        push     rbp
        push     r15
-       push     r14
        push     rbx
-       push     rax
-       lea      rbp, [rsp+0x20]
-						;; size=12 bbWeight=1 PerfScore 5.50
+       lea      rbp, [rsp+0x10]
+						;; size=9 bbWeight=1 PerfScore 3.50
 G_M63846_IG02:
        mov      rbx, gword ptr [rdi+0x08]
-       mov      r15, gword ptr [rbx+0x28]
-       test     r15, r15
+       mov      rax, gword ptr [rbx+0x28]
+       test     rax, rax
        jne      SHORT G_M63846_IG04
 						;; size=13 bbWeight=1 PerfScore 5.25
 G_M63846_IG03:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.SortedList`2+ValueList[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]
        call     CORINFO_HELP_NEWSFAST
        mov      r15, rax
        lea      rdi, bword ptr [r15+0x08]
        mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
        lea      rdi, bword ptr [rbx+0x28]
        mov      rsi, r15
        call     CORINFO_HELP_ASSIGN_REF
-						;; size=42 bbWeight=0.50 PerfScore 2.50
+       mov      rax, r15
+						;; size=45 bbWeight=0.50 PerfScore 2.62
 G_M63846_IG04:
-       mov      rdi, gword ptr [r15+0x08]
-       cmp      dword ptr [rdi+0x30], 0
-       jne      SHORT G_M63846_IG10
+       mov      rbx, gword ptr [rax+0x08]
+       cmp      dword ptr [rbx+0x30], 0
+       jne      SHORT G_M63846_IG07
 						;; size=10 bbWeight=1 PerfScore 6.00
 G_M63846_IG05:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       G_M63846_IG12
-						;; size=19 bbWeight=0.50 PerfScore 2.12
+       mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.IO.Packaging.PackagePart]():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]
+       mov      rax, 0xD1FFAB1E      ; code for System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]
+						;; size=20 bbWeight=0.50 PerfScore 0.25
 G_M63846_IG06:
-       mov      rdi, 0xD1FFAB1E      ; data for System.Array+EmptyArray`1[System.IO.Packaging.PackagePart]:Value
-       mov      r15, gword ptr [rdi]
-       mov      ebx, dword ptr [r15+0x08]
-       test     ebx, ebx
-       je       SHORT G_M63846_IG07
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]
-       call     CORINFO_HELP_NEWSFAST
-       mov      r14, rax
-       mov      dword ptr [r14+0x08], -1
-       mov      dword ptr [r14+0x0C], ebx
-       lea      rdi, bword ptr [r14+0x10]
-       mov      rsi, r15
-       call     CORINFO_HELP_ASSIGN_REF
-       mov      rax, r14
-       jmp      SHORT G_M63846_IG09
-						;; size=68 bbWeight=0.50 PerfScore 6.50
+       pop      rbx
+       pop      r15
+       pop      rbp
+       tail.jmp [rax]System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[System.__Canon]():System.Collections.Generic.IEnumerator`1[System.__Canon]
+						;; size=7 bbWeight=0.50 PerfScore 1.75
 G_M63846_IG07:
-       mov      rdi, 0xD1FFAB1E      ; global ptr
-       test     byte  ptr [rdi], 1
-       je       SHORT G_M63846_IG13
-						;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M63846_IG08:
-       mov      rdi, 0xD1FFAB1E      ; data for System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]:Empty
-       mov      rax, gword ptr [rdi]
-						;; size=13 bbWeight=0.50 PerfScore 1.12
-G_M63846_IG09:
-       jmp      SHORT G_M63846_IG11
-						;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M63846_IG10:
        mov      rdi, 0xD1FFAB1E      ; System.Collections.Generic.SortedList`2+SortedListValueEnumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.PackagePart]
        call     CORINFO_HELP_NEWSFAST
-       mov      rbx, rax
-       mov      r15, gword ptr [r15+0x08]
-       lea      rdi, bword ptr [rbx+0x08]
-       mov      rsi, r15
+       mov      r15, rax
+       lea      rdi, bword ptr [r15+0x08]
+       mov      rsi, rbx
        call     CORINFO_HELP_ASSIGN_REF
-       mov      eax, dword ptr [r15+0x34]
-       mov      dword ptr [rbx+0x1C], eax
-       mov      rax, rbx
-						;; size=44 bbWeight=0.50 PerfScore 4.25
-G_M63846_IG11:
-       add      rsp, 8
+       mov      eax, dword ptr [rbx+0x34]
+       mov      dword ptr [r15+0x1C], eax
+       mov      rax, r15
+						;; size=40 bbWeight=0.50 PerfScore 3.25
+G_M63846_IG08:
        pop      rbx
-       pop      r14
        pop      r15
        pop      rbp
        ret      
-						;; size=11 bbWeight=1 PerfScore 3.25
-G_M63846_IG12:
-       mov      rdi, 0xD1FFAB1E      ; System.Array+EmptyArray`1[System.IO.Packaging.PackagePart]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      G_M63846_IG06
-						;; size=27 bbWeight=0 PerfScore 0.00
-G_M63846_IG13:
-       mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.IO.Packaging.PackagePart]
-       mov      rax, 0xD1FFAB1E      ; code for CORINFO_HELP_GET_GCSTATIC_BASE
-       call     [rax]CORINFO_HELP_GET_GCSTATIC_BASE
-       jmp      SHORT G_M63846_IG08
-						;; size=24 bbWeight=0 PerfScore 0.00
+						;; size=5 bbWeight=0.50 PerfScore 1.25
 
-; Total bytes of code 300, prolog size 12, PerfScore 39.62, instruction count 70, allocated bytes for code 300 (MethodHash=a18b0699) for method System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
+; Total bytes of code 149, prolog size 9, PerfScore 23.88, instruction count 40, allocated bytes for code 149 (MethodHash=a18b0699) for method System.IO.Packaging.PackagePartCollection:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.IO.Packaging.PackagePart]:this (FullOpts)
 ; ============================================================
-97 (-33.92 % of base) - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this
 ; Assembly listing for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
 ; Emitting BLENDED_CODE for X64 with AVX512 - Unix
 ; FullOpts code
 ; optimized code
 ; rbp based frame
 ; partially interruptible
 ; No PGO data
-; 0 inlinees with PGO data; 4 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  5,  4.50)     ref  ->  r14         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
-;  V01 arg1         [V01,T00] (  7,  6   )     int  ->  rbx         single-def
+;  V00 this         [V00,T00] (  6,  5.50)     ref  ->  rbx         this class-hnd single-def <System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter>
+;  V01 arg1         [V01,T02] (  5,  4.50)     int  ->  r14         single-def
 ;  V02 arg2         [V02,T01] (  6,  5   )     int  ->  r15        
-;  V03 loc0         [V03,T03] (  8,  6   )     int  ->  r15        
-;  V04 loc1         [V04,T10] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def <System.Linq.Expressions.Expression[]>
+;  V03 loc0         [V03,T03] (  5,  4   )     int  ->  r15        
+;  V04 loc1         [V04,T05] (  3,  1.50)     ref  ->  r13         class-hnd exact single-def <System.Linq.Expressions.Expression[]>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace" <Empty>
 ;* V06 tmp1         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewArr temp" <System.Linq.Expressions.Expression[]>
-;  V07 tmp2         [V07,T06] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression[]>
-;  V08 tmp3         [V08,T05] (  3,  5   )     int  ->  r14         ld-addr-op "Inlining Arg"
-;* V09 tmp4         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V10 tmp5         [V10,T07] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V11 tmp6         [V11,T08] (  2,  2   )     ref  ->  rsi         single-def "argument with side effect"
-;  V12 tmp7         [V12,T09] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V13 cse0         [V13,T04] (  7,  5   )     ref  ->  r13         multi-def "CSE #01: aggressive"
+;  V07 cse0         [V07,T04] (  4,  3   )     ref  ->  rbx         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 0
 
 G_M14820_IG01:
        push     rbp
        push     r15
        push     r14
        push     r13
        push     rbx
        lea      rbp, [rsp+0x20]
-       mov      r14, rdi
-       mov      ebx, esi
+       mov      rbx, rdi
+       mov      r14d, esi
        mov      r15d, edx
-						;; size=21 bbWeight=1 PerfScore 6.25
+						;; size=22 bbWeight=1 PerfScore 6.25
 G_M14820_IG02:
-       mov      rdi, r14
+       mov      rdi, rbx
        mov      rax, 0xD1FFAB1E      ; code for System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        call     [rax]System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:EnsureDone():this
        test     r15d, r15d
        jge      SHORT G_M14820_IG04
 						;; size=20 bbWeight=1 PerfScore 4.75
 G_M14820_IG03:
-       mov      r13, gword ptr [r14+0x10]
-       add      r15d, dword ptr [r13+0x08]
+       mov      rsi, gword ptr [rbx+0x10]
+       add      r15d, dword ptr [rsi+0x08]
 						;; size=8 bbWeight=0.50 PerfScore 2.50
 G_M14820_IG04:
-       sub      r15d, ebx
+       sub      r15d, r14d
        inc      r15d
-       mov      r13, gword ptr [r14+0x10]
-       mov      rsi, r13
-       test     r15d, r15d
-       jl       G_M14820_IG11
-       test     ebx, ebx
-       jl       G_M14820_IG10
-       mov      r14d, dword ptr [rsi+0x08]
-       sub      r14d, ebx
-       cmp      r14d, r15d
-       jl       SHORT G_M14820_IG09
-       cmp      dword ptr [r13+0x08], r15d
+       mov      rsi, gword ptr [rbx+0x10]
+       mov      ecx, r15d
+       mov      edx, r14d
+       mov      rdi, 0xD1FFAB1E      ; System.Dynamic.Utils.ContractUtils:RequiresArrayRange[System.Linq.Expressions.Expression](System.Collections.Generic.IList`1[System.Linq.Expressions.Expression],int,int,System.String,System.String)
+       mov      r8, 0xD1FFAB1E      ; 'first'
+       mov      r9, 0xD1FFAB1E      ; 'last'
+       mov      rax, 0xD1FFAB1E      ; code for System.Dynamic.Utils.ContractUtils:RequiresArrayRange[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],int,int,System.String,System.String)
+       call     [rax]System.Dynamic.Utils.ContractUtils:RequiresArrayRange[System.__Canon](System.Collections.Generic.IList`1[System.__Canon],int,int,System.String,System.String)
+       mov      rbx, gword ptr [rbx+0x10]
+       cmp      dword ptr [rbx+0x08], r15d
        je       SHORT G_M14820_IG07
-						;; size=48 bbWeight=1 PerfScore 12.75
+						;; size=68 bbWeight=1 PerfScore 13.00
 G_M14820_IG05:
-       mov      esi, r15d
+       movsxd   rsi, r15d
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Expressions.Expression[]
        call     CORINFO_HELP_NEWARR_1_OBJ
-       mov      r14, rax
-       mov      rdi, r13
-       mov      esi, ebx
-       mov      rdx, r14
+       mov      r13, rax
+       mov      rdi, rbx
+       mov      esi, r14d
+       mov      rdx, r13
        mov      r8d, r15d
        xor      ecx, ecx
        mov      rax, 0xD1FFAB1E      ; code for System.Array:Copy(System.Array,int,System.Array,int,int)
        call     [rax]System.Array:Copy(System.Array,int,System.Array,int,int)
-       mov      rax, r14
-						;; size=49 bbWeight=0.50 PerfScore 3.25
+       mov      rax, r13
+						;; size=50 bbWeight=0.50 PerfScore 3.25
 G_M14820_IG06:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
 G_M14820_IG07:
-       mov      rax, r13
+       mov      rax, rbx
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M14820_IG08:
        pop      rbx
        pop      r13
        pop      r14
        pop      r15
        pop      rbp
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M14820_IG09:
-       mov      edi, 0x47FD
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rdx, rax
-       mov      esi, r15d
-       mov      edi, r14d
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowLess[int](int,int,System.String)
-       int3     
-						;; size=42 bbWeight=0.50 PerfScore 2.88
-G_M14820_IG10:
-       mov      edi, 0x47FD
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rsi, rax
-       mov      edi, ebx
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       int3     
-						;; size=38 bbWeight=0.50 PerfScore 2.75
-G_M14820_IG11:
-       mov      edi, 0x4809
-       mov      rsi, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       mov      rsi, rax
-       mov      edi, r15d
-       mov      rax, 0xD1FFAB1E      ; code for System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       call     [rax]System.ArgumentOutOfRangeException:ThrowNegative[int](int,System.String)
-       int3     
-						;; size=39 bbWeight=0.50 PerfScore 2.75
 
-; Total bytes of code 286, prolog size 13, PerfScore 41.50, instruction count 80, allocated bytes for code 286 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts)
+; Total bytes of code 189, prolog size 13, PerfScore 33.38, instruction count 54, allocated bytes for code 189 (MethodHash=8d08c61b) for method System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]: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/3f83932f9c41554228b1b684dc522792

@MihuBot
Copy link
Owner Author

MihuBot commented Feb 10, 2025

@hez2010

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