MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [EgorBo] Remove unused GETFIELD/SETFIELD helpers #535

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 16 minutes. https://github.com/dotnet/runtime/pull/105023

Diffs

Diffs ``` Found 291 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 39210993 Total bytes of diff: 39212357 Total bytes of delta: 1364 (0.00 % of base) Total relative delta: 6.80 diff is a regression. relative diff is a regression. Top file regressions (bytes): 252 : System.Linq.dasm (0.02 % of base) 173 : System.Reflection.Emit.dasm (0.14 % of base) 139 : System.Data.Common.dasm (0.01 % of base) 128 : System.Private.DataContractSerialization.dasm (0.01 % of base) 124 : System.Text.Json.dasm (0.01 % of base) 99 : System.Linq.Expressions.dasm (0.01 % of base) 98 : System.Private.CoreLib.dasm (0.00 % of base) 66 : System.ComponentModel.Composition.dasm (0.02 % of base) 58 : System.Private.Xml.dasm (0.00 % of base) 51 : Microsoft.Extensions.Caching.Abstractions.dasm (0.19 % of base) 33 : System.ComponentModel.TypeConverter.dasm (0.01 % of base) 28 : System.Composition.Runtime.dasm (0.15 % of base) 28 : System.ServiceModel.Syndication.dasm (0.02 % of base) 20 : System.Text.RegularExpressions.dasm (0.00 % of base) 19 : System.Collections.Immutable.dasm (0.00 % of base) 18 : System.Linq.Parallel.dasm (0.00 % of base) 12 : System.Diagnostics.DiagnosticSource.dasm (0.00 % of base) 8 : Microsoft.VisualBasic.Core.dasm (0.00 % of base) 8 : System.Formats.Nrbf.dasm (0.02 % of base) 4 : Microsoft.Extensions.Hosting.dasm (0.01 % of base) 1 : System.IO.Packaging.dasm (0.00 % of base) Top file improvements (bytes): -2 : System.Composition.Hosting.dasm (-0.00 % of base) -1 : System.Threading.RateLimiting.dasm (-0.00 % of base) 23 total files with Code Size differences (2 improved, 21 regressed), 236 unchanged. Top method regressions (bytes): 151 (11.68 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsArray(System.String[],System.Object[],ubyte,System.Reflection.Emit.MarshallingData) (FullOpts) 91 (31.93 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) 59 (38.56 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this (FullOpts) 55 (5.57 % of base) : Microsoft.Extensions.Caching.Abstractions.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions+d__11`1[System.Nullable`1[int]]:MoveNext():this (FullOpts) 38 (0.45 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Nullable`1[int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts) 33 (35.87 % of base) : System.Private.CoreLib.dasm - System.Progress`1[System.Nullable`1[int]]:InvokeHandlers(System.Object):this (FullOpts) 33 (2.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.Nullable`1[int],System.Nullable`1[int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts) 31 (8.96 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) 30 (7.06 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) 26 (2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:ToArray():System.Nullable`1[int][]:this (FullOpts) 26 (4.95 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) 25 (1.28 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileIntSwitchExpression[System.Nullable`1[int]](System.Linq.Expressions.SwitchExpression):this (FullOpts) 22 (3.07 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:Child_PropertyChanged(System.Object,System.ComponentModel.PropertyChangedEventArgs):this (FullOpts) 22 (12.43 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsComInterface(System.String[],System.Object[],int,System.Reflection.Emit.MarshallingData) (FullOpts) 20 (19.61 % of base) : System.Text.RegularExpressions.dasm - System.Collections.HashtableExtensions:TryGetValue[System.Nullable`1[int]](System.Collections.Hashtable,System.Object,byref):ubyte (FullOpts) 20 (23.53 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[System.Nullable`1[int],System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 20 (0.49 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[System.Nullable`1[int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts) 20 (23.53 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.Nullable`1[int],System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 16 (8.99 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Comparer`1[System.Nullable`1[int]]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts) 16 (9.30 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.EqualityComparer`1[System.Nullable`1[int]]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts) 16 (5.67 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[System.Nullable`1[int],System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 15 (12.40 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[System.Nullable`1[int],System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 12 (2.06 % of base) : System.Composition.Runtime.dasm - System.Composition.Hosting.Core.CompositionContract:TryUnwrapMetadataConstraint[System.Nullable`1[int]](System.String,byref,byref):ubyte:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[double,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[int,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[long,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[short,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[System.__Canon,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[System.Nullable`1[int],System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[ubyte,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 11 (1.00 % of base) : System.Private.CoreLib.dasm - System.Globalization.CultureNotFoundException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) 10 (3.04 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:ToArray():System.Nullable`1[int][]:this (FullOpts) 10 (17.54 % of base) : System.Private.CoreLib.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.Nullable`1[int]]:b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts) 10 (18.52 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 10 (18.52 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.Nullable`1[int]]:b__0(System.Object,System.Object):ubyte:this (FullOpts) 9 (6.12 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonParameterInfo`1[System.Nullable`1[int]]:.ctor(System.Text.Json.Serialization.Metadata.JsonParameterInfoValues,System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.Nullable`1[int]]):this (FullOpts) 8 (13.11 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.Nullable`1[int]](System.Object):System.Nullable`1[int] (FullOpts) 8 (5.93 % of base) : System.Composition.Runtime.dasm - System.Composition.CompositionContext:TryGetExport[System.Nullable`1[int]](byref):ubyte:this (FullOpts) 8 (4.76 % of base) : System.Composition.Runtime.dasm - System.Composition.CompositionContext:TryGetExport[System.Nullable`1[int]](System.String,byref):ubyte:this (FullOpts) 8 (2.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__0(System.Data.DataRow):ubyte:this (FullOpts) 8 (4.76 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts) 8 (4.76 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__7(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts) 8 (10.13 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+ValueTypedFetchProperty`2[System.Nullable`1[int],System.Nullable`1[int]]:Fetch(System.Object):System.Object:this (FullOpts) 8 (3.16 % of base) : System.Formats.Nrbf.dasm - System.Formats.Nrbf.RectangularArrayRecord:g__CopyTo|16_0[System.Nullable`1[int]](System.Collections.Generic.ICollection`1[System.Object],System.Array) (FullOpts) 8 (5.06 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) 8 (2.75 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetElementAt(int,byref):System.Nullable`1[int]:this (FullOpts) 8 (3.19 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetFirst(byref):System.Nullable`1[int]:this (FullOpts) 8 (5.10 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.NumericConvertInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 8 (10.13 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass11_0`2[System.Nullable`1[int],System.Nullable`1[int]]:b__0(System.Object):System.Object:this (FullOpts) 8 (1.06 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonConverter`1[System.Nullable`1[int]]:ReadCore(byref,byref,System.Text.Json.JsonSerializerOptions,byref):ubyte:this (FullOpts) 7 (5.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts) 7 (6.67 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.EqualityComparer`1[System.Nullable`1[int]]:System.Collections.IEqualityComparer.GetHashCode(System.Object):int:this (FullOpts) 7 (6.48 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:System.ComponentModel.IBindingList.AddNew():System.Object:this (FullOpts) 7 (3.95 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewGenerator:CreateMetadataView[System.Nullable`1[int]](System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory,System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.Nullable`1[int] (FullOpts) 7 (4.37 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__2(System.Data.DataRow):ubyte:this (FullOpts) 7 (2.17 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:TryGetElementAt(int,byref):System.Nullable`1[int]:this (FullOpts) 7 (2.46 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:TryGetFirst(byref):System.Nullable`1[int]:this (FullOpts) 7 (2.19 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 7 (6.60 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 7 (4.40 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[double,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.64 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[int,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.55 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[long,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[short,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[ubyte,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (5.74 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[double,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 7 (5.19 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 7 (2.10 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.Nullable`1[int]](System.Runtime.Serialization.XmlObjectSerializer):System.Nullable`1[int]:this (FullOpts) 7 (1.67 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.Nullable`1[int]](System.Xml.Serialization.XmlSerializer):System.Nullable`1[int]:this (FullOpts) 7 (2.31 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.XmlSyndicationContent:ReadContent[System.Nullable`1[int]](System.Runtime.Serialization.XmlObjectSerializer):System.Nullable`1[int]:this (FullOpts) 7 (1.91 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.XmlSyndicationContent:ReadContent[System.Nullable`1[int]](System.Xml.Serialization.XmlSerializer):System.Nullable`1[int]:this (FullOpts) 7 (4.29 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:ResolveReferenceId[System.Nullable`1[int]](byref):System.Nullable`1[int] (FullOpts) 7 (3.08 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.ReflectionMemberAccessor+<>c__DisplayClass2_0`1[System.Nullable`1[int]]:b__0(System.Object[]):System.Nullable`1[int]:this (FullOpts) 7 (5.79 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[double,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 7 (5.22 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 6 (1.10 % of base) : System.Linq.Parallel.dasm - System.Linq.ParallelEnumerable:PerformSequentialAggregation[System.__Canon,System.Nullable`1[int]](System.Linq.ParallelQuery`1[System.__Canon],System.Nullable`1[int],ubyte,System.Func`3[System.Nullable`1[int],System.__Canon,System.Nullable`1[int]]):System.Nullable`1[int] (FullOpts) 5 (0.38 % of base) : System.Private.CoreLib.dasm - System.GC:RefreshMemoryLimit() (FullOpts) 4 (6.45 % of base) : Microsoft.Extensions.Hosting.dasm - Microsoft.Extensions.Hosting.HostApplicationBuilder+<>c__DisplayClass30_0`1[System.Nullable`1[int]]:b__1(System.Object):this (FullOpts) 4 (2.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts) 4 (1.98 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]:System.Collections.IList.Contains(System.Object):ubyte:this (FullOpts) 4 (1.99 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts) 4 (2.27 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:AddNewCore():System.Object:this (FullOpts) 4 (0.19 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewProvider:GetMetadataView[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.Nullable`1[int] (FullOpts) 4 (2.50 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__1(System.Data.DataRow):ubyte:this (FullOpts) 4 (2.67 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__5(System.Object,System.Data.DataRow):int:this (FullOpts) 4 (2.67 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__8(System.Object,System.Data.DataRow):int:this (FullOpts) 4 (5.26 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.Nullable`1[int],System.Nullable`1[int]]:Fetch(System.Object):System.Object:this (FullOpts) 4 (1.75 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`1[System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.28 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[double,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[int,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[long,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[short,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.27 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[System.__Canon,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[ubyte,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (4.82 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ConvertHelper:ToInt32NoNull(System.Object):int (FullOpts) 4 (1.37 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`2[System.Nullable`1[int],System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (5.26 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass11_1`2[System.Nullable`1[int],System.Nullable`1[int]]:b__1(System.Object):System.Object:this (FullOpts) 4 (2.68 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[System.__Canon,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 4 (2.44 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 4 (3.54 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[int,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) Top method improvements (bytes): -18 (-1.45 % of base) : System.Text.Json.dasm - System.Text.Json.JsonException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) -4 (-2.82 % of base) : Microsoft.Extensions.Caching.Abstractions.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.Nullable`1[int]](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):ubyte (FullOpts) -4 (-2.68 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataServices:GetValue[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String):System.Nullable`1[int] (FullOpts) -1 (-0.48 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ExportFactory.ExportFactoryExportDescriptorProvider+<>c__DisplayClass2_3`1[System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) -1 (-0.45 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ExportFactory.ExportFactoryWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) -1 (-0.76 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.RateLimitLease:TryGetMetadata[System.Nullable`1[int]](System.Threading.RateLimiting.MetadataName`1[System.Nullable`1[int]],byref):ubyte:this (FullOpts) Top method regressions (percentages): 59 (38.56 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this (FullOpts) 33 (35.87 % of base) : System.Private.CoreLib.dasm - System.Progress`1[System.Nullable`1[int]]:InvokeHandlers(System.Object):this (FullOpts) 91 (31.93 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) 20 (23.53 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[System.Nullable`1[int],System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 20 (23.53 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.Nullable`1[int],System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 20 (19.61 % of base) : System.Text.RegularExpressions.dasm - System.Collections.HashtableExtensions:TryGetValue[System.Nullable`1[int]](System.Collections.Hashtable,System.Object,byref):ubyte (FullOpts) 10 (18.52 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass10_0[System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 10 (18.52 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1+<>c__DisplayClass15_0[System.Nullable`1[int]]:b__0(System.Object,System.Object):ubyte:this (FullOpts) 10 (17.54 % of base) : System.Private.CoreLib.dasm - System.Resources.ResourceReader+<>c__DisplayClass7_0`1[System.Nullable`1[int]]:b__0(System.Object,System.IO.Stream):System.Object:this (FullOpts) 8 (13.11 % of base) : Microsoft.VisualBasic.Core.dasm - Microsoft.VisualBasic.CompilerServices.Conversions:ToGenericParameter[System.Nullable`1[int]](System.Object):System.Nullable`1[int] (FullOpts) 22 (12.43 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsComInterface(System.String[],System.Object[],int,System.Reflection.Emit.MarshallingData) (FullOpts) 15 (12.40 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[System.Nullable`1[int],System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 151 (11.68 % of base) : System.Reflection.Emit.dasm - System.Reflection.Emit.MarshallingData:DecodeMarshalAsArray(System.String[],System.Object[],ubyte,System.Reflection.Emit.MarshallingData) (FullOpts) 8 (10.13 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+ValueTypedFetchProperty`2[System.Nullable`1[int],System.Nullable`1[int]]:Fetch(System.Object):System.Object:this (FullOpts) 8 (10.13 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass11_0`2[System.Nullable`1[int],System.Nullable`1[int]]:b__0(System.Object):System.Object:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[double,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[int,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[long,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[short,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[System.__Canon,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[System.Nullable`1[int],System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 12 (9.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass19_0`1[ubyte,System.Nullable`1[int]]:b__1(System.Object,System.Object):int:this (FullOpts) 16 (9.30 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.EqualityComparer`1[System.Nullable`1[int]]:System.Collections.IEqualityComparer.Equals(System.Object,System.Object):ubyte:this (FullOpts) 16 (8.99 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Comparer`1[System.Nullable`1[int]]:System.Collections.IComparer.Compare(System.Object,System.Object):int:this (FullOpts) 31 (8.96 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) 30 (7.06 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) 7 (6.67 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.EqualityComparer`1[System.Nullable`1[int]]:System.Collections.IEqualityComparer.GetHashCode(System.Object):int:this (FullOpts) 7 (6.60 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.IntSwitchInstruction`1[System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 7 (6.48 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:System.ComponentModel.IBindingList.AddNew():System.Object:this (FullOpts) 4 (6.45 % of base) : Microsoft.Extensions.Hosting.dasm - Microsoft.Extensions.Hosting.HostApplicationBuilder+<>c__DisplayClass30_0`1[System.Nullable`1[int]]:b__1(System.Object):this (FullOpts) 9 (6.12 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonParameterInfo`1[System.Nullable`1[int]]:.ctor(System.Text.Json.Serialization.Metadata.JsonParameterInfoValues,System.Text.Json.Serialization.Metadata.JsonPropertyInfo`1[System.Nullable`1[int]]):this (FullOpts) 8 (5.93 % of base) : System.Composition.Runtime.dasm - System.Composition.CompositionContext:TryGetExport[System.Nullable`1[int]](byref):ubyte:this (FullOpts) 7 (5.79 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[double,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 7 (5.74 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[double,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 16 (5.67 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[System.Nullable`1[int],System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 55 (5.57 % of base) : Microsoft.Extensions.Caching.Abstractions.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions+d__11`1[System.Nullable`1[int]]:MoveNext():this (FullOpts) 7 (5.26 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.Contains(System.Object):ubyte:this (FullOpts) 4 (5.26 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Diagnostics.DiagnosticSourceEventSource+TransformSpec+PropertySpec+PropertyFetch+RefTypedFetchProperty`2[System.Nullable`1[int],System.Nullable`1[int]]:Fetch(System.Object):System.Object:this (FullOpts) 4 (5.26 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass11_1`2[System.Nullable`1[int],System.Nullable`1[int]]:b__1(System.Object):System.Object:this (FullOpts) 7 (5.22 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 7 (5.19 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 8 (5.10 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.NumericConvertInstruction:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 8 (5.06 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:MoveNext():ubyte:this (FullOpts) 26 (4.95 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:ToList():System.Collections.Generic.List`1[System.Nullable`1[int]]:this (FullOpts) 4 (4.82 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ConvertHelper:ToInt32NoNull(System.Object):int (FullOpts) 8 (4.76 % of base) : System.Composition.Runtime.dasm - System.Composition.CompositionContext:TryGetExport[System.Nullable`1[int]](System.String,byref):ubyte:this (FullOpts) 8 (4.76 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__4(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts) 8 (4.76 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__7(System.Data.DataRow,System.Data.DataRow):int:this (FullOpts) 7 (4.64 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[int,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[short,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.58 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[ubyte,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.55 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[long,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.40 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[double,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 7 (4.37 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__2(System.Data.DataRow):ubyte:this (FullOpts) 7 (4.29 % of base) : System.Text.Json.dasm - System.Text.Json.JsonSerializer:ResolveReferenceId[System.Nullable`1[int]](byref):System.Nullable`1[int] (FullOpts) 4 (4.08 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.ReflectionReader+<>c__41`1[System.Nullable`1[int]]:b__41_5(System.Object,System.Object,int):System.Object:this (FullOpts) 7 (3.95 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataViewGenerator:CreateMetadataView[System.Nullable`1[int]](System.ComponentModel.Composition.MetadataViewGenerator+MetadataViewFactory,System.Collections.Generic.IDictionary`2[System.String,System.Object]):System.Nullable`1[int] (FullOpts) 4 (3.60 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[int,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 4 (3.57 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[ubyte,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 4 (3.54 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[int,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 4 (3.54 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[long,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 4 (3.54 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[long,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 4 (3.54 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[short,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 4 (3.51 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[short,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 4 (3.51 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[ubyte,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 4 (3.23 % of base) : System.Private.Xml.dasm - System.Xml.Serialization.ReflectionXmlSerializationReaderHelper+<>c__DisplayClass1_0`2[System.__Canon,System.Nullable`1[int]]:b__0(System.Object,System.Object):this (FullOpts) 8 (3.19 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetFirst(byref):System.Nullable`1[int]:this (FullOpts) 8 (3.16 % of base) : System.Formats.Nrbf.dasm - System.Formats.Nrbf.RectangularArrayRecord:g__CopyTo|16_0[System.Nullable`1[int]](System.Collections.Generic.ICollection`1[System.Object],System.Array) (FullOpts) 4 (3.15 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_1`2[System.__Canon,System.Nullable`1[int]]:b__1(byref,System.Object):this (FullOpts) 7 (3.08 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.ReflectionMemberAccessor+<>c__DisplayClass2_0`1[System.Nullable`1[int]]:b__0(System.Object[]):System.Nullable`1[int]:this (FullOpts) 22 (3.07 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:Child_PropertyChanged(System.Object,System.ComponentModel.PropertyChangedEventArgs):this (FullOpts) 10 (3.04 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:ToArray():System.Nullable`1[int][]:this (FullOpts) 8 (2.75 % of base) : System.Linq.dasm - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetElementAt(int,byref):System.Nullable`1[int]:this (FullOpts) 8 (2.68 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__0(System.Data.DataRow):ubyte:this (FullOpts) 4 (2.68 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[System.__Canon,System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 26 (2.68 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:ToArray():System.Nullable`1[int][]:this (FullOpts) 4 (2.67 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__5(System.Object,System.Data.DataRow):int:this (FullOpts) 4 (2.67 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__8(System.Object,System.Data.DataRow):int:this (FullOpts) 4 (2.50 % of base) : System.Data.Common.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[System.Nullable`1[int]]:b__1(System.Data.DataRow):ubyte:this (FullOpts) 7 (2.46 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:TryGetFirst(byref):System.Nullable`1[int]:this (FullOpts) 4 (2.44 % of base) : System.Private.DataContractSerialization.dasm - System.Runtime.Serialization.FastInvokerBuilder+<>c__DisplayClass12_0`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:b__0(byref,System.Object):this (FullOpts) 4 (2.40 % of base) : System.Collections.Immutable.dasm - System.Collections.Frozen.FrozenDictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:System.Collections.IDictionary.get_Item(System.Object):System.Object:this (FullOpts) 7 (2.31 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.XmlSyndicationContent:ReadContent[System.Nullable`1[int]](System.Runtime.Serialization.XmlObjectSerializer):System.Nullable`1[int]:this (FullOpts) 4 (2.27 % of base) : System.ComponentModel.TypeConverter.dasm - System.ComponentModel.BindingList`1[System.Nullable`1[int]]:AddNewCore():System.Object:this (FullOpts) 7 (2.19 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 7 (2.17 % of base) : System.Linq.dasm - System.Linq.Enumerable+OfTypeIterator`1[System.Nullable`1[int]]:TryGetElementAt(int,byref):System.Nullable`1[int]:this (FullOpts) 7 (2.10 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.Nullable`1[int]](System.Runtime.Serialization.XmlObjectSerializer):System.Nullable`1[int]:this (FullOpts) 12 (2.06 % of base) : System.Composition.Runtime.dasm - System.Composition.Hosting.Core.CompositionContract:TryUnwrapMetadataConstraint[System.Nullable`1[int]](System.String,byref,byref):ubyte:this (FullOpts) 33 (2.02 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.JsonCollectionConverter`2[System.Nullable`1[int],System.Nullable`1[int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts) 4 (1.99 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]:System.Collections.IList.IndexOf(System.Object):int:this (FullOpts) 4 (1.98 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1[System.Nullable`1[int]]:System.Collections.IList.Contains(System.Object):ubyte:this (FullOpts) 7 (1.91 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.XmlSyndicationContent:ReadContent[System.Nullable`1[int]](System.Xml.Serialization.XmlSerializer):System.Nullable`1[int]:this (FullOpts) 4 (1.75 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`1[System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 7 (1.67 % of base) : System.ServiceModel.Syndication.dasm - System.ServiceModel.Syndication.SyndicationElementExtension:GetObject[System.Nullable`1[int]](System.Xml.Serialization.XmlSerializer):System.Nullable`1[int]:this (FullOpts) 4 (1.37 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.FuncCallInstruction`2[System.Nullable`1[int],System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[int,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[long,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[short,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) 4 (1.32 % of base) : System.Linq.Expressions.dasm - System.Linq.Expressions.Interpreter.ActionCallInstruction`2[ubyte,System.Nullable`1[int]]:Run(System.Linq.Expressions.Interpreter.InterpretedFrame):int:this (FullOpts) Top method improvements (percentages): -4 (-2.82 % of base) : Microsoft.Extensions.Caching.Abstractions.dasm - Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.Nullable`1[int]](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):ubyte (FullOpts) -4 (-2.68 % of base) : System.ComponentModel.Composition.dasm - System.ComponentModel.Composition.MetadataServices:GetValue[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String):System.Nullable`1[int] (FullOpts) -18 (-1.45 % of base) : System.Text.Json.dasm - System.Text.Json.JsonException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) -1 (-0.76 % of base) : System.Threading.RateLimiting.dasm - System.Threading.RateLimiting.RateLimitLease:TryGetMetadata[System.Nullable`1[int]](System.Threading.RateLimiting.MetadataName`1[System.Nullable`1[int]],byref):ubyte:this (FullOpts) -1 (-0.48 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ExportFactory.ExportFactoryExportDescriptorProvider+<>c__DisplayClass2_3`1[System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) -1 (-0.45 % of base) : System.Composition.Hosting.dasm - System.Composition.Hosting.Providers.ExportFactory.ExportFactoryWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) 122 total methods with Code Size differences (6 improved, 116 regressed), 230502 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 1 month ago

Top method regressions

151 (11.68 % of base) - System.Reflection.Emit.MarshallingData:DecodeMarshalAsArray(System.String[],System.Object[],ubyte,System.Reflection.Emit.MarshallingData) ```diff ; Assembly listing for method System.Reflection.Emit.MarshallingData:DecodeMarshalAsArray(System.String[],System.Object[],ubyte,System.Reflection.Emit.MarshallingData) (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 7 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 6, 7 ) ref -> r15 class-hnd single-def ; V01 arg1 [V01,T05] ( 13, 14.62) ref -> rbx class-hnd single-def -; V02 arg2 [V02,T15] ( 3, 3 ) ubyte -> rdx single-def -; V03 arg3 [V03,T12] ( 6, 4 ) ref -> r14 class-hnd single-def +; V02 arg2 [V02,T19] ( 3, 3 ) ubyte -> rdx single-def +; V03 arg3 [V03,T12] ( 6, 4 ) ref -> [rbp-0x78] class-hnd single-def ;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op -; V05 loc1 [V05 ] ( 7, 7.50) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed -; V06 loc2 [V06 ] ( 4, 5.50) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed ld-addr-op +;* V05 loc1 [V05 ] ( 0, 0 ) struct ( 8) zero-ref +;* V06 loc2 [V06 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ;* V07 loc3 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op -; V08 loc4 [V08,T00] ( 16, 53.24) int -> [rbp-0x3C] -; V09 loc5 [V09,T01] ( 32, 32 ) ref -> r9 class-hnd exact +; V08 loc4 [V08,T00] ( 16, 53.24) int -> [rbp-0x2C] +; V09 loc5 [V09,T01] ( 32, 32 ) ref -> rsi class-hnd exact ;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" ;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ; V13 tmp3 [V13,T02] ( 8, 26 ) ref -> r13 "inline UNBOX clone1" -; V14 tmp4 [V14,T34] ( 2, 0 ) ref -> rbx -; V15 tmp5 [V15,T35] ( 2, 0 ) ref -> r15 -;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref +; V14 tmp4 [V14 ] ( 6, 24 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed "Nullable tmp" +; V15 tmp5 [V15,T38] ( 2, 0 ) ref -> rbx +; V16 tmp6 [V16,T39] ( 2, 0 ) ref -> r15 ;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref -; V18 tmp8 [V18,T36] ( 2, 0 ) ref -> r14 -; V19 tmp9 [V19,T33] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" -;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" -; V21 tmp11 [V21,T07] ( 4, 8 ) int -> r10 "spilling unroll qmark" +;* V18 tmp8 [V18 ] ( 0, 0 ) ref -> zero-ref +; V19 tmp9 [V19,T40] ( 2, 0 ) ref -> r14 +; V20 tmp10 [V20,T37] ( 3, 0 ) ref -> r13 class-hnd exact "NewObj constructor temp" +; V21 tmp11 [V21 ] ( 6, 24 ) struct ( 8) [rbp-0x40] do-not-enreg[XS] addr-exposed "Nullable tmp" ;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" -; V23 tmp13 [V23,T08] ( 4, 8 ) int -> r11 "spilling unroll qmark" +; V23 tmp13 [V23,T07] ( 4, 8 ) int -> registers "spilling unroll qmark" ;* V24 tmp14 [V24 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" -; V25 tmp15 [V25,T09] ( 4, 8 ) int -> rdi "spilling unroll qmark" +; V25 tmp15 [V25,T08] ( 4, 8 ) int -> registers "spilling unroll qmark" ;* V26 tmp16 [V26 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" -; V27 tmp17 [V27,T10] ( 4, 8 ) int -> rsi "spilling unroll qmark" -;* V28 tmp18 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V29 tmp19 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" -;* V30 tmp20 [V30 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" -; V31 tmp21 [V31,T19] ( 2, 1 ) int -> r12 "Inline return value spill temp" -; V32 tmp22 [V32,T20] ( 2, 1 ) int -> rdx "Inline return value spill temp" -; V33 tmp23 [V33,T13] ( 5, 6 ) ubyte -> r13 "field V04.hasValue (fldOffset=0x0)" P-INDEP -; V34 tmp24 [V34,T14] ( 5, 6 ) int -> r12 "field V04.value (fldOffset=0x4)" P-INDEP -;* V35 tmp25 [V35 ] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP -;* V36 tmp26 [V36 ] ( 0, 0 ) int -> zero-ref "field V07.value (fldOffset=0x4)" P-INDEP -;* V37 tmp27 [V37,T23] ( 0, 0 ) ubyte -> zero-ref "field V11.hasValue (fldOffset=0x0)" P-INDEP -;* V38 tmp28 [V38,T24] ( 0, 0 ) int -> zero-ref "field V11.value (fldOffset=0x4)" P-INDEP -; V39 tmp29 [V39,T17] ( 3, 2 ) ubyte -> rsi "field V12.hasValue (fldOffset=0x0)" P-INDEP -; V40 tmp30 [V40,T18] ( 3, 2 ) int -> rdi "field V12.value (fldOffset=0x4)" P-INDEP -;* V41 tmp31 [V41 ] ( 0, 0 ) ubyte -> zero-ref "field V29.hasValue (fldOffset=0x0)" P-INDEP -;* V42 tmp32 [V42 ] ( 0, 0 ) int -> zero-ref "field V29.value (fldOffset=0x4)" P-INDEP -; V43 tmp33 [V43,T21] ( 2, 1 ) ubyte -> rcx "field V30.hasValue (fldOffset=0x0)" P-INDEP -; V44 tmp34 [V44,T22] ( 2, 1 ) int -> rdx "field V30.value (fldOffset=0x4)" P-INDEP -; V45 tmp35 [V45,T37] ( 2, 0 ) ref -> rbx "argument with side effect" -; V46 tmp36 [V46,T38] ( 2, 0 ) ref -> rdx "argument with side effect" -; V47 tmp37 [V47,T16] ( 3, 3 ) struct ( 8) [rbp-0x48] do-not-enreg[SF] "by-value struct argument" -; V48 cse0 [V48,T04] ( 5, 18.25) int -> [rbp-0x4C] spill-single-def "CSE #01: aggressive" -; V49 cse1 [V49,T11] ( 6, 7 ) int -> [rbp-0x50] spill-single-def "CSE #07: moderate" -; V50 cse2 [V50,T03] ( 5, 19.80) long -> r8 "CSE #04: aggressive" -; V51 rat0 [V51,T25] ( 3, 11.88) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V52 rat1 [V52,T26] ( 3, 11.88) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V53 rat2 [V53,T27] ( 3, 11.88) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V54 rat3 [V54,T28] ( 3, 11.88) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V55 rat4 [V55,T29] ( 3, 0.12) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V56 rat5 [V56,T30] ( 3, 0.12) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V57 rat6 [V57,T31] ( 3, 0.12) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" -; V58 rat7 [V58,T32] ( 3, 0.12) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V27 tmp17 [V27,T09] ( 4, 8 ) int -> registers "spilling unroll qmark" +;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref "spilling varStr" +; V29 tmp19 [V29,T10] ( 4, 8 ) int -> rsi "spilling unroll qmark" +;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V31 tmp21 [V31 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" +;* V32 tmp22 [V32 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" +; V33 tmp23 [V33,T25] ( 2, 1 ) int -> r12 "Inline return value spill temp" +; V34 tmp24 [V34,T26] ( 2, 1 ) int -> rdx "Inline return value spill temp" +; V35 tmp25 [V35,T13] ( 5, 6 ) ubyte -> r13 "field V04.hasValue (fldOffset=0x0)" P-INDEP +; V36 tmp26 [V36,T14] ( 5, 6 ) int -> r12 "field V04.value (fldOffset=0x4)" P-INDEP +; V37 tmp27 [V37,T15] ( 5, 6 ) ubyte -> [rbp-0x44] "field V05.hasValue (fldOffset=0x0)" P-INDEP +; V38 tmp28 [V38,T16] ( 5, 6 ) int -> [rbp-0x48] "field V05.value (fldOffset=0x4)" P-INDEP +; V39 tmp29 [V39,T17] ( 4, 5.50) ubyte -> [rbp-0x4C] "field V06.hasValue (fldOffset=0x0)" P-INDEP +; V40 tmp30 [V40,T18] ( 4, 5.50) short -> [rbp-0x50] "field V06.value (fldOffset=0x2)" P-INDEP +;* V41 tmp31 [V41 ] ( 0, 0 ) ubyte -> zero-ref "field V07.hasValue (fldOffset=0x0)" P-INDEP +;* V42 tmp32 [V42 ] ( 0, 0 ) int -> zero-ref "field V07.value (fldOffset=0x4)" P-INDEP +;* V43 tmp33 [V43,T27] ( 0, 0 ) ubyte -> zero-ref "field V11.hasValue (fldOffset=0x0)" P-INDEP +;* V44 tmp34 [V44,T28] ( 0, 0 ) int -> zero-ref "field V11.value (fldOffset=0x4)" P-INDEP +; V45 tmp35 [V45,T23] ( 3, 2 ) ubyte -> rcx "field V12.hasValue (fldOffset=0x0)" P-INDEP +; V46 tmp36 [V46,T24] ( 3, 2 ) int -> rdx "field V12.value (fldOffset=0x4)" P-INDEP +; V47 tmp37 [V47 ] ( 4, 12 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP +; V48 tmp38 [V48 ] ( 4, 12 ) int -> [rbp-0x34] do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP +; V49 tmp39 [V49 ] ( 4, 12 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V21.hasValue (fldOffset=0x0)" P-DEP +; V50 tmp40 [V50 ] ( 4, 12 ) short -> [rbp-0x3E] do-not-enreg[X] addr-exposed "field V21.value (fldOffset=0x2)" P-DEP +;* V51 tmp41 [V51 ] ( 0, 0 ) ubyte -> zero-ref "field V31.hasValue (fldOffset=0x0)" P-INDEP +;* V52 tmp42 [V52 ] ( 0, 0 ) int -> zero-ref "field V31.value (fldOffset=0x4)" P-INDEP +;* V53 tmp43 [V53 ] ( 0, 0 ) ubyte -> zero-ref "field V32.hasValue (fldOffset=0x0)" P-INDEP +;* V54 tmp44 [V54 ] ( 0, 0 ) int -> zero-ref "field V32.value (fldOffset=0x4)" P-INDEP +; V55 tmp45 [V55,T41] ( 2, 0 ) ref -> rbx "argument with side effect" +; V56 tmp46 [V56,T42] ( 2, 0 ) ref -> rdx "argument with side effect" +; V57 tmp47 [V57,T20] ( 3, 3 ) struct ( 8) [rbp-0x58] do-not-enreg[SF] "by-value struct argument" +; V58 tmp48 [V58,T21] ( 3, 3 ) struct ( 8) [rbp-0x60] do-not-enreg[SF] "by-value struct argument" +; V59 tmp49 [V59,T22] ( 3, 3 ) struct ( 8) [rbp-0x68] do-not-enreg[SF] "by-value struct argument" +; V60 cse0 [V60,T04] ( 5, 18.25) int -> [rbp-0x6C] spill-single-def "CSE #01: aggressive" +; V61 cse1 [V61,T11] ( 6, 7 ) int -> [rbp-0x70] spill-single-def "CSE #07: moderate" +; V62 cse2 [V62,T03] ( 5, 19.80) long -> rdi "CSE #04: aggressive" +; V63 rat0 [V63,T29] ( 3, 11.88) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V64 rat1 [V64,T30] ( 3, 11.88) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V65 rat2 [V65,T31] ( 3, 11.88) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V66 rat3 [V66,T32] ( 3, 11.88) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V67 rat4 [V67,T33] ( 3, 0.12) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V68 rat5 [V68,T34] ( 3, 0.12) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V69 rat6 [V69,T35] ( 3, 0.12) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable" +; V70 rat7 [V70,T36] ( 3, 0.12) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable" ; -; Lcl frame size = 40 +; Lcl frame size = 88 G_M2973_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 40 - lea rbp, [rsp+0x50] + sub rsp, 88 + lea rbp, [rsp+0x80] + mov gword ptr [rbp-0x78], rcx mov r15, rdi mov rbx, rsi - mov r14, rcx - ;; size=28 bbWeight=1 PerfScore 7.50 + ;; size=32 bbWeight=1 PerfScore 8.25 G_M2973_IG02: xor r13d, r13d xor r12d, r12d movzx rax, dl - mov dword ptr [rbp-0x50], eax + mov dword ptr [rbp-0x70], eax test eax, eax jne SHORT G_M2973_IG04 ;; size=16 bbWeight=1 PerfScore 3.00 G_M2973_IG03: - xor esi, esi - xor edi, edi + xor ecx, ecx + xor edx, edx jmp SHORT G_M2973_IG05 ;; size=6 bbWeight=0.50 PerfScore 1.25 G_M2973_IG04: - mov esi, 1 - mov edi, 1 + mov ecx, 1 + mov edx, 1 ;; size=10 bbWeight=0.50 PerfScore 0.25 G_M2973_IG05: - mov byte ptr [rbp-0x30], sil - mov dword ptr [rbp-0x2C], edi - xor esi, esi - mov dword ptr [rbp-0x38], esi - ;; size=12 bbWeight=1 PerfScore 3.25 -G_M2973_IG06: - xor ecx, ecx - mov edx, dword ptr [r15+0x08] - mov dword ptr [rbp-0x4C], edx - test edx, edx + mov byte ptr [rbp-0x44], cl + mov dword ptr [rbp-0x48], edx + mov byte ptr [rbp-0x4C], 0 + mov word ptr [rbp-0x50], 0 + xor r10d, r10d + mov r11d, dword ptr [r15+0x08] + mov dword ptr [rbp-0x6C], r11d + test r11d, r11d jle G_M2973_IG27 - ;; size=17 bbWeight=1 PerfScore 4.50 -G_M2973_IG07: + ;; size=36 bbWeight=1 PerfScore 8.50 +G_M2973_IG06: test rbx, rbx - je G_M2973_IG30 - cmp dword ptr [rbx+0x08], edx - jl G_M2973_IG17 - ;; size=18 bbWeight=0.25 PerfScore 1.31 -G_M2973_IG08: - mov dword ptr [rbp-0x3C], ecx - mov r8d, ecx - mov r9, gword ptr [r15+8*r8+0x10] - test r9, r9 + je G_M2973_IG17 + cmp dword ptr [rbx+0x08], r11d + jl G_M2973_IG16 + ;; size=19 bbWeight=0.25 PerfScore 1.31 +G_M2973_IG07: + mov dword ptr [rbp-0x2C], r10d + mov edi, r10d + mov rsi, gword ptr [r15+8*rdi+0x10] + test rsi, rsi je G_M2973_IG18 - ;; size=20 bbWeight=3.96 PerfScore 17.82 -G_M2973_IG09: - cmp dword ptr [r9+0x08], 12 + ;; size=21 bbWeight=3.96 PerfScore 17.82 +G_M2973_IG08: + cmp dword ptr [rsi+0x08], 12 jne G_M2973_IG18 - ;; size=11 bbWeight=0.99 PerfScore 3.96 -G_M2973_IG10: - vmovups xmm0, xmmword ptr [r9+0x0C] - vmovups xmm1, xmmword ptr [r9+0x14] + ;; size=10 bbWeight=0.99 PerfScore 3.96 +G_M2973_IG09: + vmovups xmm0, xmmword ptr [rsi+0x0C] + vmovups xmm1, xmmword ptr [rsi+0x14] vpxor xmm1, xmm1, xmmword ptr [reloc @RWD00] vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD16], -34 vptest xmm0, xmm0 - sete r10b - movzx r10, r10b - test r10d, r10d + sete r14b + movzx r14, r14b + test r14d, r14d jne G_M2973_IG21 - ;; size=53 bbWeight=1.98 PerfScore 34.65 -G_M2973_IG11: - cmp dword ptr [r9+0x08], 9 + ;; size=51 bbWeight=1.98 PerfScore 34.65 +G_M2973_IG10: + cmp dword ptr [rsi+0x08], 9 jne G_M2973_IG19 - ;; size=11 bbWeight=0.99 PerfScore 3.96 -G_M2973_IG12: - vmovups xmm0, xmmword ptr [r9+0x0C] - vmovups xmm1, xmmword ptr [r9+0x0E] + ;; size=10 bbWeight=0.99 PerfScore 3.96 +G_M2973_IG11: + vmovups xmm0, xmmword ptr [rsi+0x0C] + vmovups xmm1, xmmword ptr [rsi+0x0E] vpxor xmm1, xmm1, xmmword ptr [reloc @RWD32] vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD48], -34 vptest xmm0, xmm0 - sete r11b - movzx r11, r11b - test r11d, r11d + sete r14b + movzx r14, r14b + test r14d, r14d jne G_M2973_IG24 - ;; size=53 bbWeight=1.98 PerfScore 34.65 -G_M2973_IG13: - cmp dword ptr [r9+0x08], 14 + ;; size=51 bbWeight=1.98 PerfScore 34.65 +G_M2973_IG12: + cmp dword ptr [rsi+0x08], 14 jne G_M2973_IG20 - ;; size=11 bbWeight=0.99 PerfScore 3.96 -G_M2973_IG14: - vmovups xmm0, xmmword ptr [r9+0x0C] - vmovups xmm1, xmmword ptr [r9+0x18] + ;; size=10 bbWeight=0.99 PerfScore 3.96 +G_M2973_IG13: + vmovups xmm0, xmmword ptr [rsi+0x0C] + vmovups xmm1, xmmword ptr [rsi+0x18] vpxor xmm1, xmm1, xmmword ptr [reloc @RWD64] vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD80], -34 vptest xmm0, xmm0 - sete dil - movzx rdi, dil - test edi, edi + sete r14b + movzx r14, r14b + test r14d, r14d jne G_M2973_IG25 - ;; size=52 bbWeight=1.98 PerfScore 34.65 -G_M2973_IG15: - cmp dword ptr [r9+0x08], 16 + ;; size=51 bbWeight=1.98 PerfScore 34.65 +G_M2973_IG14: + cmp dword ptr [rsi+0x08], 16 jne G_M2973_IG26 - ;; size=11 bbWeight=0.99 PerfScore 3.96 -G_M2973_IG16: - vmovups ymm0, ymmword ptr [r9+0x0C] + ;; size=10 bbWeight=0.99 PerfScore 3.96 +G_M2973_IG15: + vmovups ymm0, ymmword ptr [rsi+0x0C] vpxor ymm0, ymm0, ymmword ptr [reloc @RWD96] vptest ymm0, ymm0 sete sil movzx rsi, sil test esi, esi - jne G_M2973_IG52 + jne G_M2973_IG53 jmp G_M2973_IG26 - ;; size=40 bbWeight=1.98 PerfScore 32.67 + ;; size=39 bbWeight=1.98 PerfScore 32.67 +G_M2973_IG16: + mov r11d, dword ptr [rbp-0x6C] + mov r14, gword ptr [rbp-0x78] + jmp G_M2973_IG30 + ;; size=13 bbWeight=0.12 PerfScore 0.50 G_M2973_IG17: - mov edx, dword ptr [rbp-0x4C] + mov r14, gword ptr [rbp-0x78] jmp G_M2973_IG30 - ;; size=8 bbWeight=0.12 PerfScore 0.38 + ;; size=9 bbWeight=0.12 PerfScore 0.38 G_M2973_IG18: - test r9, r9 - jne G_M2973_IG11 + test rsi, rsi + jne G_M2973_IG10 ;; size=9 bbWeight=1.98 PerfScore 2.48 G_M2973_IG19: - test r9, r9 - jne G_M2973_IG13 + test rsi, rsi + jne G_M2973_IG12 ;; size=9 bbWeight=1.98 PerfScore 2.48 G_M2973_IG20: - test r9, r9 - je SHORT G_M2973_IG26 - jmp SHORT G_M2973_IG15 - ;; size=7 bbWeight=1.98 PerfScore 6.44 + test rsi, rsi + je G_M2973_IG26 + jmp SHORT G_M2973_IG14 + ;; size=11 bbWeight=1.98 PerfScore 6.44 G_M2973_IG21: - mov r13, gword ptr [rbx+8*r8+0x10] + mov r13, gword ptr [rbx+8*rdi+0x10] mov rsi, 0xD1FFAB1E ; System.Runtime.InteropServices.UnmanagedType cmp qword ptr [r13], rsi je SHORT G_M2973_IG23 ;; size=21 bbWeight=3.96 PerfScore 24.75 G_M2973_IG22: mov rsi, r13 mov rdi, 0xD1FFAB1E ; System.Runtime.InteropServices.UnmanagedType - mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX - call [r8]CORINFO_HELP_UNBOX - ;; size=26 bbWeight=0.99 PerfScore 3.71 + mov r12, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX + call [r12]CORINFO_HELP_UNBOX + ;; size=27 bbWeight=0.99 PerfScore 3.71 G_M2973_IG23: mov r12d, dword ptr [r13+0x08] mov r13d, 1 jmp SHORT G_M2973_IG26 ;; size=12 bbWeight=3.96 PerfScore 16.83 G_M2973_IG24: - mov rdx, gword ptr [rbx+8*r8+0x10] - lea rdi, [rbp-0x30] + mov rdx, gword ptr [rbx+8*rdi+0x10] + lea rdi, [rbp-0x38] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE + movzx rcx, byte ptr [rbp-0x38] + mov byte ptr [rbp-0x44], cl + mov edx, dword ptr [rbp-0x34] + mov dword ptr [rbp-0x48], edx jmp SHORT G_M2973_IG26 - ;; size=26 bbWeight=3.96 PerfScore 22.77 + ;; size=39 bbWeight=3.96 PerfScore 38.61 G_M2973_IG25: - cmp dword ptr [rbp-0x50], 0 - jne G_M2973_IG52 - mov rdx, gword ptr [rbx+8*r8+0x10] - lea rdi, [rbp-0x38] + cmp dword ptr [rbp-0x70], 0 + jne G_M2973_IG53 + mov rdx, gword ptr [rbx+8*rdi+0x10] + lea rdi, [rbp-0x40] mov rsi, 0xD1FFAB1E ; System.Nullable`1[short] call CORINFO_HELP_UNBOX_NULLABLE - ;; size=34 bbWeight=3.96 PerfScore 26.73 + movzx r8, byte ptr [rbp-0x40] + mov byte ptr [rbp-0x4C], r8b + movsx r9, word ptr [rbp-0x3E] + mov word ptr [rbp-0x50], r9w + ;; size=53 bbWeight=3.96 PerfScore 50.49 G_M2973_IG26: - mov ecx, dword ptr [rbp-0x3C] - inc ecx - mov edx, dword ptr [rbp-0x4C] - cmp edx, ecx - jg G_M2973_IG08 - ;; size=16 bbWeight=15.84 PerfScore 55.44 + mov r10d, dword ptr [rbp-0x2C] + inc r10d + mov r11d, dword ptr [rbp-0x6C] + cmp r11d, r10d + jg G_M2973_IG07 + ;; size=20 bbWeight=15.84 PerfScore 55.44 G_M2973_IG27: - cmp dword ptr [rbp-0x50], 0 - je G_M2973_IG50 + cmp dword ptr [rbp-0x70], 0 + je G_M2973_IG51 ;; size=10 bbWeight=1 PerfScore 3.00 G_M2973_IG28: - movzx rcx, byte ptr [rbp-0x30] - mov edx, dword ptr [rbp-0x2C] + mov r14, gword ptr [rbp-0x78] mov dword ptr [r14+0x18], 30 - mov esi, -1 + mov r10d, -1 test r13b, r13b - cmove r12d, esi + cmove r12d, r10d mov dword ptr [r14+0x1C], r12d - test ecx, ecx - cmove edx, esi + cmp byte ptr [rbp-0x44], 0 + mov edx, r10d + cmovne edx, dword ptr [rbp-0x48] mov dword ptr [r14+0x20], edx - ;; size=40 bbWeight=0.50 PerfScore 3.12 + ;; size=44 bbWeight=0.50 PerfScore 4.50 G_M2973_IG29: vzeroupper - add rsp, 40 + add rsp, 88 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.62 G_M2973_IG30: - mov esi, ecx - mov r9, gword ptr [r15+8*rsi+0x10] - test r9, r9 - je G_M2973_IG42 - ;; size=16 bbWeight=0.04 PerfScore 0.14 + mov esi, r10d + mov rsi, gword ptr [r15+8*rsi+0x10] + test rsi, rsi + je G_M2973_IG43 + ;; size=17 bbWeight=0.04 PerfScore 0.14 G_M2973_IG31: - cmp dword ptr [r9+0x08], 12 - jne G_M2973_IG42 - ;; size=11 bbWeight=0.01 PerfScore 0.04 + cmp dword ptr [rsi+0x08], 12 + jne G_M2973_IG43 + ;; size=10 bbWeight=0.01 PerfScore 0.04 G_M2973_IG32: - vmovups xmm0, xmmword ptr [r9+0x0C] - vmovups xmm1, xmmword ptr [r9+0x14] + vmovups xmm0, xmmword ptr [rsi+0x0C] + vmovups xmm1, xmmword ptr [rsi+0x14] vpxor xmm1, xmm1, xmmword ptr [reloc @RWD00] vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD16], -34 vptest xmm0, xmm0 - sete r10b - movzx r10, r10b - test r10d, r10d - jne G_M2973_IG45 - ;; size=53 bbWeight=0.02 PerfScore 0.35 + sete dil + movzx rdi, dil + test edi, edi + jne G_M2973_IG46 + ;; size=50 bbWeight=0.02 PerfScore 0.35 G_M2973_IG33: - cmp dword ptr [r9+0x08], 9 - jne G_M2973_IG43 - ;; size=11 bbWeight=0.01 PerfScore 0.04 + cmp dword ptr [rsi+0x08], 9 + jne G_M2973_IG44 + ;; size=10 bbWeight=0.01 PerfScore 0.04 G_M2973_IG34: - vmovups xmm0, xmmword ptr [r9+0x0C] - vmovups xmm1, xmmword ptr [r9+0x0E] + vmovups xmm0, xmmword ptr [rsi+0x0C] + vmovups xmm1, xmmword ptr [rsi+0x0E] vpxor xmm1, xmm1, xmmword ptr [reloc @RWD32] vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD48], -34 vptest xmm0, xmm0 - sete r11b - movzx r11, r11b - test r11d, r11d - jne G_M2973_IG47 - ;; size=53 bbWeight=0.02 PerfScore 0.35 + sete dil + movzx rdi, dil + test edi, edi + jne G_M2973_IG48 + ;; size=50 bbWeight=0.02 PerfScore 0.35 G_M2973_IG35: - cmp dword ptr [r9+0x08], 14 - jne G_M2973_IG44 - ;; size=11 bbWeight=0.01 PerfScore 0.04 + cmp dword ptr [rsi+0x08], 14 + jne G_M2973_IG45 + ;; size=10 bbWeight=0.01 PerfScore 0.04 G_M2973_IG36: - vmovups xmm0, xmmword ptr [r9+0x0C] - vmovups xmm1, xmmword ptr [r9+0x18] + vmovups xmm0, xmmword ptr [rsi+0x0C] + vmovups xmm1, xmmword ptr [rsi+0x18] vpxor xmm1, xmm1, xmmword ptr [reloc @RWD64] vpternlogq xmm0, xmm1, xmmword ptr [reloc @RWD80], -34 vptest xmm0, xmm0 sete dil movzx rdi, dil test edi, edi - jne G_M2973_IG48 - ;; size=52 bbWeight=0.02 PerfScore 0.35 + jne G_M2973_IG49 + ;; size=50 bbWeight=0.02 PerfScore 0.35 G_M2973_IG37: - cmp dword ptr [r9+0x08], 16 + cmp dword ptr [rsi+0x08], 16 jne SHORT G_M2973_IG41 - ;; size=7 bbWeight=0.01 PerfScore 0.04 + ;; size=6 bbWeight=0.01 PerfScore 0.04 G_M2973_IG38: - vmovups ymm0, ymmword ptr [r9+0x0C] + vmovups ymm0, ymmword ptr [rsi+0x0C] vpxor ymm0, ymm0, ymmword ptr [reloc @RWD96] vptest ymm0, ymm0 sete sil movzx rsi, sil test esi, esi je SHORT G_M2973_IG41 - ;; size=31 bbWeight=0.02 PerfScore 0.29 + ;; size=30 bbWeight=0.02 PerfScore 0.29 G_M2973_IG39: - mov dword ptr [rbp-0x3C], ecx - jmp G_M2973_IG52 - ;; size=8 bbWeight=0.01 PerfScore 0.03 + mov dword ptr [rbp-0x2C], r10d + jmp G_M2973_IG53 + ;; size=9 bbWeight=0.01 PerfScore 0.03 G_M2973_IG40: mov r12d, dword ptr [r13+0x08] mov r13d, 1 - mov ecx, dword ptr [rbp-0x3C] - ;; size=13 bbWeight=0.04 PerfScore 0.13 + mov r10d, dword ptr [rbp-0x2C] + ;; size=14 bbWeight=0.04 PerfScore 0.13 G_M2973_IG41: - inc ecx - cmp edx, ecx - mov edx, dword ptr [rbp-0x4C] + inc r10d + cmp r11d, r10d + mov r11d, dword ptr [rbp-0x6C] jg G_M2973_IG30 - jmp G_M2973_IG27 - ;; size=18 bbWeight=0.16 PerfScore 0.72 + ;; size=16 bbWeight=0.16 PerfScore 0.40 G_M2973_IG42: - test r9, r9 + mov gword ptr [rbp-0x78], r14 + jmp G_M2973_IG27 + ;; size=9 bbWeight=0.08 PerfScore 0.24 +G_M2973_IG43: + test rsi, rsi jne G_M2973_IG33 ;; size=9 bbWeight=0.02 PerfScore 0.03 -G_M2973_IG43: - test r9, r9 +G_M2973_IG44: + test rsi, rsi jne G_M2973_IG35 ;; size=9 bbWeight=0.02 PerfScore 0.03 -G_M2973_IG44: - test r9, r9 +G_M2973_IG45: + test rsi, rsi je SHORT G_M2973_IG41 jmp SHORT G_M2973_IG37 ;; size=7 bbWeight=0.02 PerfScore 0.07 -G_M2973_IG45: - cmp ecx, dword ptr [rbx+0x08] - jae G_M2973_IG53 - mov dword ptr [rbp-0x3C], ecx - mov esi, ecx +G_M2973_IG46: + cmp r10d, dword ptr [rbx+0x08] + jae G_M2973_IG54 + mov dword ptr [rbp-0x2C], r10d + mov esi, r10d mov r13, gword ptr [rbx+8*rsi+0x10] mov rsi, 0xD1FFAB1E ; System.Runtime.InteropServices.UnmanagedType cmp qword ptr [r13], rsi je SHORT G_M2973_IG40 - ;; size=35 bbWeight=0.04 PerfScore 0.46 -G_M2973_IG46: + ;; size=38 bbWeight=0.04 PerfScore 0.46 +G_M2973_IG47: mov rsi, r13 mov rdi, 0xD1FFAB1E ; System.Runtime.InteropServices.UnmanagedType - mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX - call [r8]CORINFO_HELP_UNBOX - mov edx, dword ptr [rbp-0x4C] - jmp SHORT G_M2973_IG40 - ;; size=31 bbWeight=0.01 PerfScore 0.07 -G_M2973_IG47: - cmp ecx, dword ptr [rbx+0x08] - jae G_M2973_IG53 - mov dword ptr [rbp-0x3C], ecx - mov edi, ecx - mov rdx, gword ptr [rbx+8*rdi+0x10] - lea rdi, [rbp-0x30] + mov r12, 0xD1FFAB1E ; code for CORINFO_HELP_UNBOX + call [r12]CORINFO_HELP_UNBOX + mov r11d, dword ptr [rbp-0x6C] + jmp G_M2973_IG40 + ;; size=36 bbWeight=0.01 PerfScore 0.07 +G_M2973_IG48: + cmp r10d, dword ptr [rbx+0x08] + jae G_M2973_IG54 + mov dword ptr [rbp-0x2C], r10d + mov edx, r10d + mov rdx, gword ptr [rbx+8*rdx+0x10] + lea rdi, [rbp-0x38] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE - mov ecx, dword ptr [rbp-0x3C] - mov edx, dword ptr [rbp-0x4C] + movzx rcx, byte ptr [rbp-0x38] + mov byte ptr [rbp-0x44], cl + mov edx, dword ptr [rbp-0x34] + mov dword ptr [rbp-0x48], edx + mov r10d, dword ptr [rbp-0x2C] + mov r11d, dword ptr [rbp-0x6C] jmp G_M2973_IG41 - ;; size=49 bbWeight=0.04 PerfScore 0.52 -G_M2973_IG48: - cmp dword ptr [rbp-0x50], 0 - jne SHORT G_M2973_IG49 - cmp ecx, dword ptr [rbx+0x08] - jae G_M2973_IG53 - mov dword ptr [rbp-0x3C], ecx - mov edi, ecx + ;; size=67 bbWeight=0.04 PerfScore 0.68 +G_M2973_IG49: + cmp dword ptr [rbp-0x70], 0 + jne SHORT G_M2973_IG50 + cmp r10d, dword ptr [rbx+0x08] + jae G_M2973_IG54 + mov dword ptr [rbp-0x2C], r10d + mov edi, r10d mov rdx, gword ptr [rbx+8*rdi+0x10] - lea rdi, [rbp-0x38] + lea rdi, [rbp-0x40] mov rsi, 0xD1FFAB1E ; System.Nullable`1[short] call CORINFO_HELP_UNBOX_NULLABLE - mov ecx, dword ptr [rbp-0x3C] - mov edx, dword ptr [rbp-0x4C] + movzx r8, byte ptr [rbp-0x40] + movzx rsi, r8b + movsx r9, word ptr [rbp-0x3E] + movsx rdx, r9w + mov dword ptr [rbp-0x4C], esi + mov dword ptr [rbp-0x50], edx + mov r10d, dword ptr [rbp-0x2C] + mov r11d, dword ptr [rbp-0x6C] jmp G_M2973_IG41 - ;; size=55 bbWeight=0.04 PerfScore 0.64 -G_M2973_IG49: - mov dword ptr [rbp-0x3C], ecx - jmp SHORT G_M2973_IG52 - ;; size=5 bbWeight=0.02 PerfScore 0.06 + ;; size=84 bbWeight=0.04 PerfScore 0.90 G_M2973_IG50: - mov byte ptr [rbp-0x48], r13b - mov dword ptr [rbp-0x44], r12d - mov rsi, qword ptr [rbp-0x48] + mov dword ptr [rbp-0x2C], r10d + jmp SHORT G_M2973_IG53 + ;; size=6 bbWeight=0.02 PerfScore 0.06 +G_M2973_IG51: + mov r14, gword ptr [rbp-0x78] + mov byte ptr [rbp-0x58], r13b + mov dword ptr [rbp-0x54], r12d + movzx rcx, byte ptr [rbp-0x44] + mov byte ptr [rbp-0x60], cl + mov edx, dword ptr [rbp-0x48] + mov dword ptr [rbp-0x5C], edx + movzx r8, byte ptr [rbp-0x4C] + mov byte ptr [rbp-0x68], r8b + movsx r9, word ptr [rbp-0x50] + mov word ptr [rbp-0x66], r9w + mov rsi, qword ptr [rbp-0x58] + mov rdx, qword ptr [rbp-0x60] + mov ecx, dword ptr [rbp-0x68] mov rdi, r14 - mov rdx, qword ptr [rbp-0x30] - mov ecx, dword ptr [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Reflection.Emit.MarshallingData:SetMarshalAsArray(System.Nullable`1[int],System.Nullable`1[int],System.Nullable`1[short]):this cmp dword ptr [rdi], edi call [rax]System.Reflection.Emit.MarshallingData:SetMarshalAsArray(System.Nullable`1[int],System.Nullable`1[int],System.Nullable`1[short]):this nop - ;; size=37 bbWeight=0.50 PerfScore 5.88 -G_M2973_IG51: + ;; size=73 bbWeight=0.50 PerfScore 11.38 +G_M2973_IG52: vzeroupper - add rsp, 40 + add rsp, 88 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=18 bbWeight=0.50 PerfScore 2.62 -G_M2973_IG52: - mov rdx, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidParameterForUnmanagedType():System.String - call [rdx]System.SR:get_Argument_InvalidParameterForUnmanagedType():System.String +G_M2973_IG53: + mov rcx, 0xD1FFAB1E ; code for System.SR:get_Argument_InvalidParameterForUnmanagedType():System.String + call [rcx]System.SR:get_Argument_InvalidParameterForUnmanagedType():System.String mov rbx, rax - mov edi, dword ptr [rbp-0x3C] + mov edi, dword ptr [rbp-0x2C] mov r15, gword ptr [r15+8*rdi+0x10] mov r14, 0xD1FFAB1E ; 'ByValArray' mov rdi, 0xD1FFAB1E ; 'LPArray' - cmp dword ptr [rbp-0x50], 0 + cmp dword ptr [rbp-0x70], 0 cmove r14, rdi mov rdi, 0xD1FFAB1E ; System.ArgumentException call CORINFO_HELP_NEWSFAST mov r13, rax mov rdi, rbx mov rsi, r15 mov rdx, 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 rbx, rax mov edi, 0x1057 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdx, rax mov rsi, rbx mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.ArgumentException:.ctor(System.String,System.String):this call [rax]System.ArgumentException:.ctor(System.String,System.String):this mov rdi, r13 call CORINFO_HELP_THROW int3 ;; size=143 bbWeight=0 PerfScore 0.00 -G_M2973_IG53: +G_M2973_IG54: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 RWD00 dq 0062007500530079h, 0065007000790054h RWD16 dq 0061007200720041h, 0062007500530079h RWD32 dq 00430065007A0069h, 00740073006E006Fh RWD48 dq 0065007A00690053h, 0073006E006F0043h RWD64 dq 0049006D00610072h, 007800650064006Eh RWD80 dq 0065007A00690053h, 0061007200610050h RWD96 dq 0065006600610053h, 0061007200720041h, 0062007500530079h, 0065007000790054h -; Total bytes of code 1293, prolog size 28, PerfScore 374.97, instruction count 293, allocated bytes for code 1293 (MethodHash=a7f5f462) for method System.Reflection.Emit.MarshallingData:DecodeMarshalAsArray(System.String[],System.Object[],ubyte,System.Reflection.Emit.MarshallingData) (FullOpts) +; Total bytes of code 1444, prolog size 32, PerfScore 423.78, instruction count 324, allocated bytes for code 1444 (MethodHash=a7f5f462) for method System.Reflection.Emit.MarshallingData:DecodeMarshalAsArray(System.String[],System.Object[],ubyte,System.Reflection.Emit.MarshallingData) (FullOpts) ```
91 (31.93 % of base) - System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this ```diff ; Assembly listing for method System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; Final local variable assignments ; ; V00 this [V00,T04] ( 3, 3 ) ref -> rdi this class-hnd single-def ; V01 arg1 [V01,T03] ( 4, 3 ) byref -> rbx single-def -; V02 loc0 [V02,T01] ( 6, 10 ) ref -> [rbp-0x28] class-hnd EH-live spill-single-def -; V03 loc1 [V03 ] ( 2, 4.50) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed -; V04 loc2 [V04 ] ( 3, 2 ) struct ( 8) [rbp-0x20] do-not-enreg[S] +; V02 loc0 [V02,T01] ( 8, 11 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def +;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref +; V04 loc2 [V04 ] ( 4, 2.50) struct ( 8) [rbp-0x28] do-not-enreg[S] ;* V05 loc3 [V05 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V07 tmp1 [V07,T02] ( 6, 5 ) ref -> rax class-hnd "dup spill" -;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref -; V09 tmp3 [V09,T06] ( 3, 2 ) ubyte -> [rbp-0x20] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP -; V10 tmp4 [V10,T07] ( 3, 2 ) int -> [rbp-0x1C] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP -;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP -;* V12 tmp6 [V12 ] ( 0, 0 ) int -> zero-ref "field V05.value (fldOffset=0x4)" P-INDEP -; V13 tmp7 [V13,T00] ( 2, 16 ) ref -> rdx "argument with side effect" -; V14 PSPSym [V14,T08] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym" -; V15 cse0 [V15,T05] ( 2, 4.25) long -> r15 hoist "CSE #01: aggressive" +; V07 tmp1 [V07 ] ( 3, 3 ) struct ( 8) [rbp-0x30] do-not-enreg[XS] addr-exposed "Nullable tmp" +; V08 tmp2 [V08 ] ( 3, 24 ) struct ( 8) [rbp-0x38] do-not-enreg[XS] addr-exposed "Nullable tmp" +; V09 tmp3 [V09,T02] ( 6, 5 ) ref -> rax class-hnd "dup spill" +;* V10 tmp4 [V10 ] ( 0, 0 ) ref -> zero-ref +; V11 tmp5 [V11,T05] ( 3, 5 ) ubyte -> r14 "field V03.hasValue (fldOffset=0x0)" P-INDEP +; V12 tmp6 [V12,T06] ( 3, 5 ) int -> r13 "field V03.value (fldOffset=0x4)" P-INDEP +; V13 tmp7 [V13,T08] ( 3, 2 ) ubyte -> [rbp-0x28] do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP +; V14 tmp8 [V14,T09] ( 3, 2 ) int -> [rbp-0x24] do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP +;* V15 tmp9 [V15 ] ( 0, 0 ) ubyte -> zero-ref "field V05.hasValue (fldOffset=0x0)" P-INDEP +;* V16 tmp10 [V16 ] ( 0, 0 ) int -> zero-ref "field V05.value (fldOffset=0x4)" P-INDEP +; V17 tmp11 [V17 ] ( 2, 1.50) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V07.hasValue (fldOffset=0x0)" P-DEP +; V18 tmp12 [V18 ] ( 2, 1.50) int -> [rbp-0x2C] do-not-enreg[X] addr-exposed "field V07.value (fldOffset=0x4)" P-DEP +; V19 tmp13 [V19 ] ( 2, 12 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP +; V20 tmp14 [V20 ] ( 2, 12 ) int -> [rbp-0x34] do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP +; V21 tmp15 [V21,T10] ( 2, 2 ) ref -> rdx single-def "argument with side effect" +; V22 tmp16 [V22,T00] ( 2, 16 ) ref -> rdx "argument with side effect" +; V23 PSPSym [V23,T11] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" +; V24 cse0 [V24,T07] ( 3, 5 ) long -> r15 "CSE #01: aggressive" ; -; Lcl frame size = 32 +; Lcl frame size = 48 G_M2299_IG01: push rbp push r15 + push r14 + push r13 push rbx - sub rsp, 32 - lea rbp, [rsp+0x30] - mov qword ptr [rbp-0x30], rsp + sub rsp, 48 + lea rbp, [rsp+0x50] + mov qword ptr [rbp-0x50], rsp mov rbx, rsi - ;; size=20 bbWeight=1 PerfScore 5.00 + ;; size=24 bbWeight=1 PerfScore 7.00 G_M2299_IG02: mov rdi, gword ptr [rdi+0x18] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this call [r11]System.Collections.IEnumerable:GetEnumerator():System.Collections.IEnumerator:this mov rsi, rax - mov gword ptr [rbp-0x28], rsi + mov gword ptr [rbp-0x40], rsi ;; size=24 bbWeight=1 PerfScore 6.50 G_M2299_IG03: mov rdi, rsi mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax - jne SHORT G_M2299_IG05 - ;; size=20 bbWeight=1 PerfScore 4.75 + je G_M2299_IG07 + ;; size=24 bbWeight=1 PerfScore 4.75 G_M2299_IG04: - mov byte ptr [rbx], 0 - xor edi, edi - mov qword ptr [rbp-0x20], rdi - jmp SHORT G_M2299_IG08 - ;; size=11 bbWeight=0.50 PerfScore 2.12 -G_M2299_IG05: + mov rdi, gword ptr [rbp-0x40] + mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this + call [r11]System.Collections.IEnumerator:get_Current():System.Object:this + mov rdx, rax + lea rdi, [rbp-0x30] mov r15, 0xD1FFAB1E ; System.Nullable`1[int] - ;; size=10 bbWeight=0.25 PerfScore 0.06 -G_M2299_IG06: - mov rdi, gword ptr [rbp-0x28] + mov rsi, r15 + call CORINFO_HELP_UNBOX_NULLABLE + movzx r14, byte ptr [rbp-0x30] + mov r13d, dword ptr [rbp-0x2C] + mov rdi, gword ptr [rbp-0x40] + mov r11, 0xD1FFAB1E ; function address + call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this + test eax, eax + je SHORT G_M2299_IG06 + ;; size=72 bbWeight=0.50 PerfScore 7.00 +G_M2299_IG05: + mov rdi, gword ptr [rbp-0x40] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:get_Current():System.Object:this call [r11]System.Collections.IEnumerator:get_Current():System.Object:this mov rdx, rax - lea rdi, [rbp-0x18] + lea rdi, [rbp-0x38] mov rsi, r15 call CORINFO_HELP_UNBOX_NULLABLE - mov rdi, gword ptr [rbp-0x28] + movzx r14, byte ptr [rbp-0x38] + mov r13d, dword ptr [rbp-0x34] + mov rdi, gword ptr [rbp-0x40] mov r11, 0xD1FFAB1E ; code for System.Collections.IEnumerator:MoveNext():ubyte:this call [r11]System.Collections.IEnumerator:MoveNext():ubyte:this test eax, eax - jne SHORT G_M2299_IG06 - ;; size=53 bbWeight=4 PerfScore 47.00 -G_M2299_IG07: + jne SHORT G_M2299_IG05 + ;; size=62 bbWeight=4 PerfScore 55.00 +G_M2299_IG06: mov byte ptr [rbx], 1 - mov rsi, qword ptr [rbp-0x18] - mov qword ptr [rbp-0x20], rsi - ;; size=11 bbWeight=0.50 PerfScore 1.50 + mov byte ptr [rbp-0x28], r14b + mov dword ptr [rbp-0x24], r13d + jmp SHORT G_M2299_IG08 + ;; size=13 bbWeight=0.50 PerfScore 2.50 +G_M2299_IG07: + mov byte ptr [rbx], 0 + xor esi, esi + mov qword ptr [rbp-0x28], rsi + ;; size=9 bbWeight=0.50 PerfScore 1.12 G_M2299_IG08: - mov rsi, gword ptr [rbp-0x28] + mov rsi, gword ptr [rbp-0x40] mov rdi, 0xD1FFAB1E ; System.IDisposable mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M2299_IG10 ;; size=31 bbWeight=1 PerfScore 5.75 G_M2299_IG09: mov rdi, rax mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M2299_IG10: - mov rax, qword ptr [rbp-0x20] + mov rax, qword ptr [rbp-0x28] ;; size=4 bbWeight=1 PerfScore 1.00 G_M2299_IG11: - add rsp, 32 + add rsp, 48 pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=9 bbWeight=1 PerfScore 2.75 + ;; size=13 bbWeight=1 PerfScore 3.75 G_M2299_IG12: push rbp push r15 + push r14 + push r13 push rbx sub rsp, 16 mov rbp, qword ptr [rdi] mov qword ptr [rsp], rbp - lea rbp, [rbp+0x30] - ;; size=19 bbWeight=0 PerfScore 0.00 + lea rbp, [rbp+0x50] + ;; size=23 bbWeight=0 PerfScore 0.00 G_M2299_IG13: - mov rsi, gword ptr [rbp-0x28] + mov rsi, gword ptr [rbp-0x40] mov rdi, 0xD1FFAB1E ; System.IDisposable mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_ISINSTANCEOFINTERFACE call [rax]CORINFO_HELP_ISINSTANCEOFINTERFACE test rax, rax je SHORT G_M2299_IG14 mov rdi, rax mov r11, 0xD1FFAB1E ; code for System.IDisposable:Dispose():this call [r11]System.IDisposable:Dispose():this ;; size=47 bbWeight=0 PerfScore 0.00 G_M2299_IG14: nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M2299_IG15: add rsp, 16 pop rbx + pop r13 + pop r14 pop r15 pop rbp ret - ;; size=9 bbWeight=0 PerfScore 0.00 + ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 285, prolog size 20, PerfScore 78.19, instruction count 74, allocated bytes for code 285 (MethodHash=c723f704) for method System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) +; Total bytes of code 376, prolog size 24, PerfScore 96.12, instruction count 98, allocated bytes for code 376 (MethodHash=c723f704) for method System.Linq.Enumerable+CastICollectionIterator`1[System.Nullable`1[int]]:TryGetLast(byref):System.Nullable`1[int]:this (FullOpts) ```
59 (38.56 % of base) - System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this ```diff ; Assembly listing for method System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T03] ( 6, 19 ) ref -> rdi this class-hnd -; V01 arg1 [V01,T04] ( 3, 18 ) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T08] ( 4, 10 ) ubyte -> rdx -; V03 arg3 [V03,T12] ( 4, 3 ) byref -> rcx single-def -; V04 loc0 [V04,T11] ( 3, 1.50) int -> rbx +; V00 this [V00,T04] ( 5, 3.75) ref -> rdi this class-hnd single-def +; V01 arg1 [V01,T02] ( 4, 6.50) ref -> rsi class-hnd single-def +; V02 arg2 [V02,T07] ( 3, 2.50) ubyte -> rdx single-def +; V03 arg3 [V03,T05] ( 5, 3.50) byref -> rbx single-def +; V04 loc0 [V04,T09] ( 3, 1.50) int -> r15 ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -;* V06 tmp1 [V06 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V06 tmp1 [V06 ] ( 2, 2 ) struct ( 8) [rbp-0x28] do-not-enreg[XS] addr-exposed "Nullable tmp" ;* V07 tmp2 [V07 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -; V08 tmp3 [V08,T00] ( 3, 96 ) ref -> rax "arr expr" -; V09 tmp4 [V09,T13] ( 3, 3 ) ref -> r14 single-def "arr expr" -; V10 tmp5 [V10,T14] ( 2, 2 ) ref -> rdx single-def "argument with side effect" -; V11 tmp6 [V11,T06] ( 2, 16 ) ref -> rdi single-def "arg temp" -; V12 tmp7 [V12,T07] ( 2, 16 ) int -> rdx "arg temp" -; V13 cse0 [V13,T05] ( 3, 17.50) ref -> r14 hoist "CSE #01: aggressive" -; V14 cse1 [V14,T02] ( 3, 32 ) int -> r15 "CSE #02: aggressive" -; V15 cse2 [V15,T09] ( 3, 12 ) ref -> rdi "CSE #03: aggressive" -; V16 cse3 [V16,T10] ( 3, 12 ) int -> rdx "CSE #04: aggressive" -; V17 rat0 [V17,T01] ( 7, 88.50) long -> rbx "Widened IV V04" +;* V08 tmp3 [V08 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +; V09 tmp4 [V09 ] ( 2, 2 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V06.hasValue (fldOffset=0x0)" P-DEP +; V10 tmp5 [V10 ] ( 2, 2 ) int -> [rbp-0x24] do-not-enreg[X] addr-exposed "field V06.value (fldOffset=0x4)" P-DEP +; V11 tmp6 [V11,T00] ( 3, 24 ) ref -> rax "arr expr" +; V12 tmp7 [V12,T08] ( 3, 3 ) ref -> r13 single-def "arr expr" +; V13 tmp8 [V13,T10] ( 2, 2 ) ref -> rdx single-def "argument with side effect" +; V14 cse0 [V14,T06] ( 3, 4.75) ref -> r13 hoist "CSE #01: aggressive" +; V15 cse1 [V15,T03] ( 3, 6 ) int -> r14 "CSE #02: aggressive" +; V16 cse2 [V16,T11] ( 3, 1.50) ref -> rdi "CSE #03: moderate" +; V17 cse3 [V17,T12] ( 3, 1.50) int -> rdx "CSE #04: moderate" +; V18 rat0 [V18,T01] ( 7, 21.50) long -> r15 "Widened IV V04" ; -; Lcl frame size = 8 +; Lcl frame size = 16 G_M14646_IG01: push rbp push r15 push r14 + push r13 push rbx - push rax - lea rbp, [rsp+0x20] - ;; size=12 bbWeight=1 PerfScore 5.50 + sub rsp, 16 + lea rbp, [rsp+0x30] + mov rbx, rcx + ;; size=20 bbWeight=1 PerfScore 6.00 G_M14646_IG02: - jmp SHORT G_M14646_IG03 - align [3 bytes for IG05] - ;; size=5 bbWeight=1 PerfScore 2.00 + xor r15d, r15d + mov r14d, dword ptr [rdi+0x28] + test r14d, r14d + jle SHORT G_M14646_IG08 + ;; size=12 bbWeight=1 PerfScore 3.50 G_M14646_IG03: - xor ebx, ebx - mov r15d, dword ptr [rdi+0x28] - test r15d, r15d - jle SHORT G_M14646_IG09 - ;; size=11 bbWeight=8 PerfScore 28.00 + mov r13, gword ptr [rdi+0x10] + align [0 bytes for IG04] + ;; size=4 bbWeight=0.25 PerfScore 0.50 G_M14646_IG04: - mov r14, gword ptr [rdi+0x10] - ;; size=4 bbWeight=1 PerfScore 2.00 + mov rax, r13 + cmp r15d, dword ptr [rax+0x08] + jae G_M14646_IG12 + mov rcx, r15 + shl rcx, 4 + cmp gword ptr [rax+rcx+0x10], rsi + jne SHORT G_M14646_IG07 + ;; size=27 bbWeight=4 PerfScore 36.00 G_M14646_IG05: - mov rax, r14 - cmp ebx, dword ptr [rax+0x08] - jae SHORT G_M14646_IG12 - mov r8, rbx - shl r8, 4 - cmp gword ptr [rax+r8+0x10], rsi - jne SHORT G_M14646_IG08 - ;; size=22 bbWeight=16 PerfScore 144.00 -G_M14646_IG06: - cmp ebx, dword ptr [r14+0x08] - jae SHORT G_M14646_IG12 - mov edx, ebx + cmp r15d, dword ptr [r13+0x08] + jae G_M14646_IG12 + mov edx, r15d shl rdx, 4 - mov rdx, gword ptr [r14+rdx+0x18] - mov rdi, rcx + mov rdx, gword ptr [r13+rdx+0x18] + lea rdi, [rbp-0x28] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE + mov rax, qword ptr [rbp-0x28] + mov qword ptr [rbx], rax mov eax, 1 - ;; size=40 bbWeight=0.50 PerfScore 4.25 -G_M14646_IG07: - add rsp, 8 + ;; size=53 bbWeight=0.50 PerfScore 5.38 +G_M14646_IG06: + add rsp, 16 pop rbx + pop r13 pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=0.50 PerfScore 1.62 + ;; size=13 bbWeight=0.50 PerfScore 1.88 +G_M14646_IG07: + lea ecx, [r15+0x01] + mov r15d, ecx + cmp r15d, r14d + jl SHORT G_M14646_IG04 + ;; size=12 bbWeight=4 PerfScore 8.00 G_M14646_IG08: - lea eax, [rbx+0x01] - mov ebx, eax - cmp ebx, r15d - jl SHORT G_M14646_IG05 - ;; size=10 bbWeight=16 PerfScore 32.00 -G_M14646_IG09: movzx rdx, dl test edx, edx jne SHORT G_M14646_IG10 mov rdi, gword ptr [rdi+0x08] test rdi, rdi - jne SHORT G_M14646_IG03 - ;; size=16 bbWeight=4 PerfScore 19.00 + je SHORT G_M14646_IG10 + mov rcx, rbx + mov rax, 0xD1FFAB1E ; code for System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this + cmp dword ptr [rdi], edi + call [rax]System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this + nop + ;; size=34 bbWeight=0.50 PerfScore 5.75 +G_M14646_IG09: + add rsp, 16 + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M14646_IG10: xor eax, eax - mov qword ptr [rcx], rax + mov qword ptr [rbx], rax ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M14646_IG11: - add rsp, 8 + add rsp, 16 pop rbx + pop r13 pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=0.50 PerfScore 1.62 + ;; size=13 bbWeight=0.50 PerfScore 1.88 G_M14646_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 153, prolog size 12, PerfScore 240.62, instruction count 55, allocated bytes for code 153 (MethodHash=67eec6c9) for method System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this (FullOpts) +; Total bytes of code 212, prolog size 20, PerfScore 71.38, instruction count 72, allocated bytes for code 216 (MethodHash=67eec6c9) for method System.ComponentModel.Composition.Hosting.AtomicComposition:TryGetValueInternal[System.Nullable`1[int]](System.Object,ubyte,byref):ubyte:this (FullOpts) ```

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

MihuBot commented 1 month ago

Top method improvements

-18 (-1.45 % of base) - System.Text.Json.JsonException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this ```diff ; Assembly listing for method System.Text.Json.JsonException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 4 single block inlinees; 22 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T01] ( 9, 9 ) ref -> r15 this class-hnd single-def +; V00 this [V00,T01] ( 7, 7 ) ref -> r15 this class-hnd single-def ; V01 arg1 [V01,T00] ( 19, 17 ) ref -> rbx class-hnd single-def ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V04 tmp1 [V04 ] ( 3, 6 ) struct (16) [rbp-0x30] do-not-enreg[XSA] multireg-arg addr-exposed "UNBOXing a register returnable nullable" -; V05 tmp2 [V05 ] ( 3, 6 ) struct (16) [rbp-0x40] do-not-enreg[XSA] multireg-arg addr-exposed "UNBOXing a register returnable nullable" +; V04 tmp1 [V04 ] ( 2, 4 ) struct (16) [rbp-0x30] do-not-enreg[XS] addr-exposed "Nullable tmp" +; V05 tmp2 [V05 ] ( 2, 4 ) struct (16) [rbp-0x40] do-not-enreg[XS] addr-exposed "Nullable tmp" ; V06 tmp3 [V06,T33] ( 3, 2 ) ref -> rdx class-hnd "Inline return value spill temp" ; V07 tmp4 [V07,T27] ( 3, 2.50) ref -> rdi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" ; V08 tmp5 [V08,T25] ( 4, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" ;* V10 tmp7 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V11 tmp8 [V11,T52] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V11 tmp8 [V11,T46] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" ; V12 tmp9 [V12,T02] ( 7, 6 ) int -> rsi "Inline return value spill temp" -; V13 tmp10 [V13,T48] ( 2, 1 ) int -> rsi ld-addr-op "Inline ldloca(s) first use temp" +; V13 tmp10 [V13,T42] ( 2, 1 ) int -> rsi ld-addr-op "Inline ldloca(s) first use temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V15 tmp12 [V15,T06] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" ; V16 tmp13 [V16,T28] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" -;* V17 tmp14 [V17 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" -; V18 tmp15 [V18,T34] ( 3, 2 ) ref -> rdx class-hnd "Inline return value spill temp" -; V19 tmp16 [V19,T29] ( 3, 2.50) ref -> rdi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" -; V20 tmp17 [V20,T26] ( 4, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" -;* V21 tmp18 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" -;* V22 tmp19 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V23 tmp20 [V23,T53] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V24 tmp21 [V24,T03] ( 7, 6 ) int -> rsi "Inline return value spill temp" -; V25 tmp22 [V25,T49] ( 2, 1 ) int -> rsi ld-addr-op "Inline ldloca(s) first use temp" -;* V26 tmp23 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V27 tmp24 [V27,T07] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" -; V28 tmp25 [V28,T30] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" -;* V29 tmp26 [V29 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" -; V30 tmp27 [V30,T35] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" -; V31 tmp28 [V31,T38] ( 2, 2 ) ref -> rsi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" -; V32 tmp29 [V32,T23] ( 5, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" -;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V34 tmp31 [V34,T54] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V35 tmp32 [V35,T04] ( 7, 6 ) int -> rdi "Inline return value spill temp" -; V36 tmp33 [V36,T50] ( 2, 1 ) int -> rdi ld-addr-op "Inline ldloca(s) first use temp" -;* V37 tmp34 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V38 tmp35 [V38,T08] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" -; V39 tmp36 [V39,T31] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" -; V40 tmp37 [V40,T36] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" -; V41 tmp38 [V41,T39] ( 2, 2 ) ref -> rsi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" -; V42 tmp39 [V42,T24] ( 5, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" -; V43 tmp40 [V43,T05] ( 6, 6 ) int -> rdi "Inline stloc first use temp" -; V44 tmp41 [V44,T55] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V45 tmp42 [V45,T37] ( 3, 2 ) int -> rdi "Inline return value spill temp" -; V46 tmp43 [V46,T51] ( 2, 1 ) int -> rdi ld-addr-op "Inline ldloca(s) first use temp" -;* V47 tmp44 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -; V48 tmp45 [V48,T09] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" -; V49 tmp46 [V49,T32] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" -; V50 tmp47 [V50,T19] ( 2, 2 ) ref -> rdx single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP -; V51 tmp48 [V51,T20] ( 2, 2 ) int -> rcx single-def "field V02._state (fldOffset=0x8)" P-INDEP -; V52 tmp49 [V52,T40] ( 2, 2 ) ubyte -> rdi "field V17.hasValue (fldOffset=0x0)" P-INDEP -; V53 tmp50 [V53,T41] ( 2, 2 ) long -> rsi "field V17.value (fldOffset=0x8)" P-INDEP -; V54 tmp51 [V54,T42] ( 2, 2 ) ubyte -> rdi "field V29.hasValue (fldOffset=0x0)" P-INDEP -; V55 tmp52 [V55,T43] ( 2, 2 ) long -> rsi "field V29.value (fldOffset=0x8)" P-INDEP -; V56 tmp53 [V56,T10] ( 3, 6 ) ref -> rdi single-def "arr expr" -; V57 tmp54 [V57,T11] ( 3, 6 ) ref -> rax single-def "arr expr" -;* V58 tmp55 [V58,T44] ( 0, 0 ) byref -> zero-ref single-def "BlockOp address local" -; V59 tmp56 [V59,T56] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V60 tmp57 [V60,T57] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V61 tmp58 [V61,T58] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -;* V62 tmp59 [V62 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V63 tmp60 [V63,T12] ( 3, 6 ) ref -> rdi single-def "arr expr" -; V64 tmp61 [V64,T13] ( 3, 6 ) ref -> rax single-def "arr expr" -;* V65 tmp62 [V65,T45] ( 0, 0 ) byref -> zero-ref single-def "BlockOp address local" -; V66 tmp63 [V66,T14] ( 3, 6 ) ref -> rsi single-def "arr expr" -; V67 tmp64 [V67,T15] ( 3, 6 ) ref -> r11 single-def "arr expr" -; V68 tmp65 [V68,T16] ( 3, 6 ) ref -> rsi single-def "arr expr" -; V69 tmp66 [V69,T17] ( 3, 6 ) ref -> r11 single-def "arr expr" -; V70 tmp67 [V70,T59] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V71 tmp68 [V71,T60] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V72 tmp69 [V72,T61] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V73 tmp70 [V73,T62] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V74 tmp71 [V74,T63] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V75 tmp72 [V75,T64] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V76 tmp73 [V76,T65] ( 2, 0 ) ref -> r15 single-def "argument with side effect" -; V77 tmp74 [V77,T66] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -; V78 tmp75 [V78,T67] ( 2, 0 ) ref -> rsi single-def "argument with side effect" -;* V79 tmp76 [V79 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" -; V80 cse0 [V80,T18] ( 7, 5 ) ref -> r13 "CSE #02: moderate" -; V81 rat0 [V81,T21] ( 4, 3.50) ref -> rdi "replacement local" -; V82 rat1 [V82,T46] ( 3, 1 ) long -> rcx "CSE for expectedClsNode" -; V83 rat2 [V83,T22] ( 4, 3.50) ref -> rsi "replacement local" -; V84 rat3 [V84,T47] ( 3, 1 ) long -> rdi "CSE for expectedClsNode" +; V17 tmp14 [V17,T34] ( 3, 2 ) ref -> rdx class-hnd "Inline return value spill temp" +; V18 tmp15 [V18,T29] ( 3, 2.50) ref -> rdi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" +; V19 tmp16 [V19,T26] ( 4, 2.50) ref -> r14 class-hnd single-def "Inline stloc first use temp" +;* V20 tmp17 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" +;* V21 tmp18 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V22 tmp19 [V22,T47] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V23 tmp20 [V23,T03] ( 7, 6 ) int -> rsi "Inline return value spill temp" +; V24 tmp21 [V24,T43] ( 2, 1 ) int -> rsi ld-addr-op "Inline ldloca(s) first use temp" +;* V25 tmp22 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V26 tmp23 [V26,T07] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" +; V27 tmp24 [V27,T30] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" +; V28 tmp25 [V28,T35] ( 3, 2 ) ref -> rax class-hnd "Inline return value spill temp" +; V29 tmp26 [V29,T38] ( 2, 2 ) ref -> rsi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" +; V30 tmp27 [V30,T23] ( 5, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" +;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V32 tmp29 [V32,T48] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V33 tmp30 [V33,T04] ( 7, 6 ) int -> rdi "Inline return value spill temp" +; V34 tmp31 [V34,T44] ( 2, 1 ) int -> rdi ld-addr-op "Inline ldloca(s) first use temp" +;* V35 tmp32 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V36 tmp33 [V36,T08] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" +; V37 tmp34 [V37,T31] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" +; V38 tmp35 [V38,T36] ( 3, 2 ) ref -> registers class-hnd "Inline return value spill temp" +; V39 tmp36 [V39,T39] ( 2, 2 ) ref -> rsi ld-addr-op class-hnd single-def "Inline ldloca(s) first use temp" +; V40 tmp37 [V40,T24] ( 5, 2.50) ref -> rax class-hnd single-def "Inline stloc first use temp" +; V41 tmp38 [V41,T05] ( 6, 6 ) int -> rdi "Inline stloc first use temp" +; V42 tmp39 [V42,T49] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V43 tmp40 [V43,T37] ( 3, 2 ) int -> rdi "Inline return value spill temp" +; V44 tmp41 [V44,T45] ( 2, 1 ) int -> rdi ld-addr-op "Inline ldloca(s) first use temp" +;* V45 tmp42 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +; V46 tmp43 [V46,T09] ( 3, 6 ) ref -> rdi class-hnd single-def "Inlining Arg" +; V47 tmp44 [V47,T32] ( 3, 2.50) byref -> rax single-def "Inline stloc first use temp" +; V48 tmp45 [V48,T19] ( 2, 2 ) ref -> rdx single-def "field V02._additionalContext (fldOffset=0x0)" P-INDEP +; V49 tmp46 [V49,T20] ( 2, 2 ) int -> rcx single-def "field V02._state (fldOffset=0x8)" P-INDEP +; V50 tmp47 [V50 ] ( 2, 4 ) ubyte -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP +; V51 tmp48 [V51 ] ( 2, 4 ) long -> [rbp-0x28] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x8)" P-DEP +; V52 tmp49 [V52 ] ( 2, 4 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V05.hasValue (fldOffset=0x0)" P-DEP +; V53 tmp50 [V53 ] ( 2, 4 ) long -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V05.value (fldOffset=0x8)" P-DEP +; V54 tmp51 [V54,T10] ( 3, 6 ) ref -> rdi single-def "arr expr" +; V55 tmp52 [V55,T11] ( 3, 6 ) ref -> rax single-def "arr expr" +; V56 tmp53 [V56,T50] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V57 tmp54 [V57,T51] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V58 tmp55 [V58,T52] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +;* V59 tmp56 [V59 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V60 tmp57 [V60,T12] ( 3, 6 ) ref -> rdi single-def "arr expr" +; V61 tmp58 [V61,T13] ( 3, 6 ) ref -> rax single-def "arr expr" +; V62 tmp59 [V62,T14] ( 3, 6 ) ref -> rsi single-def "arr expr" +; V63 tmp60 [V63,T15] ( 3, 6 ) ref -> r11 single-def "arr expr" +; V64 tmp61 [V64,T16] ( 3, 6 ) ref -> rsi single-def "arr expr" +; V65 tmp62 [V65,T17] ( 3, 6 ) ref -> r11 single-def "arr expr" +; V66 tmp63 [V66,T53] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V67 tmp64 [V67,T54] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V68 tmp65 [V68,T55] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V69 tmp66 [V69,T56] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V70 tmp67 [V70,T57] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V71 tmp68 [V71,T58] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V72 tmp69 [V72,T59] ( 2, 0 ) ref -> r15 single-def "argument with side effect" +; V73 tmp70 [V73,T60] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +; V74 tmp71 [V74,T61] ( 2, 0 ) ref -> rsi single-def "argument with side effect" +;* V75 tmp72 [V75 ] ( 0, 0 ) ref -> zero-ref "argument with side effect" +; V76 cse0 [V76,T18] ( 7, 5 ) ref -> r13 "CSE #02: moderate" +; V77 rat0 [V77,T21] ( 4, 3.50) ref -> rdi "replacement local" +; V78 rat1 [V78,T40] ( 3, 1 ) long -> rcx "CSE for expectedClsNode" +; V79 rat2 [V79,T22] ( 4, 3.50) ref -> rsi "replacement local" +; V80 rat3 [V80,T41] ( 3, 1 ) long -> rdi "CSE for expectedClsNode" ; ; Lcl frame size = 32 G_M695_IG01: push rbp push r15 push r14 push r13 push rbx sub rsp, 32 lea rbp, [rsp+0x40] mov r15, rdi mov rbx, rsi ;; size=23 bbWeight=1 PerfScore 6.25 G_M695_IG02: mov rdi, r15 mov rsi, rbx mov rax, 0xD1FFAB1E ; code for System.Exception:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this call [rax]System.Exception:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this mov rdi, gword ptr [rbx+0x20] cmp byte ptr [rdi], dil mov rsi, 0xD1FFAB1E ; 'LineNumber' mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this test rax, rax je SHORT G_M695_IG04 ;; size=52 bbWeight=1 PerfScore 13.50 G_M695_IG03: mov esi, dword ptr [rax] jmp SHORT G_M695_IG05 ;; size=4 bbWeight=0.50 PerfScore 2.00 G_M695_IG04: mov esi, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M695_IG05: cmp esi, -1 je G_M695_IG39 mov rdi, gword ptr [rbx+0x18] cmp esi, dword ptr [rdi+0x08] jae G_M695_IG40 mov eax, esi mov rdi, gword ptr [rdi+8*rax+0x10] mov rax, gword ptr [rbx+0x10] cmp esi, dword ptr [rax+0x08] jae G_M695_IG40 mov esi, esi mov r14, gword ptr [rax+8*rsi+0x10] mov r13, 0xD1FFAB1E ; 'System.Nullable`1[System.Int64]' cmp rdi, r13 je SHORT G_M695_IG07 ;; size=64 bbWeight=1 PerfScore 19.25 G_M695_IG06: mov rsi, rdi mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this test eax, eax jne SHORT G_M695_IG07 test r14, r14 jne SHORT G_M695_IG08 ;; size=27 bbWeight=0.50 PerfScore 3.12 G_M695_IG07: mov rdx, r14 jmp SHORT G_M695_IG09 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M695_IG08: mov rdi, gword ptr [rbx+0x28] mov rsi, r14 mov r11, 0xD1FFAB1E ; code for System.Runtime.Serialization.IFormatterConverter:Convert(System.Object,System.Type):System.Object:this mov rdx, r13 call [r11]System.Runtime.Serialization.IFormatterConverter:Convert(System.Object,System.Type):System.Object:this mov rdx, rax ;; size=26 bbWeight=0.50 PerfScore 3.00 G_M695_IG09: lea rdi, [rbp-0x30] mov rsi, 0xD1FFAB1E ; System.Nullable`1[long] call CORINFO_HELP_UNBOX_NULLABLE - movzx rdi, byte ptr [rbp-0x30] - mov rsi, qword ptr [rbp-0x28] - mov byte ptr [r15+0x88], dil - mov qword ptr [r15+0x90], rsi + vmovups xmm0, xmmword ptr [rbp-0x30] + vmovups xmmword ptr [r15+0x88], xmm0 mov rdi, gword ptr [rbx+0x20] cmp byte ptr [rdi], dil mov rsi, 0xD1FFAB1E ; 'BytePositionInLine' mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this test rax, rax je SHORT G_M695_IG11 - ;; size=76 bbWeight=1 PerfScore 15.50 + ;; size=67 bbWeight=1 PerfScore 16.50 G_M695_IG10: mov esi, dword ptr [rax] jmp SHORT G_M695_IG12 ;; size=4 bbWeight=0.50 PerfScore 2.00 G_M695_IG11: mov esi, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M695_IG12: cmp esi, -1 je G_M695_IG38 mov rdi, gword ptr [rbx+0x18] cmp esi, dword ptr [rdi+0x08] jae G_M695_IG40 mov eax, esi mov rdi, gword ptr [rdi+8*rax+0x10] mov rax, gword ptr [rbx+0x10] cmp esi, dword ptr [rax+0x08] jae G_M695_IG40 mov esi, esi mov r14, gword ptr [rax+8*rsi+0x10] cmp rdi, r13 je SHORT G_M695_IG14 ;; size=54 bbWeight=1 PerfScore 19.00 G_M695_IG13: mov rsi, rdi mov rdi, r13 mov rax, 0xD1FFAB1E ; code for System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this call [rax]System.RuntimeType:IsAssignableFrom(System.Type):ubyte:this test eax, eax jne SHORT G_M695_IG14 test r14, r14 jne SHORT G_M695_IG15 ;; size=27 bbWeight=0.50 PerfScore 3.12 G_M695_IG14: mov rdx, r14 jmp SHORT G_M695_IG16 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M695_IG15: mov rdi, gword ptr [rbx+0x28] mov rsi, r14 mov r11, 0xD1FFAB1E ; code for System.Runtime.Serialization.IFormatterConverter:Convert(System.Object,System.Type):System.Object:this mov rdx, r13 call [r11]System.Runtime.Serialization.IFormatterConverter:Convert(System.Object,System.Type):System.Object:this mov rdx, rax ;; size=26 bbWeight=0.50 PerfScore 3.00 G_M695_IG16: lea rdi, [rbp-0x40] mov rsi, 0xD1FFAB1E ; System.Nullable`1[long] call CORINFO_HELP_UNBOX_NULLABLE - movzx rdi, byte ptr [rbp-0x40] - mov rsi, qword ptr [rbp-0x38] - mov byte ptr [r15+0x98], dil - mov qword ptr [r15+0xA0], rsi + vmovups xmm0, xmmword ptr [rbp-0x40] + vmovups xmmword ptr [r15+0x98], xmm0 mov rdi, gword ptr [rbx+0x20] cmp byte ptr [rdi], dil mov rsi, 0xD1FFAB1E ; 'Path' mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this test rax, rax je SHORT G_M695_IG18 - ;; size=76 bbWeight=1 PerfScore 15.50 + ;; size=67 bbWeight=1 PerfScore 16.50 G_M695_IG17: mov edi, dword ptr [rax] jmp SHORT G_M695_IG19 ;; size=4 bbWeight=0.50 PerfScore 2.00 G_M695_IG18: mov edi, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M695_IG19: cmp edi, -1 je G_M695_IG37 mov rsi, gword ptr [rbx+0x18] cmp edi, dword ptr [rsi+0x08] jae G_M695_IG40 mov r11d, edi mov rsi, gword ptr [rsi+8*r11+0x10] mov r11, gword ptr [rbx+0x10] cmp edi, dword ptr [r11+0x08] jae G_M695_IG40 mov edi, edi mov rax, gword ptr [r11+8*rdi+0x10] mov rdi, 0xD1FFAB1E ; 'System.String' cmp rsi, rdi je SHORT G_M695_IG23 ;; size=66 bbWeight=1 PerfScore 19.25 G_M695_IG20: test rax, rax je SHORT G_M695_IG23 mov rdi, gword ptr [rbx+0x28] mov rsi, rax mov r11, 0xD1FFAB1E ; code for System.Runtime.Serialization.IFormatterConverter:ToString(System.Object):System.String:this call [r11]System.Runtime.Serialization.IFormatterConverter:ToString(System.Object):System.String:this ;; size=25 bbWeight=0.50 PerfScore 3.38 G_M695_IG21: lea rdi, bword ptr [r15+0x78] mov rsi, rax call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rbx+0x20] cmp byte ptr [rdi], dil mov rsi, 0xD1FFAB1E ; 'ActualMessage' mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this call [rax]System.Collections.Generic.Dictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this test rax, rax je SHORT G_M695_IG26 ;; size=46 bbWeight=1 PerfScore 11.50 G_M695_IG22: mov edi, dword ptr [rax] jmp SHORT G_M695_IG27 ;; size=4 bbWeight=0.50 PerfScore 2.00 G_M695_IG23: mov rdi, rax test rdi, rdi je SHORT G_M695_IG25 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M695_IG24: mov rcx, 0xD1FFAB1E ; System.String cmp qword ptr [rdi], rcx jne G_M695_IG34 ;; size=19 bbWeight=0.25 PerfScore 1.06 G_M695_IG25: mov rax, rdi jmp SHORT G_M695_IG21 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M695_IG26: mov edi, -1 ;; size=5 bbWeight=0.50 PerfScore 0.12 G_M695_IG27: cmp edi, -1 je G_M695_IG36 mov rsi, gword ptr [rbx+0x18] cmp edi, dword ptr [rsi+0x08] jae G_M695_IG40 mov r11d, edi mov rsi, gword ptr [rsi+8*r11+0x10] mov r11, gword ptr [rbx+0x10] cmp edi, dword ptr [r11+0x08] jae G_M695_IG40 mov edi, edi mov rax, gword ptr [r11+8*rdi+0x10] mov rdi, 0xD1FFAB1E ; 'System.String' cmp rsi, rdi je SHORT G_M695_IG31 ;; size=66 bbWeight=1 PerfScore 19.25 G_M695_IG28: test rax, rax je SHORT G_M695_IG31 mov rdi, gword ptr [rbx+0x28] mov rsi, rax mov r11, 0xD1FFAB1E ; code for System.Runtime.Serialization.IFormatterConverter:ToString(System.Object):System.String:this call [r11]System.Runtime.Serialization.IFormatterConverter:ToString(System.Object):System.String:this ;; size=25 bbWeight=0.50 PerfScore 3.38 G_M695_IG29: lea rdi, bword ptr [r15+0x70] mov rsi, rax call CORINFO_HELP_ASSIGN_REF nop ;; size=13 bbWeight=1 PerfScore 2.00 G_M695_IG30: add rsp, 32 pop rbx pop r13 pop r14 pop r15 pop rbp ret ;; size=13 bbWeight=1 PerfScore 3.75 G_M695_IG31: mov rsi, rax test rsi, rsi je SHORT G_M695_IG33 ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M695_IG32: mov rdi, 0xD1FFAB1E ; System.String cmp qword ptr [rsi], rdi jne SHORT G_M695_IG35 ;; size=15 bbWeight=0.25 PerfScore 1.06 G_M695_IG33: mov rax, rsi jmp SHORT G_M695_IG29 ;; size=5 bbWeight=0.50 PerfScore 1.12 G_M695_IG34: mov rsi, rax mov rdi, rcx mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=19 bbWeight=0 PerfScore 0.00 G_M695_IG35: mov rsi, rax mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS int3 ;; size=16 bbWeight=0 PerfScore 0.00 G_M695_IG36: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.SerializationException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Serialization_NotFound():System.String call [rax]System.SR:get_Serialization_NotFound():System.String mov r15, rax mov edi, 0x3656 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this call [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=98 bbWeight=0 PerfScore 0.00 G_M695_IG37: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.SerializationException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Serialization_NotFound():System.String call [rax]System.SR:get_Serialization_NotFound():System.String mov r15, rax mov edi, 0x364C mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this call [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=98 bbWeight=0 PerfScore 0.00 G_M695_IG38: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.SerializationException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Serialization_NotFound():System.String call [rax]System.SR:get_Serialization_NotFound():System.String mov r15, rax mov edi, 0x3626 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this call [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=98 bbWeight=0 PerfScore 0.00 G_M695_IG39: mov rdi, 0xD1FFAB1E ; System.Runtime.Serialization.SerializationException call CORINFO_HELP_NEWSFAST mov rbx, rax mov rax, 0xD1FFAB1E ; code for System.SR:get_Serialization_NotFound():System.String call [rax]System.SR:get_Serialization_NotFound():System.String mov r15, rax mov edi, 0x3610 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.SR:Format(System.String,System.Object):System.String call [rax]System.SR:Format(System.String,System.Object):System.String mov rsi, rax mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Runtime.Serialization.SerializationException:.ctor(System.String):this call [rax]System.Runtime.Serialization.SerializationException:.ctor(System.String):this mov rdi, rbx call CORINFO_HELP_THROW int3 ;; size=98 bbWeight=0 PerfScore 0.00 G_M695_IG40: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1244, prolog size 17, PerfScore 180.38, instruction count 291, allocated bytes for code 1244 (MethodHash=e200fd48) for method System.Text.Json.JsonException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) +; Total bytes of code 1226, prolog size 17, PerfScore 182.38, instruction count 287, allocated bytes for code 1226 (MethodHash=e200fd48) for method System.Text.Json.JsonException:.ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext):this (FullOpts) ```
-4 (-2.82 % of base) - Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.Nullable`1[int]](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):ubyte ```diff ; Assembly listing for method Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.Nullable`1[int]](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):ubyte (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 3, 3 ) ref -> rdi class-hnd single-def ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def ; V02 arg2 [V02,T00] ( 5, 3.50) byref -> rbx single-def ; V03 loc0 [V03 ] ( 4, 2.25) ref -> [rbp-0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd -; V04 loc1 [V04 ] ( 2, 1 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] must-init addr-exposed +;* V04 loc1 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling qmarkNull" +; V07 tmp2 [V07 ] ( 2, 2 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed "Nullable tmp" +;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref "field V04.hasValue (fldOffset=0x0)" P-INDEP +;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref "field V04.value (fldOffset=0x4)" P-INDEP +; V10 tmp5 [V10 ] ( 2, 2 ) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V07.hasValue (fldOffset=0x0)" P-DEP +; V11 tmp6 [V11 ] ( 2, 2 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V07.value (fldOffset=0x4)" P-DEP ; ; Lcl frame size = 24 G_M54664_IG01: push rbp push rbx sub rsp, 24 lea rbp, [rsp+0x20] xor eax, eax mov qword ptr [rbp-0x10], rax - mov qword ptr [rbp-0x18], rax mov rbx, rdx - ;; size=24 bbWeight=1 PerfScore 5.25 + ;; size=20 bbWeight=1 PerfScore 4.25 G_M54664_IG02: lea rdx, [rbp-0x10] mov r11, 0xD1FFAB1E ; code for Microsoft.Extensions.Caching.Memory.IMemoryCache:TryGetValue(System.Object,byref):ubyte:this call [r11]Microsoft.Extensions.Caching.Memory.IMemoryCache:TryGetValue(System.Object,byref):ubyte:this test eax, eax je SHORT G_M54664_IG06 ;; size=21 bbWeight=1 PerfScore 5.00 G_M54664_IG03: cmp gword ptr [rbp-0x10], 0 jne SHORT G_M54664_IG05 xor eax, eax mov qword ptr [rbx], rax mov eax, 1 ;; size=17 bbWeight=0.50 PerfScore 2.25 G_M54664_IG04: add rsp, 24 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12 G_M54664_IG05: mov rax, gword ptr [rbp-0x10] mov rdi, 0xD1FFAB1E ; System.Int32 cmp qword ptr [rax], rdi je SHORT G_M54664_IG08 ;; size=19 bbWeight=0.25 PerfScore 1.31 G_M54664_IG06: xor eax, eax mov qword ptr [rbx], rax ;; size=5 bbWeight=0.50 PerfScore 0.62 G_M54664_IG07: add rsp, 24 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12 G_M54664_IG08: lea rdi, [rbp-0x18] mov rdx, gword ptr [rbp-0x10] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE mov rax, qword ptr [rbp-0x18] mov qword ptr [rbx], rax mov eax, 1 ;; size=35 bbWeight=0.50 PerfScore 2.50 G_M54664_IG09: add rsp, 24 pop rbx pop rbp ret ;; size=7 bbWeight=0.50 PerfScore 1.12 -; Total bytes of code 142, prolog size 21, PerfScore 20.31, instruction count 43, allocated bytes for code 142 (MethodHash=10572a77) for method Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.Nullable`1[int]](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):ubyte (FullOpts) +; Total bytes of code 138, prolog size 17, PerfScore 19.31, instruction count 42, allocated bytes for code 138 (MethodHash=10572a77) for method Microsoft.Extensions.Caching.Memory.CacheExtensions:TryGetValue[System.Nullable`1[int]](Microsoft.Extensions.Caching.Memory.IMemoryCache,System.Object,byref):ubyte (FullOpts) ```
-4 (-2.68 % of base) - System.ComponentModel.Composition.MetadataServices:GetValue[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String):System.Nullable`1[int] ```diff ; Assembly listing for method System.ComponentModel.Composition.MetadataServices:GetValue[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String):System.Nullable`1[int] (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T00] ( 4, 4 ) ref -> rdi class-hnd single-def ; V01 arg1 [V01,T01] ( 3, 3 ) ref -> rsi class-hnd single-def ; V02 loc0 [V02 ] ( 4, 2.25) ref -> [rbp-0x08] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd -; V03 loc1 [V03 ] ( 2, 1 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] must-init addr-exposed +;* V03 loc1 [V03 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ;* V04 loc2 [V04 ] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op ;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) int -> zero-ref "spilling qmarkNull" -;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP -;* V08 tmp3 [V08 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP +; V07 tmp2 [V07 ] ( 2, 2 ) struct ( 8) [rbp-0x10] do-not-enreg[XS] addr-exposed "Nullable tmp" +;* V08 tmp3 [V08 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V03.hasValue (fldOffset=0x0)" P-DEP +;* V09 tmp4 [V09 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V03.value (fldOffset=0x4)" P-DEP +;* V10 tmp5 [V10 ] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[] "field V04.hasValue (fldOffset=0x0)" P-DEP +;* V11 tmp6 [V11 ] ( 0, 0 ) int -> zero-ref do-not-enreg[] "field V04.value (fldOffset=0x4)" P-DEP +; V12 tmp7 [V12 ] ( 2, 2 ) ubyte -> [rbp-0x10] do-not-enreg[X] addr-exposed "field V07.hasValue (fldOffset=0x0)" P-DEP +; V13 tmp8 [V13 ] ( 2, 2 ) int -> [rbp-0x0C] do-not-enreg[X] addr-exposed "field V07.value (fldOffset=0x4)" P-DEP ; ; Lcl frame size = 16 G_M49172_IG01: push rbp sub rsp, 16 lea rbp, [rsp+0x10] xor eax, eax mov qword ptr [rbp-0x08], rax - mov qword ptr [rbp-0x10], rax - ;; size=20 bbWeight=1 PerfScore 4.00 + ;; size=16 bbWeight=1 PerfScore 3.00 G_M49172_IG02: test rdi, rdi je SHORT G_M49172_IG09 lea rdx, [rbp-0x08] mov r11, 0xD1FFAB1E ; code for System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this call [r11]System.Collections.Generic.IDictionary`2[System.__Canon,System.__Canon]:TryGetValue(System.__Canon,byref):ubyte:this test eax, eax je SHORT G_M49172_IG04 ;; size=26 bbWeight=1 PerfScore 6.25 G_M49172_IG03: cmp gword ptr [rbp-0x08], 0 jne SHORT G_M49172_IG06 ;; size=7 bbWeight=0.50 PerfScore 1.50 G_M49172_IG04: xor eax, eax ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M49172_IG05: add rsp, 16 pop rbp ret ;; size=6 bbWeight=0.50 PerfScore 0.88 G_M49172_IG06: mov rdi, gword ptr [rbp-0x08] mov rdx, 0xD1FFAB1E ; System.Int32 cmp qword ptr [rdi], rdx jne SHORT G_M49172_IG04 ;; size=19 bbWeight=0.25 PerfScore 1.31 G_M49172_IG07: lea rdi, [rbp-0x10] mov rdx, gword ptr [rbp-0x08] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE mov rax, qword ptr [rbp-0x10] ;; size=27 bbWeight=0.50 PerfScore 1.88 G_M49172_IG08: add rsp, 16 pop rbp ret ;; size=6 bbWeight=0.50 PerfScore 0.88 G_M49172_IG09: mov edi, 0x2298 mov rsi, 0xD1FFAB1E call CORINFO_HELP_STRCNS mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.ArgumentNullException:Throw(System.String) call [rax]System.ArgumentNullException:Throw(System.String) int3 ;; size=36 bbWeight=0 PerfScore 0.00 -; Total bytes of code 149, prolog size 20, PerfScore 16.81, instruction count 38, allocated bytes for code 149 (MethodHash=b6063feb) for method System.ComponentModel.Composition.MetadataServices:GetValue[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String):System.Nullable`1[int] (FullOpts) +; Total bytes of code 145, prolog size 16, PerfScore 15.81, instruction count 37, allocated bytes for code 145 (MethodHash=b6063feb) for method System.ComponentModel.Composition.MetadataServices:GetValue[System.Nullable`1[int]](System.Collections.Generic.IDictionary`2[System.String,System.Object],System.String):System.Nullable`1[int] (FullOpts) ```
-1 (-0.48 % of base) - System.Composition.Hosting.Providers.ExportFactory.ExportFactoryExportDescriptorProvider+<>c__DisplayClass2_3`1[System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this ```diff ; Assembly listing for method System.Composition.Hosting.Providers.ExportFactory.ExportFactoryExportDescriptorProvider+<>c__DisplayClass2_3`1[System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T03] ( 5, 5 ) ref -> rbx this class-hnd single-def c__DisplayClass2_3`1[System.Nullable`1[int]]> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; V04 tmp2 [V04,T01] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V05 tmp3 [V05 ] ( 2, 4 ) struct ( 8) [rbp-0x20] do-not-enreg[XS] addr-exposed "impAppendStmt" -; V06 tmp4 [V06,T02] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V07 tmp5 [V07,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04 ] ( 2, 4 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed "Nullable tmp" +; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V06 tmp4 [V06,T02] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP +; V08 tmp6 [V08 ] ( 2, 4 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP +; V09 tmp7 [V09,T04] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; -; Lcl frame size = 8 +; Lcl frame size = 16 G_M59659_IG01: push rbp push r15 - push r14 push rbx - push rax + sub rsp, 16 lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 5.75 + ;; size=16 bbWeight=1 PerfScore 4.00 G_M59659_IG02: mov rdi, 0xD1FFAB1E ; System.Composition.Hosting.Core.LifetimeContext call CORINFO_HELP_NEWSFAST mov r15, rax mov rdx, gword ptr [rbx+0x10] mov rdx, gword ptr [rdx+0x10] mov rdx, gword ptr [rdx+0x10] mov rdx, gword ptr [rdx+0x10] mov rsi, gword ptr [rbx+0x08] mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Composition.Hosting.Core.LifetimeContext:.ctor(System.Composition.Hosting.Core.LifetimeContext,System.String[]):this call [rax]System.Composition.Hosting.Core.LifetimeContext:.ctor(System.Composition.Hosting.Core.LifetimeContext,System.String[]):this - mov rdi, 0xD1FFAB1E ; System.Action - call CORINFO_HELP_NEWSFAST - mov r14, rax mov rsi, gword ptr [rbx+0x10] mov rsi, gword ptr [rsi+0x08] mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Composition.Hosting.Core.CompositionOperation:Run(System.Composition.Hosting.Core.LifetimeContext,System.Composition.Hosting.Core.CompositeActivator):System.Object call [rax]System.Composition.Hosting.Core.CompositionOperation:Run(System.Composition.Hosting.Core.LifetimeContext,System.Composition.Hosting.Core.CompositeActivator):System.Object mov rdx, rax - lea rdi, [rbp-0x20] + lea rdi, [rbp-0x18] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE - lea rdi, bword ptr [r14+0x08] + mov rdi, 0xD1FFAB1E ; System.Action + call CORINFO_HELP_NEWSFAST + mov rbx, rax + lea rdi, bword ptr [rbx+0x08] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; code for System.Composition.Hosting.Core.LifetimeContext:Dispose():this - mov qword ptr [r14+0x18], rdi + mov qword ptr [rbx+0x18], rdi mov rdi, 0xD1FFAB1E ; System.Tuple`2[System.Nullable`1[int],System.Action] call CORINFO_HELP_NEWSFAST - mov rbx, rax - mov rdi, qword ptr [rbp-0x20] - mov qword ptr [rbx+0x10], rdi - lea rdi, bword ptr [rbx+0x08] - mov rsi, r14 + mov r15, rax + mov rdi, qword ptr [rbp-0x18] + mov qword ptr [r15+0x10], rdi + lea rdi, bword ptr [r15+0x08] + mov rsi, rbx call CORINFO_HELP_ASSIGN_REF - mov rax, rbx + mov rax, r15 ;; size=183 bbWeight=1 PerfScore 34.50 G_M59659_IG03: - add rsp, 8 + add rsp, 16 pop rbx - pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=9 bbWeight=1 PerfScore 2.75 -; Total bytes of code 209, prolog size 12, PerfScore 43.50, instruction count 50, allocated bytes for code 209 (MethodHash=304316f4) for method System.Composition.Hosting.Providers.ExportFactory.ExportFactoryExportDescriptorProvider+<>c__DisplayClass2_3`1[System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) +; Total bytes of code 208, prolog size 13, PerfScore 41.25, instruction count 48, allocated bytes for code 208 (MethodHash=304316f4) for method System.Composition.Hosting.Providers.ExportFactory.ExportFactoryExportDescriptorProvider+<>c__DisplayClass2_3`1[System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) ```
-1 (-0.45 % of base) - System.Composition.Hosting.Providers.ExportFactory.ExportFactoryWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this ```diff ; Assembly listing for method System.Composition.Hosting.Providers.ExportFactory.ExportFactoryWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T03] ( 5, 5 ) ref -> rbx this class-hnd single-def c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]> ;* V01 loc0 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def ;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V03 tmp1 [V03,T00] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" -; V04 tmp2 [V04,T01] ( 4, 8 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" -; V05 tmp3 [V05 ] ( 2, 4 ) struct ( 8) [rbp-0x20] do-not-enreg[XS] addr-exposed "impAppendStmt" -; V06 tmp4 [V06,T02] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" -; V07 tmp5 [V07,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect" -; V08 tmp6 [V08,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" -; V09 tmp7 [V09,T06] ( 2, 4 ) ref -> rdx single-def "argument with side effect" +; V04 tmp2 [V04 ] ( 2, 4 ) struct ( 8) [rbp-0x18] do-not-enreg[XS] addr-exposed "Nullable tmp" +; V05 tmp3 [V05,T01] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" +; V06 tmp4 [V06,T02] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" +; V07 tmp5 [V07 ] ( 2, 4 ) ubyte -> [rbp-0x18] do-not-enreg[X] addr-exposed "field V04.hasValue (fldOffset=0x0)" P-DEP +; V08 tmp6 [V08 ] ( 2, 4 ) int -> [rbp-0x14] do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP +; V09 tmp7 [V09,T04] ( 3, 6 ) ref -> rdi single-def "argument with side effect" +; V10 tmp8 [V10,T05] ( 2, 4 ) ref -> rsi single-def "argument with side effect" +; V11 tmp9 [V11,T06] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; -; Lcl frame size = 8 +; Lcl frame size = 16 G_M8117_IG01: push rbp push r15 - push r14 push rbx - push rax + sub rsp, 16 lea rbp, [rsp+0x20] mov rbx, rdi - ;; size=15 bbWeight=1 PerfScore 5.75 + ;; size=16 bbWeight=1 PerfScore 4.00 G_M8117_IG02: mov rdi, 0xD1FFAB1E ; System.Composition.Hosting.Core.LifetimeContext call CORINFO_HELP_NEWSFAST mov r15, rax mov rdx, gword ptr [rbx+0x10] mov rdx, gword ptr [rdx+0x10] mov rdx, gword ptr [rdx+0x10] mov rdx, gword ptr [rdx+0x10] mov rsi, gword ptr [rbx+0x08] mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Composition.Hosting.Core.LifetimeContext:.ctor(System.Composition.Hosting.Core.LifetimeContext,System.String[]):this call [rax]System.Composition.Hosting.Core.LifetimeContext:.ctor(System.Composition.Hosting.Core.LifetimeContext,System.String[]):this - mov rdi, 0xD1FFAB1E ; System.Action - call CORINFO_HELP_NEWSFAST - mov r14, rax mov rdi, gword ptr [rbx+0x10] mov rdi, gword ptr [rdi+0x08] mov rax, qword ptr [rdi] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Composition.Hosting.Core.ExportDescriptor:get_Activator():System.Composition.Hosting.Core.CompositeActivator:this mov rsi, rax mov rdi, r15 mov rax, 0xD1FFAB1E ; code for System.Composition.Hosting.Core.CompositionOperation:Run(System.Composition.Hosting.Core.LifetimeContext,System.Composition.Hosting.Core.CompositeActivator):System.Object call [rax]System.Composition.Hosting.Core.CompositionOperation:Run(System.Composition.Hosting.Core.LifetimeContext,System.Composition.Hosting.Core.CompositeActivator):System.Object mov rdx, rax - lea rdi, [rbp-0x20] + lea rdi, [rbp-0x18] mov rsi, 0xD1FFAB1E ; System.Nullable`1[int] call CORINFO_HELP_UNBOX_NULLABLE - lea rdi, bword ptr [r14+0x08] + mov rdi, 0xD1FFAB1E ; System.Action + call CORINFO_HELP_NEWSFAST + mov rbx, rax + lea rdi, bword ptr [rbx+0x08] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF mov rdi, 0xD1FFAB1E ; code for System.Composition.Hosting.Core.LifetimeContext:Dispose():this - mov qword ptr [r14+0x18], rdi + mov qword ptr [rbx+0x18], rdi mov rdi, 0xD1FFAB1E ; System.Tuple`2[System.Nullable`1[int],System.Action] call CORINFO_HELP_NEWSFAST - mov rbx, rax - mov rdi, qword ptr [rbp-0x20] - mov qword ptr [rbx+0x10], rdi - lea rdi, bword ptr [rbx+0x08] - mov rsi, r14 + mov r15, rax + mov rdi, qword ptr [rbp-0x18] + mov qword ptr [r15+0x10], rdi + lea rdi, bword ptr [r15+0x08] + mov rsi, rbx call CORINFO_HELP_ASSIGN_REF - mov rax, rbx + mov rax, r15 ;; size=196 bbWeight=1 PerfScore 41.75 G_M8117_IG03: - add rsp, 8 + add rsp, 16 pop rbx - pop r14 pop r15 pop rbp ret - ;; size=11 bbWeight=1 PerfScore 3.25 + ;; size=9 bbWeight=1 PerfScore 2.75 -; Total bytes of code 222, prolog size 12, PerfScore 50.75, instruction count 54, allocated bytes for code 222 (MethodHash=c2efe04a) for method System.Composition.Hosting.Providers.ExportFactory.ExportFactoryWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) +; Total bytes of code 221, prolog size 13, PerfScore 48.50, instruction count 52, allocated bytes for code 221 (MethodHash=c2efe04a) for method System.Composition.Hosting.Providers.ExportFactory.ExportFactoryWithMetadataExportDescriptorProvider+<>c__DisplayClass2_3`2[System.Nullable`1[int],System.Nullable`1[int]]:b__4():System.Tuple`2[System.Nullable`1[int],System.Action]:this (FullOpts) ```

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

MihuBot commented 1 month ago

@EgorBo