MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [AndyAyersMS] JIT: Support for devirtualizing array interface methods #670

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 21 minutes 13 seconds. https://github.com/dotnet/runtime/pull/108153

Diffs

Diffs ``` Found 289 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 39374370 Total bytes of diff: 39376916 Total bytes of delta: 2546 (0.01 % of base) Total relative delta: 51.19 diff is a regression. relative diff is a regression. Top file regressions (bytes): 784 : System.Linq.dasm (0.07 % of base) 770 : System.Collections.Immutable.dasm (0.04 % of base) 728 : System.Threading.Tasks.Dataflow.dasm (0.06 % of base) 647 : System.Collections.dasm (0.15 % of base) 17 : System.Private.CoreLib.dasm (0.00 % of base) 8 : System.Reflection.Context.dasm (0.01 % of base) 4 : System.Net.NameResolution.dasm (0.01 % of base) 1 : System.Reflection.Emit.dasm (0.00 % of base) 1 : System.Private.Xml.Linq.dasm (0.00 % of base) 1 : System.Private.Xml.dasm (0.00 % of base) 1 : System.Reflection.MetadataLoadContext.dasm (0.00 % of base) 1 : System.ComponentModel.Composition.Registration.dasm (0.00 % of base) 1 : System.Reflection.TypeExtensions.dasm (0.02 % of base) Top file improvements (bytes): -115 : System.Linq.Expressions.dasm (-0.01 % of base) -105 : System.Private.DataContractSerialization.dasm (-0.01 % of base) -48 : Microsoft.Extensions.DependencyModel.dasm (-0.06 % of base) -30 : System.ComponentModel.Composition.dasm (-0.01 % of base) -22 : System.Composition.Convention.dasm (-0.02 % of base) -20 : Microsoft.CSharp.dasm (-0.01 % of base) -14 : Microsoft.VisualBasic.Core.dasm (-0.00 % of base) -12 : System.Net.Requests.dasm (-0.01 % of base) -12 : System.Net.Http.dasm (-0.00 % of base) -12 : Microsoft.Extensions.Http.dasm (-0.02 % of base) -8 : System.Linq.Queryable.dasm (-0.00 % of base) -8 : System.Composition.Hosting.dasm (-0.01 % of base) -6 : System.ComponentModel.Annotations.dasm (-0.01 % of base) -6 : System.Composition.TypedParts.dasm (-0.01 % of base) 27 total files with Code Size differences (14 improved, 13 regressed), 232 unchanged. Top method regressions (bytes): 112 (37.71 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) 112 (38.36 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) 112 (38.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) 112 (37.97 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) 112 (38.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) 112 (36.25 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) 112 (38.23 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:MoveNext():ubyte:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[double]():System.Collections.Generic.IEnumerator`1[double] (FullOpts) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[long]():System.Collections.Generic.IEnumerator`1[long] (FullOpts) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[short]():System.Collections.Generic.IEnumerator`1[short] (FullOpts) 104 (160.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) 104 (160.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) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[ubyte]():System.Collections.Generic.IEnumerator`1[ubyte] (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) 104 (452.17 % 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) 104 (452.17 % 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) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[ubyte]:GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) 23 (82.14 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[int]():System.Collections.Generic.IEnumerator`1[int] (FullOpts) 4 (16.67 % of base) : System.Net.Http.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection.CopyTo(double[],int):this (FullOpts) 4 (16.67 % of base) : System.Net.NameResolution.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection.CopyTo(double[],int):this (FullOpts) 3 (0.69 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:HasBuiltInEqualityOperator(System.Type,System.Type):ubyte (FullOpts) 3 (0.48 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:StrictHasReferenceConversionTo(System.Type,System.Type,ubyte):ubyte (FullOpts) 3 (1.06 % of base) : System.Private.CoreLib.dasm - System.Type:IsAssignableFrom(System.Type):ubyte:this (FullOpts) 2 (0.52 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:IsDynamicMember(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol):ubyte (FullOpts) 2 (1.21 % of base) : System.Text.Json.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsAssignableFromInternal(System.Type,System.Type):ubyte (FullOpts) 1 (6.25 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols:IsEnum(System.Type):ubyte (FullOpts) 1 (6.25 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols:IsGeneric(System.Type):ubyte (FullOpts) 1 (1.43 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.ExportServices:IsDefaultMetadataViewType(System.Type):ubyte (FullOpts) 1 (0.53 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.ReflectionModel.ImportType:IsDescendentOf(System.Type,System.Type):ubyte (FullOpts) 1 (1.43 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder+<>c__DisplayClass9_0:b__0(System.Type):ubyte:this (FullOpts) 1 (0.85 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (FullOpts) 1 (3.57 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:IsImplicitReferenceConversion(System.Type,System.Type):ubyte (FullOpts) 1 (5.26 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils+<>c:<.cctor>b__54_0(System.Type):ubyte:this (FullOpts) 1 (5.26 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils+<>c:<.cctor>b__54_1(System.Type):System.Type:this (FullOpts) 1 (1.67 % of base) : System.Private.CoreLib.dasm - System.Enum:GetUnderlyingType(System.Type):System.Type (FullOpts) 1 (4.35 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ExceptionHandler:Matches(System.Type):ubyte:this (FullOpts) 1 (5.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:get_IsEnum():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:get_IsGenericType():ubyte:this (FullOpts) 1 (4.35 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:get_TypeHandle():System.RuntimeTypeHandle:this (FullOpts) 1 (4.35 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:GetEnumUnderlyingType():System.Type:this (FullOpts) 1 (5.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:GetGenericTypeDefinition():System.Type:this (FullOpts) 1 (4.35 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:IsAssignableFrom(System.Type):ubyte:this (FullOpts) 1 (1.18 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Projection.ProjectingType:IsAssignableFrom(System.Type):ubyte:this (FullOpts) 1 (1.25 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Projection.ProjectingType:IsInstanceOfType(System.Object):ubyte:this (FullOpts) 1 (1.45 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicMethod:IsDefined(System.Type,ubyte):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.RuntimeEnumBuilder:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.SymbolType:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:get_IsByRefLike():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:get_IsEnum():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:get_IsGenericType():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:GetGenericTypeDefinition():System.Type:this (FullOpts) 1 (4.35 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.RoModifiedType:get_IsEnum():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.SignatureConstructedGenericType:get_IsByRefLike():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeDelegator:get_IsByRefLike():ubyte:this (FullOpts) 1 (4.35 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeDelegator:get_TypeHandle():System.RuntimeTypeHandle:this (FullOpts) 1 (1.49 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeDelegator:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.67 % of base) : System.Reflection.TypeExtensions.dasm - System.Reflection.TypeExtensions:IsAssignableFrom(System.Type,System.Type):ubyte (FullOpts) 1 (1.47 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:HasFactoryMethod(System.Runtime.Serialization.DataContracts.ClassDataContract):ubyte (FullOpts) 1 (1.47 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:HasFactoryMethod(System.Runtime.Serialization.DataContracts.ClassDataContract):ubyte (FullOpts) 1 (5.26 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.EnumConverterFactory:CanConvert(System.Type):ubyte:this (FullOpts) 1 (5.26 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonStringEnumConverter:CanConvert(System.Type):ubyte:this (FullOpts) 1 (0.95 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo:IsOverriddenOrShadowedBy(System.Text.Json.Serialization.Metadata.JsonPropertyInfo):ubyte:this (FullOpts) 1 (6.25 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:IsByRefLike(System.Type):ubyte (FullOpts) 1 (2.70 % of base) : System.Private.CoreLib.dasm - System.Type:IsAssignableTo(System.Type):ubyte:this (FullOpts) 1 (1.52 % of base) : System.Private.CoreLib.dasm - System.Type:IsInstanceOfType(System.Object):ubyte:this (FullOpts) 1 (1.59 % of base) : System.Private.Xml.Linq.dasm - System.Xml.Linq.XHelper:IsInstanceOfType(System.Object,System.Type):ubyte (FullOpts) 1 (0.45 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlExtensionFunction:GetClrType(System.Type):System.Type:this (FullOpts) Top method improvements (bytes): -38 (-0.86 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts) -35 (-1.68 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts) -24 (-0.63 % 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) -20 (-0.83 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.DataContract:ImportKnownTypeAttributes(System.Type,System.Collections.Generic.Dictionary`2[System.Type,System.Type],byref) (FullOpts) -16 (-1.36 % 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) -16 (-8.04 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts) -16 (-2.44 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadRuntimes(byref):System.Collections.Generic.List`1[Microsoft.Extensions.DependencyModel.RuntimeFallbacks] (FullOpts) -16 (-9.88 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts) -16 (-2.99 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:LookupDefaultMembers(byref,System.Type):System.Reflection.MemberInfo[]:this (FullOpts) -16 (-4.41 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts) -16 (-2.95 % 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) -16 (-7.77 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts) -13 (-4.15 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:HasReferenceEquality(System.Type,System.Type):ubyte (FullOpts) -12 (-1.48 % 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) -12 (-1.01 % 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) -12 (-1.22 % 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) -12 (-1.01 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsBinding():System.Linq.Expressions.MemberBinding:this (FullOpts) -12 (-1.44 % of base) : System.Net.Requests.dasm - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts) -10 (-7.94 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -8 (-1.41 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ImportMany.ImportManyExportDescriptorProvider:GetExportDescriptors(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.DependencyAccessor):System.Collections.Generic.IEnumerable`1[System.Composition.Hosting.Core.ExportDescriptorPromise]:this (FullOpts) -8 (-2.19 % of base) : System.Linq.Queryable.dasm - System.Linq.EnumerableRewriter:GetPublicType(System.Type):System.Type (FullOpts) -8 (-4.62 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts) -8 (-9.64 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts) -6 (-1.10 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:InternalsVisibleTo(System.Reflection.Assembly,System.Reflection.Assembly):ubyte (FullOpts) -6 (-2.51 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CompareAttribute:GetDisplayNameForProperty(System.Reflection.PropertyInfo):System.String:this (FullOpts) -6 (-0.35 % of base) : System.Composition.TypedParts.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (FullOpts) -6 (-1.95 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:MemberHasExportMetadata(System.Reflection.MemberInfo):ubyte (FullOpts) -6 (-1.13 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteDynamicExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts) -6 (-0.77 % 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) -6 (-0.90 % 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) -6 (-0.91 % 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) -6 (-1.09 % 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) -6 (-2.01 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts) -6 (-0.50 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts) -6 (-4.76 % 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) -6 (-0.99 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:IsNonAttributedTypeValidForSerialization(System.Type):ubyte (FullOpts) -6 (-2.04 % of base) : System.Text.Json.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (FullOpts) -3 (-1.90 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:ParameterIsAssignable(System.Reflection.ParameterInfo,System.Type):ubyte (FullOpts) Top method regressions (percentages): 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this (FullOpts) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this (FullOpts) 104 (452.17 % 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) 104 (452.17 % 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) 104 (452.17 % of base) : System.Threading.Tasks.Dataflow.dasm - System.Threading.Tasks.Dataflow.Internal.ImmutableArray`1[ubyte]:GetEnumerator():System.Collections.Generic.IEnumerator`1[ubyte]:this (FullOpts) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[double]():System.Collections.Generic.IEnumerator`1[double] (FullOpts) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[long]():System.Collections.Generic.IEnumerator`1[long] (FullOpts) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[short]():System.Collections.Generic.IEnumerator`1[short] (FullOpts) 104 (160.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) 104 (160.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) 104 (160.00 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[ubyte]():System.Collections.Generic.IEnumerator`1[ubyte] (FullOpts) 23 (82.14 % of base) : System.Collections.dasm - System.Collections.Generic.EnumerableHelpers:GetEmptyEnumerator[int]():System.Collections.Generic.IEnumerator`1[int] (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[double,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[double,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[int,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[int,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[long,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[long,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[short,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[short,System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Nullable`1[int],System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]]:this (FullOpts) 110 (81.48 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[ubyte,System.Nullable`1[int]]:System.Collections.Generic.IEnumerable>.GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[ubyte,System.Nullable`1[int]]]:this (FullOpts) 112 (38.36 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) 112 (38.23 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[ubyte]:MoveNext():ubyte:this (FullOpts) 112 (38.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) 112 (38.10 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) 112 (37.97 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) 112 (37.71 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) 112 (36.25 % of base) : System.Linq.dasm - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) 4 (16.67 % of base) : System.Net.Http.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection.CopyTo(double[],int):this (FullOpts) 4 (16.67 % of base) : System.Net.NameResolution.dasm - <>z__ReadOnlyArray`1[double]:System.Collections.Generic.ICollection.CopyTo(double[],int):this (FullOpts) 1 (6.25 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols:IsEnum(System.Type):ubyte (FullOpts) 1 (6.25 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols:IsGeneric(System.Type):ubyte (FullOpts) 1 (6.25 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo:IsByRefLike(System.Type):ubyte (FullOpts) 1 (5.26 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils+<>c:<.cctor>b__54_0(System.Type):ubyte:this (FullOpts) 1 (5.26 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils+<>c:<.cctor>b__54_1(System.Type):System.Type:this (FullOpts) 1 (5.26 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.EnumConverterFactory:CanConvert(System.Type):ubyte:this (FullOpts) 1 (5.26 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonStringEnumConverter:CanConvert(System.Type):ubyte:this (FullOpts) 1 (5.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:get_IsEnum():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:get_IsGenericType():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:GetGenericTypeDefinition():System.Type:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:get_IsByRefLike():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:get_IsEnum():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:get_IsGenericType():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.ModifiedType:GetGenericTypeDefinition():System.Type:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.SignatureConstructedGenericType:get_IsByRefLike():ubyte:this (FullOpts) 1 (5.00 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeDelegator:get_IsByRefLike():ubyte:this (FullOpts) 1 (4.35 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ExceptionHandler:Matches(System.Type):ubyte:this (FullOpts) 1 (4.35 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:get_TypeHandle():System.RuntimeTypeHandle:this (FullOpts) 1 (4.35 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:GetEnumUnderlyingType():System.Type:this (FullOpts) 1 (4.35 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Delegation.DelegatingType:IsAssignableFrom(System.Type):ubyte:this (FullOpts) 1 (4.35 % of base) : System.Reflection.MetadataLoadContext.dasm - System.Reflection.RoModifiedType:get_IsEnum():ubyte:this (FullOpts) 1 (4.35 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeDelegator:get_TypeHandle():System.RuntimeTypeHandle:this (FullOpts) 1 (3.57 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:IsImplicitReferenceConversion(System.Type,System.Type):ubyte (FullOpts) 1 (2.70 % of base) : System.Private.CoreLib.dasm - System.Type:IsAssignableTo(System.Type):ubyte:this (FullOpts) 1 (1.67 % of base) : System.Private.CoreLib.dasm - System.Enum:GetUnderlyingType(System.Type):System.Type (FullOpts) 1 (1.67 % of base) : System.Reflection.TypeExtensions.dasm - System.Reflection.TypeExtensions:IsAssignableFrom(System.Type,System.Type):ubyte (FullOpts) 1 (1.59 % of base) : System.Private.Xml.Linq.dasm - System.Xml.Linq.XHelper:IsInstanceOfType(System.Object,System.Type):ubyte (FullOpts) 1 (1.52 % of base) : System.Private.CoreLib.dasm - System.Type:IsInstanceOfType(System.Object):ubyte:this (FullOpts) 1 (1.49 % of base) : System.Private.CoreLib.dasm - System.Reflection.TypeDelegator:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.RuntimeEnumBuilder:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.SymbolType:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.SymbolType:IsAssignableFrom(System.Reflection.TypeInfo):ubyte:this (FullOpts) 1 (1.47 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:HasFactoryMethod(System.Runtime.Serialization.DataContracts.ClassDataContract):ubyte (FullOpts) 1 (1.47 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:HasFactoryMethod(System.Runtime.Serialization.DataContracts.ClassDataContract):ubyte (FullOpts) 1 (1.45 % of base) : System.Private.CoreLib.dasm - System.Reflection.Emit.DynamicMethod:IsDefined(System.Type,ubyte):ubyte:this (FullOpts) 1 (1.43 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.ExportServices:IsDefaultMetadataViewType(System.Type):ubyte (FullOpts) 1 (1.43 % of base) : System.ComponentModel.Composition.Registration.dasm - System.ComponentModel.Composition.Registration.RegistrationBuilder+<>c__DisplayClass9_0:b__0(System.Type):ubyte:this (FullOpts) 1 (1.25 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Projection.ProjectingType:IsInstanceOfType(System.Object):ubyte:this (FullOpts) 2 (1.21 % of base) : System.Text.Json.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsAssignableFromInternal(System.Type,System.Type):ubyte (FullOpts) 1 (1.18 % of base) : System.Reflection.Context.dasm - System.Reflection.Context.Projection.ProjectingType:IsAssignableFrom(System.Type):ubyte:this (FullOpts) 3 (1.06 % of base) : System.Private.CoreLib.dasm - System.Type:IsAssignableFrom(System.Type):ubyte:this (FullOpts) 1 (0.95 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo:IsOverriddenOrShadowedBy(System.Text.Json.Serialization.Metadata.JsonPropertyInfo):ubyte:this (FullOpts) 1 (0.85 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:AreReferenceAssignable(System.Type,System.Type):ubyte (FullOpts) 3 (0.69 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:HasBuiltInEqualityOperator(System.Type,System.Type):ubyte (FullOpts) 1 (0.53 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.ReflectionModel.ImportType:IsDescendentOf(System.Type,System.Type):ubyte (FullOpts) 2 (0.52 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.MemberLookup:IsDynamicMember(Microsoft.CSharp.RuntimeBinder.Semantics.Symbol):ubyte (FullOpts) 3 (0.48 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:StrictHasReferenceConversionTo(System.Type,System.Type,ubyte):ubyte (FullOpts) 1 (0.45 % of base) : System.Private.Xml.dasm - System.Xml.Xsl.Runtime.XmlExtensionFunction:GetClrType(System.Type):System.Type:this (FullOpts) Top method improvements (percentages): -16 (-9.88 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts) -8 (-9.64 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.CollectionDataContract:IsCollectionInterface(System.Type):ubyte (FullOpts) -16 (-8.04 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts) -10 (-7.94 % of base) : System.Net.Http.dasm - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) -16 (-7.77 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.ImportConventionBuilder:IsSupportedImportManyType(System.Reflection.TypeInfo):ubyte (FullOpts) -6 (-4.76 % 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) -8 (-4.62 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:GetDelegateType(System.Type[]):System.Type (FullOpts) -16 (-4.41 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.CompositionException:.ctor(System.ComponentModel.Composition.CompositionError):this (FullOpts) -13 (-4.15 % of base) : System.Linq.Expressions.dasm - System.Dynamic.Utils.TypeUtils:HasReferenceEquality(System.Type,System.Type):ubyte (FullOpts) -16 (-2.99 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Symbols+Container:LookupDefaultMembers(byref,System.Type):System.Reflection.MemberInfo[]:this (FullOpts) -16 (-2.95 % 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) -6 (-2.51 % of base) : System.ComponentModel.Annotations.dasm - System.ComponentModel.DataAnnotations.CompareAttribute:GetDisplayNameForProperty(System.Reflection.PropertyInfo):System.String:this (FullOpts) -16 (-2.44 % of base) : Microsoft.Extensions.DependencyModel.dasm - Microsoft.Extensions.DependencyModel.DependencyContextJsonReader:ReadRuntimes(byref):System.Collections.Generic.List`1[Microsoft.Extensions.DependencyModel.RuntimeFallbacks] (FullOpts) -8 (-2.19 % of base) : System.Linq.Queryable.dasm - System.Linq.EnumerableRewriter:GetPublicType(System.Type):System.Type (FullOpts) -6 (-2.04 % of base) : System.Text.Json.dasm - System.Text.Json.Reflection.ReflectionExtensions:IsInSubtypeRelationshipWith(System.Type,System.Type):ubyte (FullOpts) -6 (-2.01 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ChildRewriter:get_Item(int,int):System.Linq.Expressions.Expression[]:this (FullOpts) -6 (-1.95 % of base) : System.Composition.Convention.dasm - System.Composition.Convention.PartConventionBuilder:MemberHasExportMetadata(System.Reflection.MemberInfo):ubyte (FullOpts) -3 (-1.90 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Expression:ParameterIsAssignable(System.Reflection.ParameterInfo,System.Type):ubyte (FullOpts) -35 (-1.68 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts) -12 (-1.48 % 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) -12 (-1.44 % of base) : System.Net.Requests.dasm - System.Net.HttpWebResponse:get_Headers():System.Net.WebHeaderCollection:this (FullOpts) -8 (-1.41 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ImportMany.ImportManyExportDescriptorProvider:GetExportDescriptors(System.Composition.Hosting.Core.CompositionContract,System.Composition.Hosting.Core.DependencyAccessor):System.Collections.Generic.IEnumerable`1[System.Composition.Hosting.Core.ExportDescriptorPromise]:this (FullOpts) -16 (-1.36 % 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) -12 (-1.22 % 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) -6 (-1.13 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteDynamicExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts) -6 (-1.10 % of base) : Microsoft.CSharp.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.TypeManager:InternalsVisibleTo(System.Reflection.Assembly,System.Reflection.Assembly):ubyte (FullOpts) -6 (-1.09 % 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) -12 (-1.01 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsBinding():System.Linq.Expressions.MemberBinding:this (FullOpts) -12 (-1.01 % 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) -6 (-0.99 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract:IsNonAttributedTypeValidForSerialization(System.Type):ubyte (FullOpts) -6 (-0.91 % 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) -6 (-0.90 % 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) -38 (-0.86 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:ImportDataMembers():this (FullOpts) -20 (-0.83 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.DataContracts.DataContract:ImportKnownTypeAttributes(System.Type,System.Collections.Generic.Dictionary`2[System.Type,System.Type],byref) (FullOpts) -6 (-0.77 % 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) -24 (-0.63 % 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) -6 (-0.50 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Compiler.StackSpiller+ListBindingRewriter:AsExpression(System.Linq.Expressions.Expression):System.Linq.Expressions.Expression:this (FullOpts) -6 (-0.35 % of base) : System.Composition.TypedParts.dasm - System.Composition.CompositionContextExtensions:SatisfyImportsInternal(System.Composition.CompositionContext,System.Object,System.Composition.Convention.AttributedModelProvider) (FullOpts) 116 total methods with Code Size differences (38 improved, 78 regressed), 232416 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 1 month ago

Top method regressions

112 (37.71 % of base) - System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this ```diff ; Assembly listing for method System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 12.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Single return block return value" -; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V07 cse0 [V07,T02] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V08 cse1 [V08,T04] ( 3, 1.50) ref -> rdi "CSE #02: moderate" -; V09 cse2 [V09,T05] ( 3, 1.50) ref -> rdi "CSE #03: moderate" -; V10 rat0 [V10,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" +; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V06 tmp4 [V06,T03] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" +; V08 tmp6 [V08,T08] ( 3, 1.50) int -> r14 "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Single return block return value" +; V11 cse0 [V11,T04] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V12 cse1 [V12,T06] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V13 cse2 [V13,T07] ( 3, 1.50) ref -> rdi "CSE #04: moderate" +; V14 rat0 [V14,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M64558_IG01: push rbp push r15 + push r14 + push r13 push rbx - lea rbp, [rsp+0x10] + lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=12 bbWeight=1 PerfScore 3.75 + ;; size=16 bbWeight=1 PerfScore 5.75 G_M64558_IG02: mov edi, dword ptr [rbx+0x14] dec edi cmp edi, 3 ja SHORT G_M64558_IG04 ;; size=10 bbWeight=1 PerfScore 3.50 G_M64558_IG03: mov edi, edi lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] lea rax, G_M64558_IG02 add rsi, rax jmp rsi ;; size=24 bbWeight=0.80 PerfScore 4.80 G_M64558_IG04: mov rdi, gword ptr [rbx+0x20] test rdi, rdi je SHORT G_M64558_IG05 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this xor rax, rax mov gword ptr [rbx+0x20], rax ;; size=28 bbWeight=0.50 PerfScore 3.88 G_M64558_IG05: xor eax, eax mov qword ptr [rbx+0x08], rax mov dword ptr [rbx+0x14], -1 ;; size=13 bbWeight=0.50 PerfScore 1.12 G_M64558_IG06: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M64558_IG07: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 G_M64558_IG08: mov rsi, gword ptr [rbx+0x28] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x14], 2 ;; size=20 bbWeight=0.50 PerfScore 2.25 G_M64558_IG09: mov r15, gword ptr [rbx+0x38] test r15, r15 - jne G_M64558_IG13 + jne G_M64558_IG16 mov rdi, gword ptr [rbx+0x18] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this call [r11]System.Collections.Generic.IEnumerable`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this lea rdi, bword ptr [rbx+0x20] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x14], 3 ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M64558_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[double]:LoadFromEnumerator():ubyte:this call [rax]System.Linq.Enumerable+AppendPrependIterator`1[double]:LoadFromEnumerator():ubyte:this test eax, eax - jne SHORT G_M64558_IG14 + jne G_M64558_IG17 mov rdi, gword ptr [rbx+0x30] test rdi, rdi je SHORT G_M64558_IG06 mov esi, dword ptr [rbx+0x44] mov rax, 0xD1FFAB1E ; code for System.Linq.SingleLinkedNode`1[double]:ToArray(int):double[]:this cmp dword ptr [rdi], edi call [rax]System.Linq.SingleLinkedNode`1[double]:ToArray(int):double[]:this - mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this - call [r11]System.Collections.Generic.IEnumerable`1[double]:GetEnumerator():System.Collections.Generic.IEnumerator`1[double]:this + mov r15, rax + mov r14d, dword ptr [r15+0x08] + test r14d, r14d + jne SHORT G_M64558_IG12 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je G_M64558_IG19 + ;; size=80 bbWeight=0.50 PerfScore 12.00 +G_M64558_IG11: + mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[double]:Empty + mov rsi, gword ptr [rdi] + jmp SHORT G_M64558_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M64558_IG12: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[double] + 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 + mov rsi, r13 + ;; size=45 bbWeight=0.50 PerfScore 2.75 +G_M64558_IG13: lea rdi, bword ptr [rbx+0x20] - mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x14], 4 - ;; size=80 bbWeight=0.50 PerfScore 11.25 -G_M64558_IG11: + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M64558_IG14: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[double]:LoadFromEnumerator():ubyte:this ;; size=13 bbWeight=0.50 PerfScore 0.25 -G_M64558_IG12: +G_M64558_IG15: pop rbx + pop r13 + pop r14 pop r15 pop rbp tail.jmp [rax]System.Linq.Enumerable+AppendPrependIterator`1[double]:LoadFromEnumerator():ubyte:this - ;; size=7 bbWeight=0.50 PerfScore 1.75 -G_M64558_IG13: + ;; size=11 bbWeight=0.50 PerfScore 2.25 +G_M64558_IG16: vmovsd xmm0, qword ptr [r15+0x10] vmovsd qword ptr [rbx+0x08], xmm0 mov rsi, gword ptr [r15+0x08] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF ;; size=24 bbWeight=0.50 PerfScore 4.75 -G_M64558_IG14: +G_M64558_IG17: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M64558_IG15: +G_M64558_IG18: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M64558_IG19: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[double] + call CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M64558_IG11 + ;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M64558_IG08 - G_M64558_IG02 dd G_M64558_IG09 - G_M64558_IG02 dd G_M64558_IG10 - G_M64558_IG02 - dd G_M64558_IG11 - G_M64558_IG02 + dd G_M64558_IG14 - G_M64558_IG02 -; Total bytes of code 297, prolog size 12, PerfScore 45.67, instruction count 79, allocated bytes for code 297 (MethodHash=603a03d1) for method System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) +; Total bytes of code 409, prolog size 16, PerfScore 56.05, instruction count 105, allocated bytes for code 409 (MethodHash=603a03d1) for method System.Linq.Enumerable+AppendPrependN`1[double]:MoveNext():ubyte:this (FullOpts) ; ============================================================ ```
112 (38.36 % of base) - System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this ```diff ; Assembly listing for method System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 12.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Single return block return value" -; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V07 cse0 [V07,T02] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V08 cse1 [V08,T04] ( 3, 1.50) ref -> rdi "CSE #02: moderate" -; V09 cse2 [V09,T05] ( 3, 1.50) ref -> rdi "CSE #03: moderate" -; V10 rat0 [V10,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" +; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V06 tmp4 [V06,T03] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" +; V08 tmp6 [V08,T08] ( 3, 1.50) int -> r14 "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Single return block return value" +; V11 cse0 [V11,T04] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V12 cse1 [V12,T06] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V13 cse2 [V13,T07] ( 3, 1.50) ref -> rdi "CSE #04: moderate" +; V14 rat0 [V14,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M19976_IG01: push rbp push r15 + push r14 + push r13 push rbx - lea rbp, [rsp+0x10] + lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=12 bbWeight=1 PerfScore 3.75 + ;; size=16 bbWeight=1 PerfScore 5.75 G_M19976_IG02: mov edi, dword ptr [rbx+0x0C] dec edi cmp edi, 3 ja SHORT G_M19976_IG04 ;; size=10 bbWeight=1 PerfScore 3.50 G_M19976_IG03: mov edi, edi lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] lea rax, G_M19976_IG02 add rsi, rax jmp rsi ;; size=24 bbWeight=0.80 PerfScore 4.80 G_M19976_IG04: mov rdi, gword ptr [rbx+0x20] test rdi, rdi je SHORT G_M19976_IG05 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this xor rax, rax mov gword ptr [rbx+0x20], rax ;; size=28 bbWeight=0.50 PerfScore 3.88 G_M19976_IG05: xor eax, eax mov dword ptr [rbx+0x10], eax mov dword ptr [rbx+0x0C], -1 ;; size=12 bbWeight=0.50 PerfScore 1.12 G_M19976_IG06: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M19976_IG07: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 G_M19976_IG08: mov rsi, gword ptr [rbx+0x28] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 2 ;; size=20 bbWeight=0.50 PerfScore 2.25 G_M19976_IG09: mov r15, gword ptr [rbx+0x38] test r15, r15 - jne G_M19976_IG13 + jne G_M19976_IG16 mov rdi, gword ptr [rbx+0x18] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this call [r11]System.Collections.Generic.IEnumerable`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this lea rdi, bword ptr [rbx+0x20] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 3 ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M19976_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[int]:LoadFromEnumerator():ubyte:this call [rax]System.Linq.Enumerable+AppendPrependIterator`1[int]:LoadFromEnumerator():ubyte:this test eax, eax - jne SHORT G_M19976_IG14 + jne G_M19976_IG17 mov rdi, gword ptr [rbx+0x30] test rdi, rdi je SHORT G_M19976_IG06 mov esi, dword ptr [rbx+0x44] mov rax, 0xD1FFAB1E ; code for System.Linq.SingleLinkedNode`1[int]:ToArray(int):int[]:this cmp dword ptr [rdi], edi call [rax]System.Linq.SingleLinkedNode`1[int]:ToArray(int):int[]:this - mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this - call [r11]System.Collections.Generic.IEnumerable`1[int]:GetEnumerator():System.Collections.Generic.IEnumerator`1[int]:this + mov r15, rax + mov r14d, dword ptr [r15+0x08] + test r14d, r14d + jne SHORT G_M19976_IG12 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je G_M19976_IG19 + ;; size=80 bbWeight=0.50 PerfScore 12.00 +G_M19976_IG11: + mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[int]:Empty + mov rsi, gword ptr [rdi] + jmp SHORT G_M19976_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M19976_IG12: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[int] + 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 + mov rsi, r13 + ;; size=45 bbWeight=0.50 PerfScore 2.75 +G_M19976_IG13: lea rdi, bword ptr [rbx+0x20] - mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 4 - ;; size=80 bbWeight=0.50 PerfScore 11.25 -G_M19976_IG11: + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M19976_IG14: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[int]:LoadFromEnumerator():ubyte:this ;; size=13 bbWeight=0.50 PerfScore 0.25 -G_M19976_IG12: +G_M19976_IG15: pop rbx + pop r13 + pop r14 pop r15 pop rbp tail.jmp [rax]System.Linq.Enumerable+AppendPrependIterator`1[int]:LoadFromEnumerator():ubyte:this - ;; size=7 bbWeight=0.50 PerfScore 1.75 -G_M19976_IG13: + ;; size=11 bbWeight=0.50 PerfScore 2.25 +G_M19976_IG16: mov edi, dword ptr [r15+0x10] mov dword ptr [rbx+0x10], edi mov rsi, gword ptr [r15+0x08] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF ;; size=20 bbWeight=0.50 PerfScore 3.25 -G_M19976_IG14: +G_M19976_IG17: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M19976_IG15: +G_M19976_IG18: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M19976_IG19: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[int] + call CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M19976_IG11 + ;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M19976_IG08 - G_M19976_IG02 dd G_M19976_IG09 - G_M19976_IG02 dd G_M19976_IG10 - G_M19976_IG02 - dd G_M19976_IG11 - G_M19976_IG02 + dd G_M19976_IG14 - G_M19976_IG02 -; Total bytes of code 292, prolog size 12, PerfScore 44.17, instruction count 79, allocated bytes for code 292 (MethodHash=f166b1f7) for method System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) +; Total bytes of code 404, prolog size 16, PerfScore 54.55, instruction count 105, allocated bytes for code 404 (MethodHash=f166b1f7) for method System.Linq.Enumerable+AppendPrependN`1[int]:MoveNext():ubyte:this (FullOpts) ; ============================================================ ```
112 (38.10 % of base) - System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this ```diff ; Assembly listing for method System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 12.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Single return block return value" -; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V07 cse0 [V07,T02] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V08 cse1 [V08,T04] ( 3, 1.50) ref -> rdi "CSE #02: moderate" -; V09 cse2 [V09,T05] ( 3, 1.50) ref -> rdi "CSE #03: moderate" -; V10 rat0 [V10,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" +; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V06 tmp4 [V06,T03] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" +; V08 tmp6 [V08,T08] ( 3, 1.50) int -> r14 "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Single return block return value" +; V11 cse0 [V11,T04] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V12 cse1 [V12,T06] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V13 cse2 [V13,T07] ( 3, 1.50) ref -> rdi "CSE #04: moderate" +; V14 rat0 [V14,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M3953_IG01: push rbp push r15 + push r14 + push r13 push rbx - lea rbp, [rsp+0x10] + lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=12 bbWeight=1 PerfScore 3.75 + ;; size=16 bbWeight=1 PerfScore 5.75 G_M3953_IG02: mov edi, dword ptr [rbx+0x14] dec edi cmp edi, 3 ja SHORT G_M3953_IG04 ;; size=10 bbWeight=1 PerfScore 3.50 G_M3953_IG03: mov edi, edi lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] lea rax, G_M3953_IG02 add rsi, rax jmp rsi ;; size=24 bbWeight=0.80 PerfScore 4.80 G_M3953_IG04: mov rdi, gword ptr [rbx+0x20] test rdi, rdi je SHORT G_M3953_IG05 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this xor rax, rax mov gword ptr [rbx+0x20], rax ;; size=28 bbWeight=0.50 PerfScore 3.88 G_M3953_IG05: xor eax, eax mov qword ptr [rbx+0x08], rax mov dword ptr [rbx+0x14], -1 ;; size=13 bbWeight=0.50 PerfScore 1.12 G_M3953_IG06: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M3953_IG07: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 G_M3953_IG08: mov rsi, gword ptr [rbx+0x28] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x14], 2 ;; size=20 bbWeight=0.50 PerfScore 2.25 G_M3953_IG09: mov r15, gword ptr [rbx+0x38] test r15, r15 - jne G_M3953_IG13 + jne G_M3953_IG16 mov rdi, gword ptr [rbx+0x18] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this call [r11]System.Collections.Generic.IEnumerable`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this lea rdi, bword ptr [rbx+0x20] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x14], 3 ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M3953_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[long]:LoadFromEnumerator():ubyte:this call [rax]System.Linq.Enumerable+AppendPrependIterator`1[long]:LoadFromEnumerator():ubyte:this test eax, eax - jne SHORT G_M3953_IG14 + jne G_M3953_IG17 mov rdi, gword ptr [rbx+0x30] test rdi, rdi je SHORT G_M3953_IG06 mov esi, dword ptr [rbx+0x44] mov rax, 0xD1FFAB1E ; code for System.Linq.SingleLinkedNode`1[long]:ToArray(int):long[]:this cmp dword ptr [rdi], edi call [rax]System.Linq.SingleLinkedNode`1[long]:ToArray(int):long[]:this - mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this - call [r11]System.Collections.Generic.IEnumerable`1[long]:GetEnumerator():System.Collections.Generic.IEnumerator`1[long]:this + mov r15, rax + mov r14d, dword ptr [r15+0x08] + test r14d, r14d + jne SHORT G_M3953_IG12 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je G_M3953_IG19 + ;; size=80 bbWeight=0.50 PerfScore 12.00 +G_M3953_IG11: + mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[long]:Empty + mov rsi, gword ptr [rdi] + jmp SHORT G_M3953_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M3953_IG12: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[long] + 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 + mov rsi, r13 + ;; size=45 bbWeight=0.50 PerfScore 2.75 +G_M3953_IG13: lea rdi, bword ptr [rbx+0x20] - mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x14], 4 - ;; size=80 bbWeight=0.50 PerfScore 11.25 -G_M3953_IG11: + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M3953_IG14: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[long]:LoadFromEnumerator():ubyte:this ;; size=13 bbWeight=0.50 PerfScore 0.25 -G_M3953_IG12: +G_M3953_IG15: pop rbx + pop r13 + pop r14 pop r15 pop rbp tail.jmp [rax]System.Linq.Enumerable+AppendPrependIterator`1[long]:LoadFromEnumerator():ubyte:this - ;; size=7 bbWeight=0.50 PerfScore 1.75 -G_M3953_IG13: + ;; size=11 bbWeight=0.50 PerfScore 2.25 +G_M3953_IG16: mov rdi, qword ptr [r15+0x10] mov qword ptr [rbx+0x08], rdi mov rsi, gword ptr [r15+0x08] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF ;; size=21 bbWeight=0.50 PerfScore 3.25 -G_M3953_IG14: +G_M3953_IG17: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M3953_IG15: +G_M3953_IG18: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M3953_IG19: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[long] + call CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M3953_IG11 + ;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M3953_IG08 - G_M3953_IG02 dd G_M3953_IG09 - G_M3953_IG02 dd G_M3953_IG10 - G_M3953_IG02 - dd G_M3953_IG11 - G_M3953_IG02 + dd G_M3953_IG14 - G_M3953_IG02 -; Total bytes of code 294, prolog size 12, PerfScore 44.17, instruction count 79, allocated bytes for code 294 (MethodHash=6677f08e) for method System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) +; Total bytes of code 406, prolog size 16, PerfScore 54.55, instruction count 105, allocated bytes for code 406 (MethodHash=6677f08e) for method System.Linq.Enumerable+AppendPrependN`1[long]:MoveNext():ubyte:this (FullOpts) ; ============================================================ ```
112 (37.97 % of base) - System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this ```diff ; Assembly listing for method System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 12.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Single return block return value" -; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V07 cse0 [V07,T02] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V08 cse1 [V08,T04] ( 3, 1.50) ref -> rdi "CSE #02: moderate" -; V09 cse2 [V09,T05] ( 3, 1.50) ref -> rdi "CSE #03: moderate" -; V10 rat0 [V10,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" +; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V06 tmp4 [V06,T03] ( 3, 3 ) ref -> r15 class-hnd single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" +; V08 tmp6 [V08,T08] ( 3, 1.50) int -> r14 "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Single return block return value" +; V11 cse0 [V11,T04] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V12 cse1 [V12,T06] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V13 cse2 [V13,T07] ( 3, 1.50) ref -> rdi "CSE #04: moderate" +; V14 rat0 [V14,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M63209_IG01: push rbp push r15 + push r14 + push r13 push rbx - lea rbp, [rsp+0x10] + lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=12 bbWeight=1 PerfScore 3.75 + ;; size=16 bbWeight=1 PerfScore 5.75 G_M63209_IG02: mov edi, dword ptr [rbx+0x0C] dec edi cmp edi, 3 ja SHORT G_M63209_IG04 ;; size=10 bbWeight=1 PerfScore 3.50 G_M63209_IG03: mov edi, edi lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] lea rax, G_M63209_IG02 add rsi, rax jmp rsi ;; size=24 bbWeight=0.80 PerfScore 4.80 G_M63209_IG04: mov rdi, gword ptr [rbx+0x20] test rdi, rdi je SHORT G_M63209_IG05 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this xor rax, rax mov gword ptr [rbx+0x20], rax ;; size=28 bbWeight=0.50 PerfScore 3.88 G_M63209_IG05: mov word ptr [rbx+0x10], 0 mov dword ptr [rbx+0x0C], -1 ;; size=13 bbWeight=0.50 PerfScore 1.00 G_M63209_IG06: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M63209_IG07: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 G_M63209_IG08: mov rsi, gword ptr [rbx+0x28] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 2 ;; size=20 bbWeight=0.50 PerfScore 2.25 G_M63209_IG09: mov r15, gword ptr [rbx+0x38] test r15, r15 - jne G_M63209_IG13 + jne G_M63209_IG16 mov rdi, gword ptr [rbx+0x18] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this call [r11]System.Collections.Generic.IEnumerable`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this lea rdi, bword ptr [rbx+0x20] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 3 ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M63209_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[short]:LoadFromEnumerator():ubyte:this call [rax]System.Linq.Enumerable+AppendPrependIterator`1[short]:LoadFromEnumerator():ubyte:this test eax, eax - jne SHORT G_M63209_IG14 + jne G_M63209_IG17 mov rdi, gword ptr [rbx+0x30] test rdi, rdi je SHORT G_M63209_IG06 mov esi, dword ptr [rbx+0x44] mov rax, 0xD1FFAB1E ; code for System.Linq.SingleLinkedNode`1[short]:ToArray(int):short[]:this cmp dword ptr [rdi], edi call [rax]System.Linq.SingleLinkedNode`1[short]:ToArray(int):short[]:this - mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this - call [r11]System.Collections.Generic.IEnumerable`1[short]:GetEnumerator():System.Collections.Generic.IEnumerator`1[short]:this + mov r15, rax + mov r14d, dword ptr [r15+0x08] + test r14d, r14d + jne SHORT G_M63209_IG12 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je G_M63209_IG19 + ;; size=80 bbWeight=0.50 PerfScore 12.00 +G_M63209_IG11: + mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[short]:Empty + mov rsi, gword ptr [rdi] + jmp SHORT G_M63209_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M63209_IG12: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[short] + 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 + mov rsi, r13 + ;; size=45 bbWeight=0.50 PerfScore 2.75 +G_M63209_IG13: lea rdi, bword ptr [rbx+0x20] - mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 4 - ;; size=80 bbWeight=0.50 PerfScore 11.25 -G_M63209_IG11: + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M63209_IG14: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[short]:LoadFromEnumerator():ubyte:this ;; size=13 bbWeight=0.50 PerfScore 0.25 -G_M63209_IG12: +G_M63209_IG15: pop rbx + pop r13 + pop r14 pop r15 pop rbp tail.jmp [rax]System.Linq.Enumerable+AppendPrependIterator`1[short]:LoadFromEnumerator():ubyte:this - ;; size=7 bbWeight=0.50 PerfScore 1.75 -G_M63209_IG13: + ;; size=11 bbWeight=0.50 PerfScore 2.25 +G_M63209_IG16: movsx rdi, word ptr [r15+0x10] mov word ptr [rbx+0x10], di mov rsi, gword ptr [r15+0x08] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF ;; size=22 bbWeight=0.50 PerfScore 4.25 -G_M63209_IG14: +G_M63209_IG17: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M63209_IG15: +G_M63209_IG18: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M63209_IG19: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[short] + call CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M63209_IG11 + ;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M63209_IG08 - G_M63209_IG02 dd G_M63209_IG09 - G_M63209_IG02 dd G_M63209_IG10 - G_M63209_IG02 - dd G_M63209_IG11 - G_M63209_IG02 + dd G_M63209_IG14 - G_M63209_IG02 -; Total bytes of code 295, prolog size 12, PerfScore 45.05, instruction count 78, allocated bytes for code 295 (MethodHash=37de0916) for method System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) +; Total bytes of code 407, prolog size 16, PerfScore 55.42, instruction count 104, allocated bytes for code 407 (MethodHash=37de0916) for method System.Linq.Enumerable+AppendPrependN`1[short]:MoveNext():ubyte:this (FullOpts) ; ============================================================ ```
112 (38.10 % of base) - System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this ```diff ; Assembly listing for method System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 12.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Single return block return value" -; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V07 cse0 [V07,T02] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V08 cse1 [V08,T04] ( 3, 1.50) ref -> rdi "CSE #02: moderate" -; V09 cse2 [V09,T05] ( 3, 1.50) ref -> rdi "CSE #03: moderate" -; V10 rat0 [V10,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" +; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V06 tmp4 [V06,T03] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" +; V08 tmp6 [V08,T08] ( 3, 1.50) int -> r14 "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Single return block return value" +; V11 cse0 [V11,T04] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V12 cse1 [V12,T06] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V13 cse2 [V13,T07] ( 3, 1.50) ref -> rdi "CSE #04: moderate" +; V14 rat0 [V14,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M31813_IG01: push rbp push r15 + push r14 + push r13 push rbx - lea rbp, [rsp+0x10] + lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=12 bbWeight=1 PerfScore 3.75 + ;; size=16 bbWeight=1 PerfScore 5.75 G_M31813_IG02: mov edi, dword ptr [rbx+0x0C] dec edi cmp edi, 3 ja SHORT G_M31813_IG04 ;; size=10 bbWeight=1 PerfScore 3.50 G_M31813_IG03: mov edi, edi lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] lea rax, G_M31813_IG02 add rsi, rax jmp rsi ;; size=24 bbWeight=0.80 PerfScore 4.80 G_M31813_IG04: mov rdi, gword ptr [rbx+0x20] test rdi, rdi je SHORT G_M31813_IG05 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this xor rax, rax mov gword ptr [rbx+0x20], rax ;; size=28 bbWeight=0.50 PerfScore 3.88 G_M31813_IG05: xor eax, eax mov qword ptr [rbx+0x10], rax mov dword ptr [rbx+0x0C], -1 ;; size=13 bbWeight=0.50 PerfScore 1.12 G_M31813_IG06: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M31813_IG07: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 G_M31813_IG08: mov rsi, gword ptr [rbx+0x28] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 2 ;; size=20 bbWeight=0.50 PerfScore 2.25 G_M31813_IG09: mov r15, gword ptr [rbx+0x38] test r15, r15 - jne G_M31813_IG13 + jne G_M31813_IG16 mov rdi, gword ptr [rbx+0x18] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this call [r11]System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this lea rdi, bword ptr [rbx+0x20] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 3 ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M31813_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[System.Nullable`1[int]]:LoadFromEnumerator():ubyte:this call [rax]System.Linq.Enumerable+AppendPrependIterator`1[System.Nullable`1[int]]:LoadFromEnumerator():ubyte:this test eax, eax - jne SHORT G_M31813_IG14 + jne G_M31813_IG17 mov rdi, gword ptr [rbx+0x30] test rdi, rdi je SHORT G_M31813_IG06 mov esi, dword ptr [rbx+0x44] mov rax, 0xD1FFAB1E ; code for System.Linq.SingleLinkedNode`1[System.Nullable`1[int]]:ToArray(int):System.Nullable`1[int][]:this cmp dword ptr [rdi], edi call [rax]System.Linq.SingleLinkedNode`1[System.Nullable`1[int]]:ToArray(int):System.Nullable`1[int][]:this - mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this - call [r11]System.Collections.Generic.IEnumerable`1[System.Nullable`1[int]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Nullable`1[int]]:this + mov r15, rax + mov r14d, dword ptr [r15+0x08] + test r14d, r14d + jne SHORT G_M31813_IG12 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je G_M31813_IG19 + ;; size=80 bbWeight=0.50 PerfScore 12.00 +G_M31813_IG11: + mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[System.Nullable`1[int]]:Empty + mov rsi, gword ptr [rdi] + jmp SHORT G_M31813_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M31813_IG12: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Nullable`1[int]] + 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 + mov rsi, r13 + ;; size=45 bbWeight=0.50 PerfScore 2.75 +G_M31813_IG13: lea rdi, bword ptr [rbx+0x20] - mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 4 - ;; size=80 bbWeight=0.50 PerfScore 11.25 -G_M31813_IG11: + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M31813_IG14: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[System.Nullable`1[int]]:LoadFromEnumerator():ubyte:this ;; size=13 bbWeight=0.50 PerfScore 0.25 -G_M31813_IG12: +G_M31813_IG15: pop rbx + pop r13 + pop r14 pop r15 pop rbp tail.jmp [rax]System.Linq.Enumerable+AppendPrependIterator`1[System.Nullable`1[int]]:LoadFromEnumerator():ubyte:this - ;; size=7 bbWeight=0.50 PerfScore 1.75 -G_M31813_IG13: + ;; size=11 bbWeight=0.50 PerfScore 2.25 +G_M31813_IG16: mov rdi, qword ptr [r15+0x10] mov qword ptr [rbx+0x10], rdi mov rsi, gword ptr [r15+0x08] lea rdi, bword ptr [rbx+0x38] call CORINFO_HELP_ASSIGN_REF ;; size=21 bbWeight=0.50 PerfScore 3.25 -G_M31813_IG14: +G_M31813_IG17: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M31813_IG15: +G_M31813_IG18: pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 + ;; size=9 bbWeight=0.50 PerfScore 1.75 +G_M31813_IG19: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Nullable`1[int]] + call CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M31813_IG11 + ;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M31813_IG08 - G_M31813_IG02 dd G_M31813_IG09 - G_M31813_IG02 dd G_M31813_IG10 - G_M31813_IG02 - dd G_M31813_IG11 - G_M31813_IG02 + dd G_M31813_IG14 - G_M31813_IG02 -; Total bytes of code 294, prolog size 12, PerfScore 44.17, instruction count 79, allocated bytes for code 294 (MethodHash=c22e83ba) for method System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) +; Total bytes of code 406, prolog size 16, PerfScore 54.55, instruction count 105, allocated bytes for code 406 (MethodHash=c22e83ba) for method System.Linq.Enumerable+AppendPrependN`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) ; ============================================================ ```
112 (36.25 % of base) - System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this ```diff ; Assembly listing for method System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data -; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data +; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 22, 12.50) ref -> rbx this class-hnd single-def ;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V03 tmp1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V04 tmp2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" -;* V05 tmp3 [V05 ] ( 0, 0 ) int -> zero-ref "Single return block return value" -; V06 tmp4 [V06,T03] ( 2, 2 ) ref -> rdi single-def "argument with side effect" -; V07 cse0 [V07,T02] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" -; V08 cse1 [V08,T04] ( 3, 1.50) ref -> rdi "CSE #02: moderate" -; V09 cse2 [V09,T05] ( 3, 1.50) ref -> rdi "CSE #03: moderate" -; V10 rat0 [V10,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" +; V05 tmp3 [V05,T05] ( 3, 1.50) ref -> rsi class-hnd "Inline return value spill temp" +; V06 tmp4 [V06,T03] ( 3, 3 ) ref -> r15 class-hnd exact single-def "Inlining Arg" +;* V07 tmp5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" +; V08 tmp6 [V08,T08] ( 3, 1.50) int -> r14 "Inline stloc first use temp" +; V09 tmp7 [V09,T02] ( 5, 5 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" +;* V10 tmp8 [V10 ] ( 0, 0 ) int -> zero-ref "Single return block return value" +; V11 cse0 [V11,T04] ( 4, 2 ) ref -> r15 "CSE #01: aggressive" +; V12 cse1 [V12,T06] ( 3, 1.50) ref -> rdi "CSE #02: moderate" +; V13 cse2 [V13,T07] ( 3, 1.50) ref -> rdi "CSE #04: moderate" +; V14 rat0 [V14,T01] ( 3, 5.60) int -> rdi "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 0 G_M3352_IG01: push rbp push r15 + push r14 + push r13 push rbx - lea rbp, [rsp+0x10] + lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=12 bbWeight=1 PerfScore 3.75 + ;; size=16 bbWeight=1 PerfScore 5.75 G_M3352_IG02: mov edi, dword ptr [rbx+0x0C] dec edi cmp edi, 3 ja SHORT G_M3352_IG04 ;; size=10 bbWeight=1 PerfScore 3.50 G_M3352_IG03: mov edi, edi lea rsi, [reloc @RWD00] mov esi, dword ptr [rsi+4*rdi] lea rax, G_M3352_IG02 add rsi, rax jmp rsi ;; size=24 bbWeight=0.80 PerfScore 4.80 G_M3352_IG04: mov rdi, gword ptr [rbx+0x38] test rdi, rdi je SHORT G_M3352_IG05 mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this xor rax, rax mov gword ptr [rbx+0x38], rax ;; size=28 bbWeight=0.50 PerfScore 3.88 G_M3352_IG05: vxorps ymm0, ymm0, ymm0 vmovups ymmword ptr [rbx+0x10], ymm0 mov dword ptr [rbx+0x0C], -1 ;; size=16 bbWeight=0.50 PerfScore 1.67 G_M3352_IG06: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M3352_IG07: vzeroupper pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=8 bbWeight=0.50 PerfScore 1.75 + ;; size=12 bbWeight=0.50 PerfScore 2.25 G_M3352_IG08: mov rsi, gword ptr [rbx+0x40] lea rdi, bword ptr [rbx+0x50] call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 2 ;; size=20 bbWeight=0.50 PerfScore 2.25 G_M3352_IG09: mov r15, gword ptr [rbx+0x50] test r15, r15 - jne G_M3352_IG13 + jne G_M3352_IG16 mov rdi, gword ptr [rbx+0x30] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this call [r11]System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this lea rdi, bword ptr [rbx+0x38] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 3 ;; size=49 bbWeight=0.50 PerfScore 5.62 G_M3352_IG10: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[System.Numerics.Vector`1[float]]:LoadFromEnumerator():ubyte:this call [rax]System.Linq.Enumerable+AppendPrependIterator`1[System.Numerics.Vector`1[float]]:LoadFromEnumerator():ubyte:this test eax, eax - jne SHORT G_M3352_IG14 + jne G_M3352_IG17 mov rdi, gword ptr [rbx+0x48] test rdi, rdi je SHORT G_M3352_IG06 mov esi, dword ptr [rbx+0x5C] mov rax, 0xD1FFAB1E ; code for System.Linq.SingleLinkedNode`1[System.Numerics.Vector`1[float]]:ToArray(int):System.Numerics.Vector`1[float][]:this cmp dword ptr [rdi], edi call [rax]System.Linq.SingleLinkedNode`1[System.Numerics.Vector`1[float]]:ToArray(int):System.Numerics.Vector`1[float][]:this - mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this - call [r11]System.Collections.Generic.IEnumerable`1[System.Numerics.Vector`1[float]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Numerics.Vector`1[float]]:this + mov r15, rax + mov r14d, dword ptr [r15+0x08] + test r14d, r14d + jne SHORT G_M3352_IG12 + mov rdi, 0xD1FFAB1E ; global ptr + test byte ptr [rdi], 1 + je G_M3352_IG19 + ;; size=80 bbWeight=0.50 PerfScore 12.00 +G_M3352_IG11: + mov rdi, 0xD1FFAB1E ; data for System.SZGenericArrayEnumerator`1[System.Numerics.Vector`1[float]]:Empty + mov rsi, gword ptr [rdi] + jmp SHORT G_M3352_IG13 + ;; size=15 bbWeight=0.50 PerfScore 2.12 +G_M3352_IG12: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Numerics.Vector`1[float]] + 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 + mov rsi, r13 + ;; size=45 bbWeight=0.50 PerfScore 2.75 +G_M3352_IG13: lea rdi, bword ptr [rbx+0x38] - mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov dword ptr [rbx+0x0C], 4 - ;; size=80 bbWeight=0.50 PerfScore 11.25 -G_M3352_IG11: + ;; size=16 bbWeight=0.50 PerfScore 1.25 +G_M3352_IG14: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable+AppendPrependIterator`1[System.Numerics.Vector`1[float]]:LoadFromEnumerator():ubyte:this ;; size=13 bbWeight=0.50 PerfScore 0.25 -G_M3352_IG12: +G_M3352_IG15: vzeroupper pop rbx + pop r13 + pop r14 pop r15 pop rbp tail.jmp [rax]System.Linq.Enumerable+AppendPrependIterator`1[System.Numerics.Vector`1[float]]:LoadFromEnumerator():ubyte:this - ;; size=10 bbWeight=0.50 PerfScore 2.25 -G_M3352_IG13: + ;; size=14 bbWeight=0.50 PerfScore 2.75 +G_M3352_IG16: vmovups ymm0, ymmword ptr [r15+0x10] vmovups ymmword ptr [rbx+0x10], ymm0 mov rsi, gword ptr [r15+0x08] lea rdi, bword ptr [rbx+0x50] call CORINFO_HELP_ASSIGN_REF ;; size=24 bbWeight=0.50 PerfScore 5.25 -G_M3352_IG14: +G_M3352_IG17: mov eax, 1 ;; size=5 bbWeight=0.50 PerfScore 0.12 -G_M3352_IG15: +G_M3352_IG18: vzeroupper pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=8 bbWeight=0.50 PerfScore 1.75 + ;; size=12 bbWeight=0.50 PerfScore 2.25 +G_M3352_IG19: + mov rdi, 0xD1FFAB1E ; System.SZGenericArrayEnumerator`1[System.Numerics.Vector`1[float]] + call CORINFO_HELP_GET_GCSTATIC_BASE + jmp G_M3352_IG11 + ;; size=20 bbWeight=0 PerfScore 0.00 RWD00 dd G_M3352_IG08 - G_M3352_IG02 dd G_M3352_IG09 - G_M3352_IG02 dd G_M3352_IG10 - G_M3352_IG02 - dd G_M3352_IG11 - G_M3352_IG02 + dd G_M3352_IG14 - G_M3352_IG02 -; Total bytes of code 309, prolog size 12, PerfScore 48.22, instruction count 82, allocated bytes for code 309 (MethodHash=b5bdf2e7) for method System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) +; Total bytes of code 421, prolog size 16, PerfScore 58.59, instruction count 108, allocated bytes for code 421 (MethodHash=b5bdf2e7) for method System.Linq.Enumerable+AppendPrependN`1[System.Numerics.Vector`1[float]]:MoveNext():ubyte:this (FullOpts) ; ============================================================ ```

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

MihuBot commented 1 month ago

Top method improvements

-35 (-1.68 % of base) - System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this ```diff ; Assembly listing for method System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 35 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T09] ( 12, 15 ) ref -> rbx this class-hnd single-def ; V01 loc0 [V01,T51] ( 4, 3 ) ref -> r15 class-hnd single-def ; V02 loc1 [V02,T12] ( 6, 12 ) ref -> r14 class-hnd single-def ; V03 loc2 [V03,T49] ( 3, 5 ) ref -> r13 class-hnd exact single-def ; V04 loc3 [V04,T31] ( 4, 6 ) ref -> r12 class-hnd exact single-def ; V05 loc4 [V05,T01] ( 14, 26 ) ref -> [rbp-0x50] class-hnd exact spill-single-def ;* V06 loc5 [V06,T52] ( 0, 0 ) int -> zero-ref ; V07 loc6 [V07,T00] ( 21, 34 ) ref -> [rbp-0x58] class-hnd spill-single-def ; V08 loc7 [V08,T24] ( 3, 8 ) ubyte -> [rbp-0x2C] ;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd ;* V10 loc9 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd ; V11 loc10 [V11,T32] ( 3, 6 ) ref -> [rbp-0x60] class-hnd exact spill-single-def ;* V12 loc11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ;* V13 loc12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact ; V14 loc13 [V14,T15] ( 5, 10 ) ref -> rax class-hnd ;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V16 tmp1 [V16,T33] ( 3, 6 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" ; V17 tmp2 [V17,T34] ( 3, 6 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" ; V18 tmp3 [V18,T35] ( 3, 6 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" ; V19 tmp4 [V19,T04] ( 5, 20 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" ;* V20 tmp5 [V20 ] ( 0, 0 ) ref -> zero-ref ;* V21 tmp6 [V21 ] ( 0, 0 ) ref -> zero-ref ; V22 tmp7 [V22,T43] ( 3, 6 ) long -> rax ;* V23 tmp8 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ;* V24 tmp9 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ; V25 tmp10 [V25,T03] ( 6, 24 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "NewObj constructor temp" ;* V26 tmp11 [V26 ] ( 0, 0 ) ref -> zero-ref ;* V27 tmp12 [V27 ] ( 0, 0 ) ref -> zero-ref ; V28 tmp13 [V28,T44] ( 3, 6 ) long -> rax ;* V29 tmp14 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ;* V30 tmp15 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ;* V32 tmp17 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ; V33 tmp18 [V33,T13] ( 6, 12 ) ref -> rax class-hnd "Inline return value spill temp" ; V34 tmp19 [V34,T05] ( 5, 20 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" ; V35 tmp20 [V35,T17] ( 4, 8 ) ref -> rax class-hnd "Inline stloc first use temp" ;* V36 tmp21 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" ; V37 tmp22 [V37,T36] ( 3, 6 ) ref -> rax class-hnd "Inline return value spill temp" ; V38 tmp23 [V38,T45] ( 3, 6 ) int -> rax "Inline stloc first use temp" ; V39 tmp24 [V39,T37] ( 3, 6 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inline stloc first use temp" ;* V40 tmp25 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V41 tmp26 [V41,T06] ( 5, 20 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" ;* V42 tmp27 [V42,T65] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V43 tmp28 [V43,T14] ( 3, 12 ) ref -> rdi class-hnd exact "Inlining Arg" ;* V44 tmp29 [V44 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V46 tmp31 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V47 tmp32 [V47,T25] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" ;* V48 tmp33 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V49 tmp34 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V50 tmp35 [V50,T16] ( 5, 10 ) ref -> rax class-hnd "Inline return value spill temp" ; V51 tmp36 [V51,T07] ( 5, 20 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" ; V52 tmp37 [V52,T18] ( 4, 8 ) ref -> rax class-hnd "Inline stloc first use temp" ;* V53 tmp38 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" ; V54 tmp39 [V54,T38] ( 3, 6 ) ref -> rax class-hnd "Inline return value spill temp" ; V55 tmp40 [V55,T46] ( 3, 6 ) int -> rax "Inline stloc first use temp" ; V56 tmp41 [V56,T39] ( 3, 6 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "Inline stloc first use temp" ;* V57 tmp42 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V58 tmp43 [V58,T08] ( 5, 20 ) ref -> [rbp-0xA8] class-hnd exact spill-single-def "NewObj constructor temp" ; V59 tmp44 [V59,T26] ( 2, 8 ) ref -> rax class-hnd exact "Inlining Arg" ;* V60 tmp45 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ;* V61 tmp46 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" ; V62 tmp47 [V62,T19] ( 4, 8 ) long -> rsi "Inline return value spill temp" ; V63 tmp48 [V63,T40] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V64 tmp49 [V64,T20] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V65 tmp50 [V65,T21] ( 4, 8 ) long -> rsi "Inline return value spill temp" ; V66 tmp51 [V66,T41] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ; V67 tmp52 [V67,T22] ( 4, 8 ) int -> rdx "Inline stloc first use temp" ; V68 tmp53 [V68,T27] ( 2, 8 ) ref -> rsi "argument with side effect" ; V69 tmp54 [V69,T53] ( 2, 0 ) ref -> r15 "argument with side effect" ; V70 tmp55 [V70,T54] ( 2, 0 ) ref -> r13 "argument with side effect" ; V71 tmp56 [V71,T55] ( 2, 0 ) ref -> rdx "argument with side effect" ; V72 tmp57 [V72,T56] ( 2, 0 ) ref -> rdi "argument with side effect" ; V73 tmp58 [V73,T57] ( 2, 0 ) ref -> r13 "argument with side effect" ; V74 tmp59 [V74,T58] ( 2, 0 ) ref -> r14 "argument with side effect" ; V75 tmp60 [V75,T59] ( 2, 0 ) ref -> rdx "argument with side effect" ; V76 tmp61 [V76,T60] ( 2, 0 ) ref -> rdi "argument with side effect" ; V77 tmp62 [V77,T28] ( 2, 8 ) ref -> rsi "argument with side effect" ; V78 tmp63 [V78,T61] ( 2, 0 ) ref -> r15 "argument with side effect" ; V79 tmp64 [V79,T62] ( 2, 0 ) ref -> r13 "argument with side effect" ; V80 tmp65 [V80,T63] ( 2, 0 ) ref -> rdx "argument with side effect" ; V81 tmp66 [V81,T64] ( 2, 0 ) ref -> rdi "argument with side effect" ; V82 tmp67 [V82,T29] ( 2, 8 ) ref -> rdi "argument with side effect" ; V83 tmp68 [V83,T30] ( 2, 8 ) ref -> rdi "argument with side effect" ; V84 cse0 [V84,T47] ( 3, 6 ) long -> [rbp-0x38] spill-single-def "CSE #07: conservative" ; V85 cse1 [V85,T42] ( 3, 6 ) ref -> rsi "CSE #03: conservative" ; V86 cse2 [V86,T02] ( 17, 24 ) long -> [rbp-0x40] multi-def "CSE #04: aggressive" ; V87 cse3 [V87,T48] ( 3, 6 ) int -> rdi "CSE #02: moderate" ; V88 rat0 [V88,T10] ( 5, 17 ) long -> [rbp-0x48] "Widened IV V06" ; V89 rat1 [V89,T23] ( 3, 8 ) ref -> rsi "Spilling to split statement for tree" ; V90 rat2 [V90,T11] ( 4, 14 ) ref -> rax "replacement local" ; V91 rat3 [V91,T50] ( 3, 4 ) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 136 G_M60243_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 136 lea rbp, [rsp+0xB0] mov rbx, rdi ;; size=28 bbWeight=1 PerfScore 7.00 G_M60243_IG02: mov r15, gword ptr [rbx+0x08] mov rdi, r15 mov esi, 24 mov rax, qword ptr [r15] mov rax, qword ptr [rax+0x80] call [rax+0x28]System.Type:GetFields(int):System.Reflection.FieldInfo[]:this mov r14, rax mov rdi, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember] call CORINFO_HELP_NEWSFAST mov r13, rax mov rdi, r13 xor esi, esi xor rdx, rdx mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:.ctor(int,System.Collections.Generic.IEqualityComparer`1[System.__Canon]):this mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember] call CORINFO_HELP_NEWSFAST mov r12, rax mov esi, dword ptr [r14+0x08] mov rdi, r12 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this call [rax]System.Collections.Generic.List`1[System.__Canon]:.ctor(int):this mov rdi, 0xD1FFAB1E ; System.Collections.Generic.List`1[long] call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-0x68], rax mov esi, dword ptr [r14+0x08] mov rdi, rax mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[long]:.ctor(int):this call [rcx]System.Collections.Generic.List`1[long]:.ctor(int):this mov rax, gword ptr [rbp-0x68] mov gword ptr [rbp-0x50], rax xor ecx, ecx cmp dword ptr [r14+0x08], 0 jle G_M60243_IG38 ;; size=161 bbWeight=1 PerfScore 36.25 G_M60243_IG03: mov qword ptr [rbp-0x48], rcx mov rdx, gword ptr [r14+8*rcx+0x10] mov gword ptr [rbp-0x58], rdx xor esi, esi mov dword ptr [rbp-0x2C], esi cmp byte ptr [rbx+0x4E], 0 jne G_M60243_IG09 ;; size=28 bbWeight=4 PerfScore 37.00 G_M60243_IG04: mov rdi, rdx mov r8, qword ptr [rdx] mov qword ptr [rbp-0x40], r8 mov rsi, qword ptr [r8+0x50] call [rsi+0x10]System.Reflection.FieldInfo:get_Attributes():int:this test al, 128 jne G_M60243_IG37 mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.DataMember call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-0x70], rax mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.DataMember+CriticalHelper call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-0xA8], rax mov byte ptr [rax+0x41], 1 lea rdi, bword ptr [rax+0x18] mov rsi, gword ptr [rbp-0x58] call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdi] mov rax, gword ptr [rbp-0xA8] lea rdi, bword ptr [rax+0x30] call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x70] lea rdi, bword ptr [rax+0x08] mov rsi, gword ptr [rbp-0xA8] call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rbp-0x58] mov rax, qword ptr [rbp-0x40] mov rcx, qword ptr [rax+0x40] call [rcx+0x30]System.Reflection.MemberInfo:get_Name():System.String:this mov rcx, gword ptr [rbp-0x70] mov rdi, gword ptr [rcx+0x08] lea rdi, bword ptr [rdi+0x10] mov rsi, rax call CORINFO_HELP_ASSIGN_REF cmp byte ptr [rbx+0x4C], 0 je SHORT G_M60243_IG06 mov rdi, gword ptr [rbp-0x58] xor rsi, rsi mov rax, qword ptr [rbp-0x40] mov rax, qword ptr [rax+0x58] ;; size=187 bbWeight=2 PerfScore 91.50 G_M60243_IG05: call [rax]System.Reflection.FieldInfo:GetValue(System.Object):System.Object:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Convert:ToUInt64(System.Object):ulong call [rax]System.Convert:ToUInt64(System.Object):ulong jmp SHORT G_M60243_IG07 ;; size=19 bbWeight=2 PerfScore 17.00 G_M60243_IG06: mov rdi, gword ptr [rbp-0x58] xor rsi, rsi mov rcx, qword ptr [rbp-0x40] mov rax, qword ptr [rcx+0x58] call [rax]System.Reflection.FieldInfo:GetValue(System.Object):System.Object:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Convert:ToInt64(System.Object):long call [rax]System.Convert:ToInt64(System.Object):long ;; size=31 bbWeight=2 PerfScore 21.50 G_M60243_IG07: mov rsi, gword ptr [rbp-0x70] mov rdi, gword ptr [rsi+0x08] mov qword ptr [rdi+0x38], rax mov rdi, r12 mov rdx, r13 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:CheckAndAddMember(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember],System.Runtime.Serialization.DataContracts.DataMember,System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]) call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:CheckAndAddMember(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember],System.Runtime.Serialization.DataContracts.DataMember,System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]) ;; size=30 bbWeight=2 PerfScore 15.50 G_M60243_IG08: mov rdi, gword ptr [rbp-0x58] xor rsi, rsi mov rcx, qword ptr [rdi] mov rax, rcx mov rax, qword ptr [rax+0x58] call [rax]System.Reflection.FieldInfo:GetValue(System.Object):System.Object:this cmp byte ptr [rbx+0x4C], 0 je G_M60243_IG30 test rax, rax je G_M60243_IG34 mov rsi, rax mov rdi, 0xD1FFAB1E ; System.IConvertible mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov rdi, rax mov r11, 0xD1FFAB1E ; code for System.IConvertible:ToUInt64(System.IFormatProvider):ulong:this xor rsi, rsi call [r11]System.IConvertible:ToUInt64(System.IFormatProvider):ulong:this mov rsi, rax jmp G_M60243_IG35 ;; size=88 bbWeight=2 PerfScore 47.00 G_M60243_IG09: mov rdi, 0xD1FFAB1E ; code for System.Runtime.Serialization.Globals:get_TypeOfEnumMemberAttribute():System.Type call [rdi]System.Runtime.Serialization.Globals:get_TypeOfEnumMemberAttribute():System.Type mov rsi, rax mov rdi, gword ptr [rbp-0x58] xor edx, edx mov rcx, qword ptr [rdi] mov rax, rcx mov qword ptr [rbp-0x40], rax mov rcx, qword ptr [rax+0x48] mov qword ptr [rbp-0x38], rcx call [rcx+0x28]System.Reflection.MemberInfo:GetCustomAttributes(System.Type,ubyte):System.Object[]:this mov gword ptr [rbp-0x80], rax mov rsi, rax mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+Iterator`1[System.Object] mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rcx]CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne G_M60243_IG14 mov rax, gword ptr [rbp-0x80] test rax, rax jne SHORT G_M60243_IG10 mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable:g__EnumerableToArray|315_0[System.Object](System.Collections.Generic.IEnumerable`1[System.Object]):System.Object[] xor rsi, rsi mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable:g__EnumerableToArray|315_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] call [rax]System.Linq.Enumerable:g__EnumerableToArray|315_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] jmp SHORT G_M60243_IG15 ;; size=115 bbWeight=2 PerfScore 56.00 G_M60243_IG10: mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this + call System.SZArrayHelper:get_Count[System.Object]():int:this test eax, eax jne SHORT G_M60243_IG12 mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 je G_M60243_IG40 - ;; size=39 bbWeight=2 PerfScore 18.00 + ;; size=31 bbWeight=2 PerfScore 13.50 G_M60243_IG11: mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Object]:Value mov rax, gword ptr [rsi] jmp SHORT G_M60243_IG13 ;; size=15 bbWeight=2 PerfScore 8.50 G_M60243_IG12: movsxd rsi, eax mov rdi, 0xD1FFAB1E ; System.Object[] call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-0x88], rax mov rdi, gword ptr [rbp-0x80] mov rsi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this xor edx, edx - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this + call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this mov rax, gword ptr [rbp-0x88] - ;; size=54 bbWeight=2 PerfScore 16.50 + ;; size=46 bbWeight=2 PerfScore 12.00 G_M60243_IG13: jmp SHORT G_M60243_IG15 ;; size=2 bbWeight=2 PerfScore 4.00 G_M60243_IG14: mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Linq.Enumerable+Iterator`1[System.__Canon]:ToArray():System.__Canon[]:this ;; size=13 bbWeight=2 PerfScore 14.50 G_M60243_IG15: test rax, rax je G_M60243_IG22 mov edi, dword ptr [rax+0x08] test edi, edi je G_M60243_IG22 cmp edi, 1 jg G_M60243_IG45 mov rsi, gword ptr [rax+0x10] mov rax, rsi test rax, rax je SHORT G_M60243_IG17 ;; size=41 bbWeight=2 PerfScore 18.50 G_M60243_IG16: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.EnumMemberAttribute cmp qword ptr [rax], rdi jne G_M60243_IG44 ;; size=19 bbWeight=1 PerfScore 4.25 G_M60243_IG17: mov gword ptr [rbp-0x60], rax mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.DataMember call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-0x78], rax mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.DataContracts.DataMember+CriticalHelper call CORINFO_HELP_NEWSFAST mov gword ptr [rbp-0x90], rax mov byte ptr [rax+0x41], 1 lea rdi, bword ptr [rax+0x18] mov rsi, gword ptr [rbp-0x58] call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rdi] mov rax, gword ptr [rbp-0x90] lea rdi, bword ptr [rax+0x30] call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x78] lea rdi, bword ptr [rax+0x08] mov rsi, gword ptr [rbp-0x90] call CORINFO_HELP_ASSIGN_REF mov rax, gword ptr [rbp-0x60] cmp byte ptr [rax+0x10], 0 jne SHORT G_M60243_IG18 mov rdi, gword ptr [rbp-0x58] mov rcx, qword ptr [rbp-0x40] mov rax, qword ptr [rcx+0x40] call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this mov rcx, gword ptr [rbp-0x78] mov rdi, gword ptr [rcx+0x08] lea rdi, bword ptr [rdi+0x10] mov rsi, rax call CORINFO_HELP_ASSIGN_REF jmp SHORT G_M60243_IG19 ;; size=158 bbWeight=2 PerfScore 72.00 G_M60243_IG18: mov rsi, gword ptr [rax+0x08] mov rdi, rsi test rdi, rdi je G_M60243_IG43 cmp dword ptr [rdi+0x08], 0 je G_M60243_IG43 mov rax, gword ptr [rbp-0x78] mov rdi, gword ptr [rax+0x08] lea rdi, bword ptr [rdi+0x10] call CORINFO_HELP_ASSIGN_REF ;; size=43 bbWeight=2 PerfScore 24.00 G_M60243_IG19: cmp byte ptr [rbx+0x4C], 0 je SHORT G_M60243_IG20 mov rdi, gword ptr [rbp-0x58] xor rsi, rsi mov rax, qword ptr [rbp-0x40] mov rcx, qword ptr [rax+0x58] call [rcx]System.Reflection.FieldInfo:GetValue(System.Object):System.Object:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Convert:ToUInt64(System.Object):ulong call [rax]System.Convert:ToUInt64(System.Object):ulong jmp SHORT G_M60243_IG21 ;; size=39 bbWeight=2 PerfScore 33.50 G_M60243_IG20: mov rdi, gword ptr [rbp-0x58] xor rsi, rsi mov rcx, qword ptr [rbp-0x40] mov rax, qword ptr [rcx+0x58] call [rax]System.Reflection.FieldInfo:GetValue(System.Object):System.Object:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Convert:ToInt64(System.Object):long call [rax]System.Convert:ToInt64(System.Object):long ;; size=31 bbWeight=2 PerfScore 21.50 G_M60243_IG21: mov rsi, gword ptr [rbp-0x78] mov rdi, gword ptr [rsi+0x08] mov qword ptr [rdi+0x38], rax mov rdi, r12 mov rdx, r13 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.ClassDataContract:CheckAndAddMember(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember],System.Runtime.Serialization.DataContracts.DataMember,System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]) call [rax]System.Runtime.Serialization.DataContracts.ClassDataContract:CheckAndAddMember(System.Collections.Generic.List`1[System.Runtime.Serialization.DataContracts.DataMember],System.Runtime.Serialization.DataContracts.DataMember,System.Collections.Generic.Dictionary`2[System.String,System.Runtime.Serialization.DataContracts.DataMember]) mov dword ptr [rbp-0x2C], 1 ;; size=37 bbWeight=2 PerfScore 17.50 G_M60243_IG22: mov rcx, 0xD1FFAB1E ; code for System.Runtime.Serialization.Globals:get_TypeOfDataMemberAttribute():System.Type call [rcx]System.Runtime.Serialization.Globals:get_TypeOfDataMemberAttribute():System.Type mov rsi, rax mov rdi, gword ptr [rbp-0x58] xor edx, edx mov rcx, qword ptr [rbp-0x38] call [rcx+0x28]System.Reflection.MemberInfo:GetCustomAttributes(System.Type,ubyte):System.Object[]:this mov gword ptr [rbp-0x98], rax mov rsi, rax mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable+Iterator`1[System.Object] mov rcx, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFCLASS call [rcx]CORINFO_HELP_ISINSTANCEOFCLASS test rax, rax jne G_M60243_IG27 mov rax, gword ptr [rbp-0x98] test rax, rax jne SHORT G_M60243_IG23 mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable:g__EnumerableToArray|315_0[System.Object](System.Collections.Generic.IEnumerable`1[System.Object]):System.Object[] xor rsi, rsi mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable:g__EnumerableToArray|315_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] call [rax]System.Linq.Enumerable:g__EnumerableToArray|315_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] - jmp G_M60243_IG28 - ;; size=110 bbWeight=2 PerfScore 45.50 + jmp SHORT G_M60243_IG28 + ;; size=107 bbWeight=2 PerfScore 45.50 G_M60243_IG23: mov rdi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this + call System.SZArrayHelper:get_Count[System.Object]():int:this test eax, eax jne SHORT G_M60243_IG25 mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 je G_M60243_IG41 - ;; size=39 bbWeight=2 PerfScore 18.00 + ;; size=31 bbWeight=2 PerfScore 13.50 G_M60243_IG24: mov rsi, 0xD1FFAB1E ; data for System.Array+EmptyArray`1[System.Object]:Value mov rax, gword ptr [rsi] jmp SHORT G_M60243_IG26 ;; size=15 bbWeight=2 PerfScore 8.50 G_M60243_IG25: movsxd rsi, eax mov rdi, 0xD1FFAB1E ; System.Object[] call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-0xA0], rax mov rdi, gword ptr [rbp-0x98] mov rsi, rax - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this xor edx, edx - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this + call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this mov rax, gword ptr [rbp-0xA0] - ;; size=57 bbWeight=2 PerfScore 16.50 + ;; size=49 bbWeight=2 PerfScore 12.00 G_M60243_IG26: jmp SHORT G_M60243_IG28 ;; size=2 bbWeight=2 PerfScore 4.00 G_M60243_IG27: mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Linq.Enumerable+Iterator`1[System.__Canon]:ToArray():System.__Canon[]:this ;; size=13 bbWeight=2 PerfScore 14.50 G_M60243_IG28: test rax, rax je SHORT G_M60243_IG29 cmp dword ptr [rax+0x08], 0 jne G_M60243_IG42 ;; size=15 bbWeight=2 PerfScore 10.50 G_M60243_IG29: cmp dword ptr [rbp-0x2C], 0 je G_M60243_IG37 jmp G_M60243_IG08 ;; size=15 bbWeight=2 PerfScore 10.00 G_M60243_IG30: test rax, rax jne SHORT G_M60243_IG31 xor esi, esi jmp SHORT G_M60243_IG32 ;; size=9 bbWeight=2 PerfScore 7.00 G_M60243_IG31: mov rsi, rax mov rdi, 0xD1FFAB1E ; System.IConvertible mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTINTERFACE call [rax]CORINFO_HELP_CHKCASTINTERFACE mov rdi, rax mov r11, 0xD1FFAB1E ; code for System.IConvertible:ToInt64(System.IFormatProvider):long:this xor rsi, rsi call [r11]System.IConvertible:ToInt64(System.IFormatProvider):long:this mov rsi, rax ;; size=46 bbWeight=2 PerfScore 15.50 G_M60243_IG32: mov rax, gword ptr [rbp-0x50] inc dword ptr [rax+0x14] mov rcx, gword ptr [rax+0x08] mov edx, dword ptr [rax+0x10] cmp dword ptr [rcx+0x08], edx ja SHORT G_M60243_IG33 mov rdi, rax mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[long]:AddWithResize(long):this call [rcx]System.Collections.Generic.List`1[long]:AddWithResize(long):this jmp SHORT G_M60243_IG37 ;; size=36 bbWeight=2 PerfScore 35.00 G_M60243_IG33: lea edi, [rdx+0x01] mov dword ptr [rax+0x10], edi mov edi, edx mov qword ptr [rcx+8*rdi+0x10], rsi jmp SHORT G_M60243_IG37 ;; size=15 bbWeight=2 PerfScore 9.50 G_M60243_IG34: xor esi, esi ;; size=2 bbWeight=2 PerfScore 0.50 G_M60243_IG35: mov rax, gword ptr [rbp-0x50] inc dword ptr [rax+0x14] mov rcx, gword ptr [rax+0x08] mov edx, dword ptr [rax+0x10] cmp dword ptr [rcx+0x08], edx ja SHORT G_M60243_IG36 mov rdi, rax mov rcx, 0xD1FFAB1E ; code for System.Collections.Generic.List`1[long]:AddWithResize(long):this call [rcx]System.Collections.Generic.List`1[long]:AddWithResize(long):this jmp SHORT G_M60243_IG37 ;; size=36 bbWeight=2 PerfScore 35.00 G_M60243_IG36: lea edi, [rdx+0x01] mov dword ptr [rax+0x10], edi mov edi, edx mov qword ptr [rcx+8*rdi+0x10], rsi ;; size=13 bbWeight=2 PerfScore 5.50 G_M60243_IG37: mov rdi, qword ptr [rbp-0x48] inc edi cmp dword ptr [r14+0x08], edi mov rcx, rdi jg G_M60243_IG03 ;; size=19 bbWeight=4 PerfScore 22.00 G_M60243_IG38: lock or dword ptr [rsp], 0 lea rdi, bword ptr [rbx+0x58] mov rsi, r12 call CORINFO_HELP_ASSIGN_REF lea rdi, bword ptr [rbx+0x60] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_ASSIGN_REF nop ;; size=31 bbWeight=1 PerfScore 20.50 G_M60243_IG39: add rsp, 136 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=18 bbWeight=1 PerfScore 4.25 G_M60243_IG40: mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Object] call CORINFO_HELP_GET_GCSTATIC_BASE jmp G_M60243_IG11 ;; size=20 bbWeight=0 PerfScore 0.00 G_M60243_IG41: mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Object] call CORINFO_HELP_GET_GCSTATIC_BASE jmp G_M60243_IG24 ;; size=20 bbWeight=0 PerfScore 0.00 G_M60243_IG42: mov edi, 0x60B mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String call [rax]System.SR:GetResourceString(System.String):System.String mov r15, rax mov rdi, gword ptr [rbp-0x58] mov r14, qword ptr [rbp-0x40] mov rax, qword ptr [r14+0x40] call [rax+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract:GetClrTypeFullName(System.Type):System.String call [rax]System.Runtime.Serialization.DataContracts.DataContract:GetClrTypeFullName(System.Type):System.String mov r13, rax mov rdi, gword ptr [rbp-0x58] mov rax, qword ptr [r14+0x40] call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this mov rdx, rax mov rdi, r15 mov rsi, r13 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rdi, rax mov rsi, gword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract+DataContractCriticalHelper:ThrowInvalidDataContractException(System.String,System.Type) call [rax]System.Runtime.Serialization.DataContracts.DataContract+DataContractCriticalHelper:ThrowInvalidDataContractException(System.String,System.Type) int3 ;; size=123 bbWeight=0 PerfScore 0.00 G_M60243_IG43: mov edi, 0xE41 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String call [rax]System.SR:GetResourceString(System.String):System.String mov r13, rax mov rdi, gword ptr [rbp-0x58] mov r14, qword ptr [rbp-0x40] mov rax, qword ptr [r14+0x40] call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this mov r14, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract:GetClrTypeFullName(System.Type):System.String call [rax]System.Runtime.Serialization.DataContracts.DataContract:GetClrTypeFullName(System.Type):System.String mov rdx, rax mov rdi, r13 mov rsi, r14 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rdi, rax mov rsi, gword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract+DataContractCriticalHelper:ThrowInvalidDataContractException(System.String,System.Type) call [rax]System.Runtime.Serialization.DataContracts.DataContract+DataContractCriticalHelper:ThrowInvalidDataContractException(System.String,System.Type) int3 ;; size=112 bbWeight=0 PerfScore 0.00 G_M60243_IG44: mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=13 bbWeight=0 PerfScore 0.00 G_M60243_IG45: mov edi, 0x1F65 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String call [rax]System.SR:GetResourceString(System.String):System.String mov r15, rax mov rdi, gword ptr [rbp-0x58] mov r14, qword ptr [rbp-0x40] mov rax, qword ptr [r14+0x40] call [rax+0x38]System.Reflection.MemberInfo:get_DeclaringType():System.Type:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract:GetClrTypeFullName(System.Type):System.String call [rax]System.Runtime.Serialization.DataContracts.DataContract:GetClrTypeFullName(System.Type):System.String mov r13, rax mov rdi, gword ptr [rbp-0x58] mov rax, qword ptr [r14+0x40] call [rax+0x30]System.Reflection.MemberInfo:get_Name():System.String:this mov rdx, rax mov rdi, r15 mov rsi, r13 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object,System.Object):System.String mov rdi, rax mov rsi, gword ptr [rbx+0x08] mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.DataContracts.DataContract+DataContractCriticalHelper:ThrowInvalidDataContractException(System.String,System.Type) call [rax]System.Runtime.Serialization.DataContracts.DataContract+DataContractCriticalHelper:ThrowInvalidDataContractException(System.String,System.Type) int3 ;; size=123 bbWeight=0 PerfScore 0.00 -; Total bytes of code 2080, prolog size 25, PerfScore 863.75, instruction count 477, allocated bytes for code 2080 (MethodHash=4b7514ac) for method System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts) +; Total bytes of code 2045, prolog size 25, PerfScore 845.75, instruction count 473, allocated bytes for code 2045 (MethodHash=4b7514ac) for method System.Runtime.Serialization.DataContracts.EnumDataContract+EnumDataContractCriticalHelper:ImportDataMembers():this (FullOpts) ; ============================================================ ```
-16 (-8.04 % of base) - Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() ```diff ; Assembly listing for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 5 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ; ;* V00 loc0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V02 tmp1 [V02,T01] ( 3, 3 ) ref -> rbx class-hnd exact single-def "impAppendStmt" ;* V03 tmp2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V04 tmp3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V05 tmp4 [V05 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V06 tmp5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V07 tmp6 [V07 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ;* V08 tmp7 [V08 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" ; V09 tmp8 [V09,T00] ( 11, 21 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" ;* V10 tmp9 [V10 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" ; V11 tmp10 [V11,T03] ( 2, 2 ) ref -> rsi class-hnd "Inline return value spill temp" ;* V12 tmp11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" ;* V13 tmp12 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" ; V14 tmp13 [V14,T02] ( 3, 2 ) ref -> rsi class-hnd "Inline return value spill temp" ; V15 tmp14 [V15,T05] ( 3, 1.50) int -> rax single-def "Inline stloc first use temp" ; V16 tmp15 [V16,T04] ( 3, 1.50) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" ;* V17 tmp16 [V17 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.hasValue (fldOffset=0x0)" P-INDEP ;* V18 tmp17 [V18 ] ( 0, 0 ) ubyte -> zero-ref single-def "field V00.value (fldOffset=0x1)" P-INDEP ;* V19 tmp18 [V19,T06] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.hasValue (fldOffset=0x0)" P-INDEP ;* V20 tmp19 [V20,T07] ( 0, 0 ) ubyte -> zero-ref single-def "field V03.value (fldOffset=0x1)" P-INDEP ;* V21 tmp20 [V21,T08] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.hasValue (fldOffset=0x0)" P-INDEP ;* V22 tmp21 [V22,T09] ( 0, 0 ) ubyte -> zero-ref single-def "field V04.value (fldOffset=0x1)" P-INDEP ;* V23 tmp22 [V23,T10] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.hasValue (fldOffset=0x0)" P-INDEP ;* V24 tmp23 [V24,T11] ( 0, 0 ) ubyte -> zero-ref single-def "field V05.value (fldOffset=0x1)" P-INDEP ;* V25 tmp24 [V25,T12] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.hasValue (fldOffset=0x0)" P-INDEP ;* V26 tmp25 [V26,T13] ( 0, 0 ) ubyte -> zero-ref single-def "field V06.value (fldOffset=0x1)" P-INDEP ;* V27 tmp26 [V27,T14] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.hasValue (fldOffset=0x0)" P-INDEP ;* V28 tmp27 [V28,T15] ( 0, 0 ) ubyte -> zero-ref single-def "field V07.value (fldOffset=0x1)" P-INDEP ;* V29 tmp28 [V29,T16] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.hasValue (fldOffset=0x0)" P-INDEP ;* V30 tmp29 [V30,T17] ( 0, 0 ) ubyte -> zero-ref single-def "field V08.value (fldOffset=0x1)" P-INDEP ;* V31 tmp30 [V31,T18] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.hasValue (fldOffset=0x0)" P-INDEP ;* V32 tmp31 [V32,T19] ( 0, 0 ) ubyte -> zero-ref single-def "field V10.value (fldOffset=0x1)" P-INDEP ; ; Lcl frame size = 8 G_M20015_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] ;; size=12 bbWeight=0.50 PerfScore 2.75 G_M20015_IG02: mov rdi, 0xD1FFAB1E ; const ptr mov rbx, gword ptr [rdi] mov rdi, 0xD1FFAB1E ; Microsoft.Extensions.DependencyModel.CompilationOptions call CORINFO_HELP_NEWSFAST mov r15, rax mov rdi, rbx - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this + call System.SZArrayHelper:get_Count[System.Object]():int:this test eax, eax jne SHORT G_M20015_IG03 mov rax, 0xD1FFAB1E ; const ptr mov rsi, gword ptr [rax] jmp SHORT G_M20015_IG04 - ;; size=66 bbWeight=0.50 PerfScore 6.38 + ;; size=58 bbWeight=0.50 PerfScore 5.25 G_M20015_IG03: movsxd rsi, eax mov rdi, 0xD1FFAB1E ; System.String[] call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov rdi, rbx mov rsi, r14 - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this xor edx, edx - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this + call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this mov rsi, r14 - ;; size=45 bbWeight=0.50 PerfScore 3.00 + ;; size=37 bbWeight=0.50 PerfScore 1.88 G_M20015_IG04: lea rdi, bword ptr [r15+0x08] call CORINFO_HELP_ASSIGN_REF xor rdi, rdi mov gword ptr [r15+0x10], rdi ;; size=15 bbWeight=1 PerfScore 2.75 G_M20015_IG05: mov gword ptr [r15+0x18], rdi ;; size=4 bbWeight=1 PerfScore 1.00 G_M20015_IG06: mov dword ptr [r15+0x30], edi mov word ptr [r15+0x34], 0 ;; size=11 bbWeight=1 PerfScore 2.00 G_M20015_IG07: mov gword ptr [r15+0x20], rdi ;; size=4 bbWeight=1 PerfScore 1.00 G_M20015_IG08: mov dword ptr [r15+0x36], edi ;; size=4 bbWeight=1 PerfScore 1.00 G_M20015_IG09: mov gword ptr [r15+0x28], rdi ;; size=4 bbWeight=1 PerfScore 1.00 G_M20015_IG10: mov dword ptr [r15+0x3A], edi mov rdi, 0xD1FFAB1E ; data for Microsoft.Extensions.DependencyModel.CompilationOptions:k__BackingField mov rsi, r15 call CORINFO_HELP_ASSIGN_REF nop ;; size=23 bbWeight=1 PerfScore 2.75 G_M20015_IG11: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 -; Total bytes of code 199, prolog size 12, PerfScore 26.88, instruction count 50, allocated bytes for code 199 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts) +; Total bytes of code 183, prolog size 12, PerfScore 24.62, instruction count 48, allocated bytes for code 183 (MethodHash=d9fbb1d0) for method Microsoft.Extensions.DependencyModel.CompilationOptions:.cctor() (FullOpts) ; ============================================================ ```
-16 (-9.88 % of base) - Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this ```diff ; Assembly listing for method Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 4, 4 ) ref -> r15 this class-hnd single-def ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def ; V02 arg2 [V02,T00] ( 5, 4 ) ref -> rbx class-hnd single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 tmp1 [V04,T03] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ;* V05 tmp2 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" ;* V06 tmp3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" ; V07 tmp4 [V07,T04] ( 3, 1.50) ref -> rax class-hnd "Inline return value spill temp" ; V08 tmp5 [V08,T06] ( 3, 1.50) int -> rax "Inline stloc first use temp" ; V09 tmp6 [V09,T05] ( 3, 1.50) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" ; ; Lcl frame size = 8 G_M53872_IG01: push rbp push r15 push r14 push rbx push rax lea rbp, [rsp+0x20] mov r15, rdi mov rbx, rdx ;; size=18 bbWeight=1 PerfScore 6.00 G_M53872_IG02: lea rdi, bword ptr [r15+0x18] call CORINFO_HELP_ASSIGN_REF test rbx, rbx jne SHORT G_M53872_IG04 ;; size=14 bbWeight=1 PerfScore 2.75 G_M53872_IG03: mov rdi, 0xD1FFAB1E ; System.Linq.Enumerable:g__EnumerableToArray|315_0[System.String](System.Collections.Generic.IEnumerable`1[System.String]):System.String[] xor rsi, rsi mov rax, 0xD1FFAB1E ; code for System.Linq.Enumerable:g__EnumerableToArray|315_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] call [rax]System.Linq.Enumerable:g__EnumerableToArray|315_0[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon]):System.__Canon[] jmp SHORT G_M53872_IG06 ;; size=26 bbWeight=0.50 PerfScore 2.88 G_M53872_IG04: mov rdi, rbx - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:get_Count():int:this + call System.SZArrayHelper:get_Count[System.Object]():int:this test eax, eax jne SHORT G_M53872_IG05 mov rax, 0xD1FFAB1E ; const ptr mov rax, gword ptr [rax] jmp SHORT G_M53872_IG06 - ;; size=35 bbWeight=0.50 PerfScore 4.50 + ;; size=27 bbWeight=0.50 PerfScore 3.38 G_M53872_IG05: movsxd rsi, eax mov rdi, 0xD1FFAB1E ; System.String[] call CORINFO_HELP_NEWARR_1_OBJ mov r14, rax mov rdi, rbx mov rsi, r14 - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this xor edx, edx - call [r11]System.Collections.Generic.ICollection`1[System.__Canon]:CopyTo(System.__Canon[],int):this + call System.SZArrayHelper:CopyTo[System.Object](System.Object[],int):this mov rax, r14 - ;; size=45 bbWeight=0.50 PerfScore 3.00 + ;; size=37 bbWeight=0.50 PerfScore 1.88 G_M53872_IG06: lea rdi, bword ptr [r15+0x08] mov rsi, rax call CORINFO_HELP_ASSIGN_REF nop ;; size=13 bbWeight=1 PerfScore 2.00 G_M53872_IG07: add rsp, 8 pop rbx pop r14 pop r15 pop rbp ret ;; size=11 bbWeight=1 PerfScore 3.25 -; Total bytes of code 162, prolog size 12, PerfScore 24.38, instruction count 45, allocated bytes for code 162 (MethodHash=4a652d8f) for method Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts) +; Total bytes of code 146, prolog size 12, PerfScore 22.12, instruction count 43, allocated bytes for code 146 (MethodHash=4a652d8f) for method Microsoft.Extensions.DependencyModel.RuntimeAssetGroup:.ctor(System.String,System.String[]):this (FullOpts) ; ============================================================ ```
-10 (-7.94 % of base) - System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this ```diff ; Assembly listing for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX - Unix ; FullOpts code ; optimized code ; rbp based frame -; fully interruptible +; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 4, 3.50) ref -> rbx this class-hnd single-def ;# V01 OutArgs [V01 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V02 tmp1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline return value spill temp" +; V02 tmp1 [V02,T02] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" ; V03 tmp2 [V03,T01] ( 4, 4 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" d__24> -; V04 tmp3 [V04,T02] ( 2, 2 ) ref -> rdi single-def "argument with side effect" ; ; Lcl frame size = 0 G_M54155_IG01: push rbp push r15 push rbx lea rbp, [rsp+0x10] mov rbx, rdi ;; size=12 bbWeight=1 PerfScore 3.75 G_M54155_IG02: cmp dword ptr [rbx+0x10], 0 - jne SHORT G_M54155_IG06 + jne SHORT G_M54155_IG05 ;; size=6 bbWeight=1 PerfScore 4.00 G_M54155_IG03: mov rdi, 0xD1FFAB1E ; global ptr test byte ptr [rdi], 1 - je SHORT G_M54155_IG08 + je SHORT G_M54155_IG07 ;; size=15 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 rdi, gword ptr [rdi] - mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this cmp dword ptr [rdi], edi - ;; size=25 bbWeight=0.50 PerfScore 2.75 + call System.SZArrayHelper:GetEnumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]]:this + jmp SHORT G_M54155_IG06 + ;; size=22 bbWeight=0.50 PerfScore 4.12 G_M54155_IG05: - pop rbx - pop r15 - pop rbp - tail.jmp [r11]System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:GetEnumerator():System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:this - ;; size=7 bbWeight=0.50 PerfScore 1.75 -G_M54155_IG06: mov rdi, 0xD1FFAB1E ; System.Net.Http.Headers.HttpHeaders+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_IG07: +G_M54155_IG06: pop rbx pop r15 pop rbp ret - ;; size=5 bbWeight=0.50 PerfScore 1.25 -G_M54155_IG08: + ;; size=5 bbWeight=1 PerfScore 2.50 +G_M54155_IG07: mov rdi, 0xD1FFAB1E ; System.Array+EmptyArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Collections.Generic.IEnumerable`1[System.String]]] call CORINFO_HELP_GET_GCSTATIC_BASE jmp SHORT G_M54155_IG04 ;; size=17 bbWeight=0 PerfScore 0.00 -; Total bytes of code 126, prolog size 12, PerfScore 18.00, instruction count 34, allocated bytes for code 126 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator:this (FullOpts) +; Total bytes of code 116, prolog size 9, PerfScore 18.88, instruction count 31, allocated bytes for code 116 (MethodHash=e0352c74) for method System.Net.Http.Headers.HttpHeaders:System.Collections.IEnumerable.GetEnumerator():System.Collections.IEnumerator: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/9703e9540c798315b207cdef19cdc298

MihuBot commented 1 month ago

@AndyAyersMS