MihuBot / runtime-utils

0 stars 0 forks source link

[X64] [EgorBo] JIT: Optimize out write barriers for fields in ref-like structs #443

Open MihuBot opened 3 months ago

MihuBot commented 3 months ago

Job completed in 15 minutes. https://github.com/dotnet/runtime/pull/103503

Diffs

Diffs ``` Found 277 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 41359711 Total bytes of diff: 41355830 Total bytes of delta: -3881 (-0.01 % of base) Total relative delta: -18.97 diff is an improvement. relative diff is an improvement. Top file regressions (bytes): 9 : System.Net.Http.dasm (0.00 % of base) Top file improvements (bytes): -1190 : System.Private.CoreLib.dasm (-0.02 % of base) -954 : System.Memory.dasm (-0.32 % of base) -823 : System.Text.RegularExpressions.dasm (-0.11 % of base) -419 : System.Text.Json.dasm (-0.03 % of base) -200 : System.Runtime.Numerics.dasm (-0.17 % of base) -35 : System.Security.Cryptography.dasm (-0.00 % of base) -34 : System.Reflection.Metadata.dasm (-0.01 % of base) -28 : System.Diagnostics.Process.dasm (-0.03 % of base) -28 : System.Private.Uri.dasm (-0.03 % of base) -28 : Microsoft.Extensions.Logging.Abstractions.dasm (-0.04 % of base) -26 : System.Web.HttpUtility.dasm (-0.13 % of base) -25 : Microsoft.Extensions.DependencyInjection.Abstractions.dasm (-0.04 % of base) -20 : System.Private.Xml.dasm (-0.00 % of base) -20 : System.Console.dasm (-0.02 % of base) -20 : System.Diagnostics.DiagnosticSource.dasm (-0.01 % of base) -20 : System.Text.Encodings.Web.dasm (-0.08 % of base) -20 : System.Net.Mail.dasm (-0.01 % of base) 18 total files with Code Size differences (17 improved, 1 regressed), 240 unchanged. Top method regressions (bytes): 29 (1.98 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (FullOpts) 17 (1.43 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:GetNextSpan():ubyte:this (FullOpts) 10 (0.56 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts) Top method improvements (bytes): -216 (-4.16 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (FullOpts) (2 methods) -124 (-35.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:.ctor(System.String,int,System.Globalization.CultureInfo,System.Collections.Hashtable,int,System.Collections.Hashtable,System.Span`1[int]):this (FullOpts) (2 methods) -105 (-5.36 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:.ctor(System.Buffers.ReadOnlySequence`1[ubyte],ubyte,System.Text.Json.JsonReaderState):this (FullOpts) -90 (-6.16 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:ConsumeStringNextSegment():ubyte:this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:.ctor(System.Buffers.ReadOnlySequence`1[double]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:.ctor(System.Buffers.ReadOnlySequence`1[int]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:.ctor(System.Buffers.ReadOnlySequence`1[long]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:.ctor(System.Buffers.ReadOnlySequence`1[short]):this (FullOpts) -70 (-10.70 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:.ctor(System.Buffers.ReadOnlySequence`1[System.Numerics.Vector`1[float]]):this (FullOpts) -70 (-11.04 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:.ctor(System.Buffers.ReadOnlySequence`1[ubyte]):this (FullOpts) -70 (-2.20 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:AssignNameSlots():this (FullOpts) (2 methods) -58 (-4.55 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:ConsumeStringAndValidateMultiSegment(System.ReadOnlySpan`1[ubyte],int):ubyte:this (FullOpts) -56 (-62.92 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+StackAllocatedArguments:.ctor(System.Object,System.Object,System.Object,System.Object):this (FullOpts) -45 (-6.00 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:GetNextSpan():this (FullOpts) -45 (-6.00 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:GetNextSpan():this (FullOpts) -45 (-6.00 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:GetNextSpan():this (FullOpts) -45 (-6.00 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:GetNextSpan():this (FullOpts) -45 (-5.95 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:GetNextSpan():this (FullOpts) -45 (-5.98 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:GetNextSpan():this (FullOpts) -43 (-43.88 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Regex+ValueSplitEnumerator:.ctor(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int,ubyte):this (FullOpts) -37 (-34.58 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadBlockingInfo+Scope:.ctor(System.Object,int,int):this (FullOpts) -36 (-4.78 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:ResetReader():this (FullOpts) -36 (-4.78 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:ResetReader():this (FullOpts) -36 (-4.78 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:ResetReader():this (FullOpts) -36 (-4.78 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:ResetReader():this (FullOpts) -36 (-4.74 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:ResetReader():this (FullOpts) -36 (-4.77 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:ResetReader():this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[double,long]:FromManaged(double[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[int,long]:FromManaged(int[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[long,long]:FromManaged(long[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[short,long]:FromManaged(short[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.Nullable`1[int],long]:FromManaged(System.Nullable`1[int][],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.Numerics.Vector`1[float],long]:FromManaged(System.Numerics.Vector`1[float][],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[ubyte,long]:FromManaged(ubyte[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[double,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[long,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[short,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[System.Numerics.Vector`1[float],long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[ubyte,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -33 (-18.64 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,long]:FromManaged(System.__Canon[],System.Span`1[long]):this (FullOpts) -33 (-17.84 % of base) : System.Text.Json.dasm - System.Text.Json.Schema.JsonSchemaExporter+GenerationState:.ctor(System.Text.Json.JsonSerializerOptions,System.Text.Json.Schema.JsonSchemaExporterOptions):this (FullOpts) -33 (-24.63 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexWriter:.ctor(System.Text.RegularExpressions.RegexTree,System.Span`1[int],System.Span`1[int]):this (FullOpts) -32 (-53.33 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Regex+ValueMatchEnumerator:.ctor(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int):this (FullOpts) -26 (-12.38 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts) -25 (-69.44 % of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:.ctor(Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx,System.Span`1[System.Object]):this (FullOpts) -25 (-16.56 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:.ctor(int,int,System.Span`1[ushort],System.IFormatProvider,byref):this (FullOpts) -25 (-18.80 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts) -25 (-16.56 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:.ctor(int,int,System.Span`1[ubyte],System.IFormatProvider,byref):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[double]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[double]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[long]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[long]:Grow(int):this (FullOpts) -24 (-7.84 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[short]:Grow(int):this (FullOpts) -24 (-7.84 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[short]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[System.Nullable`1[int]]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[System.Nullable`1[int]]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[System.Numerics.Vector`1[float]]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[System.Numerics.Vector`1[float]]:Grow(int):this (FullOpts) -24 (-7.92 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[ubyte]:Grow(int):this (FullOpts) -24 (-7.92 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[ubyte]:Grow(int):this (FullOpts) -23 (-2.34 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:TryGetNumberMultiSegment(System.ReadOnlySpan`1[ubyte],byref):ubyte:this (FullOpts) -23 (-23.71 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadBlockingInfo+Scope:.ctor(System.Threading.Lock,int):this (FullOpts) -22 (-20.56 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH:RhRethrow(byref,byref) (FullOpts) -22 (-23.16 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:StartGroup(System.Text.RegularExpressions.RegexNode):this (FullOpts) -21 (-1.34 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:CheckLiteralMultiSegment(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):ubyte:this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[double]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[int]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[int]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[int]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[long]:Grow(int):this (FullOpts) -20 (-8.06 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[short]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[System.Nullable`1[int]]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[System.Numerics.Vector`1[float]]:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[ubyte]:Grow(int):this (FullOpts) -20 (-7.35 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Grow():this (FullOpts) -20 (-7.35 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:Grow(int):this (FullOpts) -20 (-7.43 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowCore(uint):this (FullOpts) -20 (-6.29 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:NoteCaptureName(System.String,int):this (FullOpts) -20 (-10.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:PopGroup():this (FullOpts) -20 (-8.16 % of base) : System.Diagnostics.Process.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Web.HttpUtility.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.Uri.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Runtime.Numerics.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Text.Json.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Text.RegularExpressions.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Text.Encodings.Web.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : Microsoft.Extensions.Logging.Abstractions.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Reflection.Metadata.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Security.Cryptography.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Net.Mail.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -18 (-35.29 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH+ExInfo:Init(System.Object,byref):this (FullOpts) -18 (-39.13 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH+ExInfo:Init(System.Object,ubyte):this (FullOpts) -18 (-72.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Lock+Scope:.ctor(System.Threading.Lock,System.Threading.Lock+ThreadId):this (FullOpts) -17 (-1.65 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:ReadMultiSegment():ubyte:this (FullOpts) Top method regressions (percentages): 29 (1.98 % of base) : System.Net.Http.dasm - System.Net.Http.HttpConnectionPoolManager:.ctor(System.Net.Http.HttpConnectionSettings):this (FullOpts) 17 (1.43 % of base) : System.Text.Json.dasm - System.Text.Json.Utf8JsonReader:GetNextSpan():ubyte:this (FullOpts) 10 (0.56 % of base) : System.Private.CoreLib.dasm - System.DateTimeParse:DoStrictParse(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,System.Globalization.DateTimeFormatInfo,byref):ubyte (FullOpts) Top method improvements (percentages): -18 (-72.00 % of base) : System.Private.CoreLib.dasm - System.Threading.Lock+Scope:.ctor(System.Threading.Lock,System.Threading.Lock+ThreadId):this (FullOpts) -25 (-69.44 % of base) : Microsoft.Extensions.DependencyInjection.Abstractions.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorMatcher:.ctor(Microsoft.Extensions.DependencyInjection.ActivatorUtilities+ConstructorInfoEx,System.Span`1[System.Object]):this (FullOpts) -56 (-62.92 % of base) : System.Private.CoreLib.dasm - System.Reflection.MethodBase+StackAllocatedArguments:.ctor(System.Object,System.Object,System.Object,System.Object):this (FullOpts) -32 (-53.33 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Regex+ValueMatchEnumerator:.ctor(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int):this (FullOpts) -43 (-43.88 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.Regex+ValueSplitEnumerator:.ctor(System.Text.RegularExpressions.Regex,System.ReadOnlySpan`1[ushort],int,int,ubyte):this (FullOpts) -18 (-39.13 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH+ExInfo:Init(System.Object,ubyte):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[double]:.ctor(System.ReadOnlySpan`1[double],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[double]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[int]:.ctor(System.ReadOnlySpan`1[int],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[int]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[long]:.ctor(System.ReadOnlySpan`1[long],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[long]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[short]:.ctor(System.ReadOnlySpan`1[short],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[short]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[System.__Canon]:.ctor(System.ReadOnlySpan`1[System.__Canon],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.__Canon]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[System.Nullable`1[int]]:.ctor(System.ReadOnlySpan`1[System.Nullable`1[int]],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.Nullable`1[int]]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[System.Numerics.Vector`1[float]]:.ctor(System.ReadOnlySpan`1[System.Numerics.Vector`1[float]],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[System.Numerics.Vector`1[float]]):this (FullOpts) -13 (-37.14 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.TextSegmentationUtility+Processor`1[ubyte]:.ctor(System.ReadOnlySpan`1[ubyte],System.Text.Unicode.TextSegmentationUtility+DecodeFirstRune`1[ubyte]):this (FullOpts) -124 (-35.43 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:.ctor(System.String,int,System.Globalization.CultureInfo,System.Collections.Hashtable,int,System.Collections.Hashtable,System.Span`1[int]):this (FullOpts) (2 methods) -18 (-35.29 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH+ExInfo:Init(System.Object,byref):this (FullOpts) -37 (-34.58 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadBlockingInfo+Scope:.ctor(System.Object,int,int):this (FullOpts) -33 (-24.63 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexWriter:.ctor(System.Text.RegularExpressions.RegexTree,System.Span`1[int],System.Span`1[int]):this (FullOpts) -23 (-23.71 % of base) : System.Private.CoreLib.dasm - System.Threading.ThreadBlockingInfo+Scope:.ctor(System.Threading.Lock,int):this (FullOpts) -22 (-23.16 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:StartGroup(System.Text.RegularExpressions.RegexNode):this (FullOpts) -22 (-20.56 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH:RhRethrow(byref,byref) (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[double,long]:FromManaged(double[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[int,long]:FromManaged(int[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[long,long]:FromManaged(long[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[short,long]:FromManaged(short[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.Nullable`1[int],long]:FromManaged(System.Nullable`1[int][],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.Numerics.Vector`1[float],long]:FromManaged(System.Numerics.Vector`1[float][],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[ubyte,long]:FromManaged(ubyte[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[double,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[int,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[long,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[short,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[System.Numerics.Vector`1[float],long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -34 (-19.21 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.PointerArrayMarshaller`2+ManagedToUnmanagedIn[ubyte,long]:FromManaged(ulong[],System.Span`1[long]):this (FullOpts) -25 (-18.80 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider,System.Span`1[ushort]):this (FullOpts) -33 (-18.64 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.Marshalling.ArrayMarshaller`2+ManagedToUnmanagedIn[System.__Canon,long]:FromManaged(System.__Canon[],System.Span`1[long]):this (FullOpts) -6 (-18.18 % of base) : System.Web.HttpUtility.dasm - System.Web.Util.HttpEncoder+UrlDecoder:.ctor(System.Span`1[ushort],System.Span`1[ubyte],System.Text.Encoding):this (FullOpts) -33 (-17.84 % of base) : System.Text.Json.dasm - System.Text.Json.Schema.JsonSchemaExporter+GenerationState:.ctor(System.Text.Json.JsonSerializerOptions,System.Text.Json.Schema.JsonSchemaExporterOptions):this (FullOpts) -16 (-16.67 % of base) : System.Private.CoreLib.dasm - System.Globalization.TimeSpanParse+TimeSpanRawInfo:Init(System.Globalization.DateTimeFormatInfo):this (FullOpts) -25 (-16.56 % of base) : System.Private.CoreLib.dasm - System.MemoryExtensions+TryWriteInterpolatedStringHandler:.ctor(int,int,System.Span`1[ushort],System.IFormatProvider,byref):this (FullOpts) -25 (-16.56 % of base) : System.Private.CoreLib.dasm - System.Text.Unicode.Utf8+TryWriteInterpolatedStringHandler:.ctor(int,int,System.Span`1[ubyte],System.IFormatProvider,byref):this (FullOpts) -26 (-12.38 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int,System.IFormatProvider):this (FullOpts) -6 (-11.11 % of base) : System.Reflection.Metadata.dasm - System.Reflection.Metadata.TypeNameParser:.ctor(System.ReadOnlySpan`1[ushort],ubyte,System.Reflection.Metadata.TypeNameParseOptions):this (FullOpts) -70 (-11.04 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[ubyte]:.ctor(System.Buffers.ReadOnlySequence`1[ubyte]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[double]:.ctor(System.Buffers.ReadOnlySequence`1[double]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[int]:.ctor(System.Buffers.ReadOnlySequence`1[int]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[long]:.ctor(System.Buffers.ReadOnlySequence`1[long]):this (FullOpts) -70 (-10.99 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[short]:.ctor(System.Buffers.ReadOnlySequence`1[short]):this (FullOpts) -14 (-10.94 % of base) : System.Private.CoreLib.dasm - System.Runtime.EH:RhThrowEx(System.Object,byref) (FullOpts) -20 (-10.93 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:PopGroup():this (FullOpts) -70 (-10.70 % of base) : System.Memory.dasm - System.Buffers.SequenceReader`1[System.Numerics.Vector`1[float]]:.ctor(System.Buffers.ReadOnlySequence`1[System.Numerics.Vector`1[float]]):this (FullOpts) -11 (-9.48 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:.ctor(int,int):this (FullOpts) -8 (-9.20 % of base) : System.Private.Uri.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -8 (-9.20 % of base) : System.Runtime.Numerics.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -8 (-9.20 % of base) : System.Text.Json.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -8 (-9.20 % of base) : System.Text.RegularExpressions.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -8 (-9.20 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -8 (-9.20 % of base) : Microsoft.Extensions.Logging.Abstractions.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -8 (-9.20 % of base) : System.Reflection.Metadata.dasm - System.Text.ValueStringBuilder:.ctor(int):this (FullOpts) -6 (-8.70 % of base) : System.Text.RegularExpressions.dasm - System.Text.RegularExpressions.RegexParser:PushGroup():this (FullOpts) -9 (-8.33 % of base) : System.Text.Json.dasm - System.Text.Json.Serialization.Metadata.JsonTypeInfo+PropertyHierarchyResolutionState:.ctor(System.Text.Json.JsonSerializerOptions):this (FullOpts) -20 (-8.16 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[ubyte]:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Diagnostics.Process.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Web.HttpUtility.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.Uri.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Runtime.Numerics.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Net.Http.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.Xml.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Text.Json.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Console.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Diagnostics.DiagnosticSource.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Text.RegularExpressions.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Private.CoreLib.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Text.Encodings.Web.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : Microsoft.Extensions.Logging.Abstractions.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Reflection.Metadata.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Security.Cryptography.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.16 % of base) : System.Net.Mail.dasm - System.Text.ValueStringBuilder:Grow(int):this (FullOpts) -20 (-8.06 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[short]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[double]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[int]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[int]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[int]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[long]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[System.Nullable`1[int]]:Grow(int):this (FullOpts) -20 (-8.03 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.ValueListBuilder`1[System.Numerics.Vector`1[float]]:Grow(int):this (FullOpts) -24 (-7.92 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[ubyte]:Grow(int):this (FullOpts) -24 (-7.92 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[ubyte]:Grow(int):this (FullOpts) -24 (-7.84 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[short]:Grow(int):this (FullOpts) -24 (-7.84 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[short]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[double]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[double]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[long]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[long]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[System.Nullable`1[int]]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[System.Nullable`1[int]]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Runtime.Numerics.dasm - System.Collections.Generic.ValueListBuilder`1[System.Numerics.Vector`1[float]]:Grow(int):this (FullOpts) -24 (-7.82 % of base) : System.Text.RegularExpressions.dasm - System.Collections.Generic.ValueListBuilder`1[System.Numerics.Vector`1[float]]:Grow(int):this (FullOpts) -8 (-7.62 % of base) : System.Private.CoreLib.dasm - System.__DTString:.ctor(System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo):this (FullOpts) -20 (-7.43 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:GrowCore(uint):this (FullOpts) 150 total methods with Code Size differences (147 improved, 3 regressed), 252154 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 3 months ago

Top method regressions

17 (1.43 % of base) - System.Text.Json.Utf8JsonReader:GetNextSpan():ubyte:this ```diff ; Assembly listing for method System.Text.Json.Utf8JsonReader:GetNextSpan():ubyte:this (FullOpts) ; Emitting BLENDED_CODE for X86 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 30 single block inlinees; 13 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T01] ( 21, 56 ) byref -> rbx this single-def ;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ;* V02 loc1 [V02 ] ( 0, 0 ) struct (16) zero-ref ;* V03 loc2 [V03 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V05 tmp1 [V05,T03] ( 4, 28 ) byref -> rsi "Inlining Arg" ; V06 tmp2 [V06,T00] ( 5, 68 ) byref -> r12 "Inlining Arg" ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" -; V08 tmp4 [V08,T10] ( 2, 16 ) int -> [rbp-0x2C] spill-single-def +; V08 tmp4 [V08,T10] ( 2, 16 ) int -> rdi ;* V09 tmp5 [V09 ] ( 0, 0 ) int -> zero-ref -; V10 tmp6 [V10,T18] ( 3, 12 ) ubyte -> registers "Inline return value spill temp" +; V10 tmp6 [V10,T18] ( 3, 12 ) ubyte -> rdi "Inline return value spill temp" ; V11 tmp7 [V11,T05] ( 4, 20 ) ref -> rax class-hnd "Inline stloc first use temp" ; V12 tmp8 [V12,T33] ( 3, 6 ) int -> rdi "Inline stloc first use temp" -; V13 tmp9 [V13,T07] ( 9, 16.50) ref -> [rbp-0x68] class-hnd spill-single-def "Inline stloc first use temp" -; V14 tmp10 [V14,T02] ( 14, 28 ) int -> [rbp-0x30] spill-single-def "Inline stloc first use temp" -; V15 tmp11 [V15,T25] ( 4, 8 ) int -> [rbp-0x34] spill-single-def "Inline stloc first use temp" +; V13 tmp9 [V13,T07] ( 9, 16.50) ref -> [rbp-0x60] class-hnd spill-single-def "Inline stloc first use temp" +; V14 tmp10 [V14,T02] ( 14, 28 ) int -> [rbp-0x2C] spill-single-def "Inline stloc first use temp" +; V15 tmp11 [V15,T25] ( 4, 8 ) int -> [rbp-0x30] spill-single-def "Inline stloc first use temp" ;* V16 tmp12 [V16 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" -; V17 tmp13 [V17 ] ( 4, 8 ) struct (16) [rbp-0x48] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" +; V17 tmp13 [V17 ] ( 4, 8 ) struct (16) [rbp-0x40] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" ;* V18 tmp14 [V18 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V19 tmp15 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V20 tmp16 [V20,T16] ( 6, 12 ) ref -> rax class-hnd "Inline stloc first use temp" ;* V21 tmp17 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ; V22 tmp18 [V22,T31] ( 3, 6 ) ref -> rcx class-hnd "Inline stloc first use temp" ;* V23 tmp19 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V25 tmp21 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V26 tmp22 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" -; V27 tmp23 [V27,T27] ( 2, 8 ) int -> rdi "Inlining Arg" +; V27 tmp23 [V27,T27] ( 2, 8 ) int -> rcx "Inlining Arg" ; V28 tmp24 [V28,T28] ( 2, 8 ) int -> rax "Inlining Arg" -; V29 tmp25 [V29,T19] ( 3, 12 ) int -> rdi "Inlining Arg" +; V29 tmp25 [V29,T19] ( 3, 12 ) int -> rsi "Inlining Arg" ;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V31 tmp27 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ; V32 tmp28 [V32,T29] ( 2, 8 ) int -> r8 "Inlining Arg" ; V33 tmp29 [V33,T08] ( 4, 16 ) ref -> rax class-hnd "Inlining Arg" ; V34 tmp30 [V34,T09] ( 4, 16 ) int -> rsi "Inlining Arg" ; V35 tmp31 [V35,T20] ( 3, 12 ) int -> rax "Inlining Arg" ;* V36 tmp32 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V37 tmp33 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ; V38 tmp34 [V38,T30] ( 2, 8 ) int -> rcx "Inlining Arg" ;* V39 tmp35 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ; V40 tmp36 [V40,T39] ( 4, 4 ) byref -> rsi single-def "Inlining Arg" ; V41 tmp37 [V41,T57] ( 3, 3 ) byref -> r13 single-def "Inlining Arg" ;* V42 tmp38 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" ;* V43 tmp39 [V43 ] ( 0, 0 ) int -> zero-ref ; V44 tmp40 [V44,T67] ( 3, 1.50) ubyte -> rdi "Inline return value spill temp" -; V45 tmp41 [V45,T61] ( 4, 2 ) ref -> rax class-hnd single-def "Inline stloc first use temp" +; V45 tmp41 [V45,T61] ( 4, 2 ) ref -> r8 class-hnd single-def "Inline stloc first use temp" ; V46 tmp42 [V46,T68] ( 3, 1.50) int -> rdi "Inline stloc first use temp" ; V47 tmp43 [V47,T54] ( 7, 3.12) ref -> r14 class-hnd single-def "Inline stloc first use temp" ; V48 tmp44 [V48,T38] ( 9, 4.50) int -> r13 "Inline stloc first use temp" ; V49 tmp45 [V49,T63] ( 4, 2 ) int -> r15 "Inline stloc first use temp" ;* V50 tmp46 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" -; V51 tmp47 [V51 ] ( 2, 1 ) struct (16) [rbp-0x58] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" +; V51 tmp47 [V51 ] ( 2, 1 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op "Inline stloc first use temp" ;* V52 tmp48 [V52 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" ;* V53 tmp49 [V53 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V54 tmp50 [V54,T62] ( 4, 2 ) ref -> rax class-hnd single-def "Inline stloc first use temp" ;* V55 tmp51 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V56 tmp52 [V56 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" ;* V57 tmp53 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V58 tmp54 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V59 tmp55 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V60 tmp56 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V61 tmp57 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V62 tmp58 [V62 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V63 tmp59 [V63 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V64 tmp60 [V64 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V65 tmp61 [V65 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V66 tmp62 [V66 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -; V67 tmp63 [V67,T58] ( 3, 3 ) ref -> rax class-hnd single-def "Inlining Arg" +; V67 tmp63 [V67,T58] ( 3, 3 ) ref -> r12 class-hnd single-def "Inlining Arg" ; V68 tmp64 [V68,T60] ( 3, 3 ) int -> rsi "Inlining Arg" ;* V69 tmp65 [V69 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V70 tmp66 [V70 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V71 tmp67 [V71 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" ;* V72 tmp68 [V72 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V73 tmp69 [V73 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" ;* V74 tmp70 [V74 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" ; V75 tmp71 [V75,T55] ( 6, 3 ) byref -> r15 "Inline stloc first use temp" ; V76 tmp72 [V76,T56] ( 6, 3 ) int -> r14 "Inline stloc first use temp" ;* V77 tmp73 [V77 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" ;* V78 tmp74 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V79 tmp75 [V79 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ;* V80 tmp76 [V80 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" ;* V81 tmp77 [V81 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inline stloc first use temp" -; V82 tmp78 [V82,T69] ( 3, 1.50) long -> rax "Inline stloc first use temp" +; V82 tmp78 [V82,T69] ( 3, 1.50) long -> rdi "Inline stloc first use temp" ;* V83 tmp79 [V83 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V84 tmp80 [V84 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" ;* V85 tmp81 [V85 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" ; V86 tmp82 [V86,T65] ( 2, 2 ) byref -> rdi single-def "Inlining Arg" ;* V87 tmp83 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" -; V88 tmp84 [V88,T13] ( 11, 13 ) ref -> [rbp-0x70] "field V01._object (fldOffset=0x0)" P-INDEP -; V89 tmp85 [V89,T21] ( 6, 10.50) int -> [rbp-0x5C] "field V01._index (fldOffset=0x8)" P-INDEP -; V90 tmp86 [V90,T11] ( 8, 15 ) int -> [rbp-0x60] "field V01._length (fldOffset=0xc)" P-INDEP +; V88 tmp84 [V88,T13] ( 11, 13 ) ref -> [rbp-0x68] "field V01._object (fldOffset=0x0)" P-INDEP +; V89 tmp85 [V89,T21] ( 6, 10.50) int -> [rbp-0x54] "field V01._index (fldOffset=0x8)" P-INDEP +; V90 tmp86 [V90,T11] ( 8, 15 ) int -> [rbp-0x58] "field V01._length (fldOffset=0xc)" P-INDEP ; V91 tmp87 [V91,T14] ( 3, 12.50) ref -> r15 "field V02._object (fldOffset=0x0)" P-INDEP ; V92 tmp88 [V92,T15] ( 3, 12.50) int -> r14 "field V02._integer (fldOffset=0x8)" P-INDEP ;* V93 tmp89 [V93 ] ( 0, 0 ) ref -> zero-ref "field V03._object (fldOffset=0x0)" P-INDEP ;* V94 tmp90 [V94 ] ( 0, 0 ) int -> zero-ref "field V03._index (fldOffset=0x8)" P-INDEP ;* V95 tmp91 [V95 ] ( 0, 0 ) int -> zero-ref "field V03._length (fldOffset=0xc)" P-INDEP -; V96 tmp92 [V96,T06] ( 3, 18 ) ref -> [rbp-0x78] "field V07._object (fldOffset=0x0)" P-INDEP +; V96 tmp92 [V96,T06] ( 3, 18 ) ref -> [rbp-0x70] "field V07._object (fldOffset=0x0)" P-INDEP ;* V97 tmp93 [V97,T23] ( 0, 0 ) int -> zero-ref "field V07._integer (fldOffset=0x8)" P-INDEP -; V98 tmp94 [V98,T40] ( 2, 4 ) ref -> [rbp-0x48] do-not-enreg[] "field V17._object (fldOffset=0x0)" P-DEP -; V99 tmp95 [V99,T45] ( 2, 4 ) int -> [rbp-0x40] do-not-enreg[] "field V17._index (fldOffset=0x8)" P-DEP -; V100 tmp96 [V100,T46] ( 2, 4 ) int -> [rbp-0x3C] do-not-enreg[] "field V17._length (fldOffset=0xc)" P-DEP +; V98 tmp94 [V98,T40] ( 2, 4 ) ref -> [rbp-0x40] do-not-enreg[] "field V17._object (fldOffset=0x0)" P-DEP +; V99 tmp95 [V99,T45] ( 2, 4 ) int -> [rbp-0x38] do-not-enreg[] "field V17._index (fldOffset=0x8)" P-DEP +; V100 tmp96 [V100,T46] ( 2, 4 ) int -> [rbp-0x34] do-not-enreg[] "field V17._length (fldOffset=0xc)" P-DEP ;* V101 tmp97 [V101 ] ( 0, 0 ) ref -> zero-ref "field V18._object (fldOffset=0x0)" P-INDEP ;* V102 tmp98 [V102 ] ( 0, 0 ) int -> zero-ref "field V18._index (fldOffset=0x8)" P-INDEP ;* V103 tmp99 [V103 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0xc)" P-INDEP ; V104 tmp100 [V104,T32] ( 3, 6 ) ref -> rdx "field V19._object (fldOffset=0x0)" P-INDEP ; V105 tmp101 [V105,T34] ( 3, 6 ) int -> rdi "field V19._index (fldOffset=0x8)" P-INDEP ; V106 tmp102 [V106,T35] ( 3, 6 ) int -> rax "field V19._length (fldOffset=0xc)" P-INDEP ; V107 tmp103 [V107,T24] ( 4, 8 ) ref -> rdx "field V21._object (fldOffset=0x0)" P-INDEP ; V108 tmp104 [V108,T26] ( 4, 8 ) int -> r8 "field V21._index (fldOffset=0x8)" P-INDEP ; V109 tmp105 [V109,T22] ( 5, 10 ) int -> rax "field V21._length (fldOffset=0xc)" P-INDEP ; V110 tmp106 [V110,T41] ( 2, 4 ) ref -> rcx "field V23._object (fldOffset=0x0)" P-INDEP ;* V111 tmp107 [V111,T66] ( 0, 0 ) int -> zero-ref "field V23._integer (fldOffset=0x8)" P-INDEP -; V112 tmp108 [V112,T42] ( 2, 4 ) ref -> rsi "field V25._object (fldOffset=0x0)" P-INDEP +; V112 tmp108 [V112,T42] ( 2, 4 ) ref -> rdi "field V25._object (fldOffset=0x0)" P-INDEP ; V113 tmp109 [V113,T47] ( 2, 4 ) int -> rdx "field V25._index (fldOffset=0x8)" P-INDEP ; V114 tmp110 [V114,T48] ( 2, 4 ) int -> rax "field V25._length (fldOffset=0xc)" P-INDEP ; V115 tmp111 [V115,T43] ( 2, 4 ) ref -> rdx "field V30._object (fldOffset=0x0)" P-INDEP ; V116 tmp112 [V116,T49] ( 2, 4 ) int -> r8 "field V30._index (fldOffset=0x8)" P-INDEP ; V117 tmp113 [V117,T50] ( 2, 4 ) int -> rax "field V30._length (fldOffset=0xc)" P-INDEP ; V118 tmp114 [V118,T44] ( 2, 4 ) ref -> rdx "field V36._object (fldOffset=0x0)" P-INDEP ; V119 tmp115 [V119,T51] ( 2, 4 ) int -> rcx "field V36._index (fldOffset=0x8)" P-INDEP ; V120 tmp116 [V120,T52] ( 2, 4 ) int -> rax "field V36._length (fldOffset=0xc)" P-INDEP ;* V121 tmp117 [V121 ] ( 0, 0 ) ref -> zero-ref "field V39._object (fldOffset=0x0)" P-INDEP ;* V122 tmp118 [V122 ] ( 0, 0 ) int -> zero-ref "field V39._index (fldOffset=0x8)" P-INDEP ;* V123 tmp119 [V123 ] ( 0, 0 ) int -> zero-ref "field V39._length (fldOffset=0xc)" P-INDEP ;* V124 tmp120 [V124 ] ( 0, 0 ) ref -> zero-ref "field V42._object (fldOffset=0x0)" P-INDEP ;* V125 tmp121 [V125 ] ( 0, 0 ) int -> zero-ref "field V42._integer (fldOffset=0x8)" P-INDEP -; V126 tmp122 [V126,T77] ( 1, 0.50) ref -> [rbp-0x58] do-not-enreg[] "field V51._object (fldOffset=0x0)" P-DEP -; V127 tmp123 [V127,T78] ( 1, 0.50) int -> [rbp-0x50] do-not-enreg[] "field V51._index (fldOffset=0x8)" P-DEP -; V128 tmp124 [V128,T74] ( 2, 1 ) int -> [rbp-0x4C] do-not-enreg[] "field V51._length (fldOffset=0xc)" P-DEP +; V126 tmp122 [V126,T77] ( 1, 0.50) ref -> [rbp-0x50] do-not-enreg[] "field V51._object (fldOffset=0x0)" P-DEP +; V127 tmp123 [V127,T78] ( 1, 0.50) int -> [rbp-0x48] do-not-enreg[] "field V51._index (fldOffset=0x8)" P-DEP +; V128 tmp124 [V128,T74] ( 2, 1 ) int -> [rbp-0x44] do-not-enreg[] "field V51._length (fldOffset=0xc)" P-DEP ;* V129 tmp125 [V129 ] ( 0, 0 ) ref -> zero-ref "field V52._object (fldOffset=0x0)" P-INDEP ;* V130 tmp126 [V130 ] ( 0, 0 ) int -> zero-ref "field V52._index (fldOffset=0x8)" P-INDEP ;* V131 tmp127 [V131 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0xc)" P-INDEP ;* V132 tmp128 [V132 ] ( 0, 0 ) ref -> zero-ref "field V53._object (fldOffset=0x0)" P-INDEP ;* V133 tmp129 [V133 ] ( 0, 0 ) int -> zero-ref "field V53._index (fldOffset=0x8)" P-INDEP ;* V134 tmp130 [V134 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0xc)" P-INDEP ;* V135 tmp131 [V135 ] ( 0, 0 ) ref -> zero-ref "field V55._object (fldOffset=0x0)" P-INDEP ;* V136 tmp132 [V136 ] ( 0, 0 ) int -> zero-ref "field V55._index (fldOffset=0x8)" P-INDEP ; V137 tmp133 [V137,T64] ( 4, 2 ) int -> rdi "field V55._length (fldOffset=0xc)" P-INDEP ;* V138 tmp134 [V138 ] ( 0, 0 ) ref -> zero-ref "field V57._object (fldOffset=0x0)" P-INDEP ;* V139 tmp135 [V139 ] ( 0, 0 ) int -> zero-ref "field V57._integer (fldOffset=0x8)" P-INDEP ;* V140 tmp136 [V140 ] ( 0, 0 ) ref -> zero-ref "field V59._object (fldOffset=0x0)" P-INDEP ;* V141 tmp137 [V141 ] ( 0, 0 ) int -> zero-ref "field V59._index (fldOffset=0x8)" P-INDEP ;* V142 tmp138 [V142 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0xc)" P-INDEP ;* V143 tmp139 [V143 ] ( 0, 0 ) ref -> zero-ref "field V64._object (fldOffset=0x0)" P-INDEP ;* V144 tmp140 [V144 ] ( 0, 0 ) int -> zero-ref "field V64._index (fldOffset=0x8)" P-INDEP ;* V145 tmp141 [V145 ] ( 0, 0 ) int -> zero-ref "field V64._length (fldOffset=0xc)" P-INDEP ;* V146 tmp142 [V146 ] ( 0, 0 ) ref -> zero-ref "field V70._object (fldOffset=0x0)" P-INDEP ;* V147 tmp143 [V147 ] ( 0, 0 ) int -> zero-ref "field V70._index (fldOffset=0x8)" P-INDEP ;* V148 tmp144 [V148 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0xc)" P-INDEP ;* V149 tmp145 [V149 ] ( 0, 0 ) ref -> zero-ref "field V73._object (fldOffset=0x0)" P-INDEP ;* V150 tmp146 [V150 ] ( 0, 0 ) int -> zero-ref "field V73._index (fldOffset=0x8)" P-INDEP ;* V151 tmp147 [V151 ] ( 0, 0 ) int -> zero-ref "field V73._length (fldOffset=0xc)" P-INDEP ;* V152 tmp148 [V152 ] ( 0, 0 ) byref -> zero-ref "field V74._reference (fldOffset=0x0)" P-INDEP ;* V153 tmp149 [V153 ] ( 0, 0 ) int -> zero-ref "field V74._length (fldOffset=0x8)" P-INDEP ; V154 tmp150 [V154,T72] ( 2, 1 ) byref -> rax single-def "field V78._reference (fldOffset=0x0)" P-INDEP ; V155 tmp151 [V155,T75] ( 2, 1 ) int -> r14 "field V78._length (fldOffset=0x8)" P-INDEP ;* V156 tmp152 [V156 ] ( 0, 0 ) byref -> zero-ref "field V80._reference (fldOffset=0x0)" P-DEP ;* V157 tmp153 [V157 ] ( 0, 0 ) int -> zero-ref "field V80._length (fldOffset=0x8)" P-DEP ; V158 tmp154 [V158,T73] ( 2, 1 ) byref -> r15 "field V81._reference (fldOffset=0x0)" P-INDEP ; V159 tmp155 [V159,T76] ( 2, 1 ) int -> r14 "field V81._length (fldOffset=0x8)" P-INDEP ;* V160 tmp156 [V160 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP ;* V161 tmp157 [V161 ] ( 0, 0 ) int -> zero-ref "field V87._length (fldOffset=0x8)" P-INDEP ; V162 tmp158 [V162,T17] ( 3, 12 ) ref -> rax "argument with side effect" ; V163 tmp159 [V163,T59] ( 3, 3 ) ref -> rax single-def "argument with side effect" ; V164 cse0 [V164,T36] ( 3, 6 ) int -> rdx "CSE #02: conservative" ; V165 cse1 [V165,T70] ( 3, 1.50) int -> r15 "CSE #10: conservative" ; V166 cse2 [V166,T04] ( 4, 24.50) byref -> r13 "CSE #01: aggressive" ; V167 rat0 [V167,T12] ( 5, 15 ) ref -> rax "replacement local" ; V168 rat1 [V168,T37] ( 3, 5 ) long -> rdi "CSE for expectedClsNode" -; V169 rat2 [V169,T53] ( 5, 3.75) ref -> rax "replacement local" +; V169 rat2 [V169,T53] ( 5, 3.75) ref -> r12 "replacement local" ; V170 rat3 [V170,T71] ( 3, 1.25) long -> rdi "CSE for expectedClsNode" ; -; Lcl frame size = 88 +; Lcl frame size = 72 G_M26249_IG01: push rbp push r15 push r14 push r13 push r12 push rbx - sub rsp, 88 - lea rbp, [rsp+0x80] - xor eax, eax - mov qword ptr [rbp-0x58], rax + sub rsp, 72 + lea rbp, [rsp+0x70] vxorps xmm8, xmm8, xmm8 - vmovdqa xmmword ptr [rbp-0x50], xmm8 - mov qword ptr [rbp-0x40], rax + vmovdqu ymmword ptr [rbp-0x50], ymm8 mov rbx, rdi - ;; size=45 bbWeight=8 PerfScore 92.67 + ;; size=32 bbWeight=8 PerfScore 74.67 G_M26249_IG02: mov r15, gword ptr [rbx+0x70] mov r14d, dword ptr [rbx+0x78] lea r13, bword ptr [rbx+0x60] lea rdi, bword ptr [rbx+0x70] mov rsi, r13 call CORINFO_HELP_ASSIGN_BYREF movsq lea rsi, bword ptr [rbx+0x80] mov r12, r13 mov rax, gword ptr [r12] xor rcx, rcx - mov gword ptr [rbp-0x78], rcx + mov gword ptr [rbp-0x70], rcx test rax, rax je G_M26249_IG13 ;; size=55 bbWeight=8 PerfScore 100.00 G_M26249_IG03: mov edi, dword ptr [rsi+0x10] sar edi, 31 mov edx, dword ptr [rsi+0x14] mov r8d, edx sar r8d, 31 lea edi, [r8+2*rdi] neg edi mov r8, gword ptr [rsi+0x08] - mov gword ptr [rbp-0x68], r8 + mov gword ptr [rbp-0x60], r8 mov r9d, dword ptr [r12+0x08] - mov dword ptr [rbp-0x30], r9d + mov dword ptr [rbp-0x2C], r9d and edx, 0xD1FFAB1E - mov dword ptr [rbp-0x34], edx + mov dword ptr [rbp-0x30], edx test edi, edi je G_M26249_IG10 cmp rax, r8 - jne G_M26249_IG36 + jne G_M26249_IG37 cmp edi, 1 je SHORT G_M26249_IG04 mov rsi, r8 mov rdi, 0xD1FFAB1E ; System.Buffers.MemoryManager`1[ubyte] mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Buffers.MemoryManager`1[ubyte]:get_Memory():System.Memory`1[ubyte]:this - mov gword ptr [rbp-0x48], rax - mov qword ptr [rbp-0x40], rdx - mov eax, dword ptr [rbp-0x34] - mov ecx, dword ptr [rbp-0x30] + mov gword ptr [rbp-0x40], rax + mov qword ptr [rbp-0x38], rdx + mov eax, dword ptr [rbp-0x30] + mov ecx, dword ptr [rbp-0x2C] sub eax, ecx mov esi, ecx mov edi, eax add rsi, rdi - mov edi, dword ptr [rbp-0x3C] + mov edi, dword ptr [rbp-0x34] cmp rsi, rdi - ja G_M26249_IG37 - add ecx, dword ptr [rbp-0x40] - mov rdx, gword ptr [rbp-0x48] + ja G_M26249_IG38 + add ecx, dword ptr [rbp-0x38] + mov rdx, gword ptr [rbp-0x40] jmp G_M26249_IG12 ;; size=155 bbWeight=2 PerfScore 80.50 G_M26249_IG04: mov rax, r8 test rax, rax je SHORT G_M26249_IG07 ;; size=8 bbWeight=2 PerfScore 3.00 G_M26249_IG05: mov rdi, 0xD1FFAB1E ; ubyte[] cmp qword ptr [rax], rdi je SHORT G_M26249_IG07 ;; size=15 bbWeight=1 PerfScore 4.25 G_M26249_IG06: mov rsi, r8 mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTARRAY call [rax]CORINFO_HELP_CHKCASTARRAY ;; size=15 bbWeight=0.50 PerfScore 1.75 G_M26249_IG07: - mov edx, dword ptr [rbp-0x34] - mov r9d, dword ptr [rbp-0x30] + mov edx, dword ptr [rbp-0x30] + mov r9d, dword ptr [rbp-0x2C] mov esi, edx sub esi, r9d test rax, rax je SHORT G_M26249_IG08 mov edi, r9d mov edx, esi add rdi, rdx mov edx, dword ptr [rax+0x08] cmp rdi, rdx - ja G_M26249_IG37 + ja G_M26249_IG38 mov rdx, rax mov edi, r9d mov eax, esi jmp SHORT G_M26249_IG09 ;; size=47 bbWeight=2 PerfScore 21.00 G_M26249_IG08: mov edx, r9d or edx, esi - jne G_M26249_IG37 + jne G_M26249_IG38 xor rdx, rdx xor edi, edi xor eax, eax ;; size=17 bbWeight=2 PerfScore 4.50 G_M26249_IG09: mov r8d, edi mov ecx, r8d jmp G_M26249_IG12 ;; size=11 bbWeight=2 PerfScore 5.00 G_M26249_IG10: mov rsi, rax mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte] mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS call [rax]CORINFO_HELP_CHKCASTCLASS - mov rdi, gword ptr [rbp-0x68] - cmp rax, rdi + mov rsi, gword ptr [rbp-0x60] + cmp rax, rsi jne SHORT G_M26249_IG11 - mov rdx, gword ptr [rdi+0x18] - mov r8d, dword ptr [rdi+0x20] - mov eax, dword ptr [rdi+0x24] - mov edi, dword ptr [rbp-0x34] + mov rdx, gword ptr [rsi+0x18] + mov r8d, dword ptr [rsi+0x20] + mov eax, dword ptr [rsi+0x24] mov esi, dword ptr [rbp-0x30] - sub edi, esi - mov ecx, esi - mov r9d, edi + mov edi, dword ptr [rbp-0x2C] + sub esi, edi + mov ecx, edi + mov r9d, esi add rcx, r9 cmp rcx, rax - ja G_M26249_IG35 - add r8d, esi - mov eax, edi + ja G_M26249_IG36 + add r8d, edi + mov eax, esi mov rcx, rdx mov edx, r8d mov rsi, rcx mov ecx, edx mov rdx, rsi jmp SHORT G_M26249_IG12 ;; size=91 bbWeight=2 PerfScore 40.00 G_M26249_IG11: mov rcx, gword ptr [rax+0x08] test rcx, rcx - je G_M26249_IG36 + je G_M26249_IG37 + mov rsi, rcx mov rdx, gword ptr [rax+0x18] mov r8d, dword ptr [rax+0x20] mov eax, dword ptr [rax+0x24] - mov esi, dword ptr [rbp-0x30] - cmp esi, eax - ja G_M26249_IG35 - lea edi, [r8+rsi] - sub eax, esi - mov rsi, rdx - mov edx, edi - mov r8, rsi - mov gword ptr [rbp-0x78], rcx + mov edi, dword ptr [rbp-0x2C] + cmp edi, eax + ja G_M26249_IG36 + lea ecx, [r8+rdi] + sub eax, edi + mov rdi, rdx + mov edx, ecx + mov rcx, rdi + mov gword ptr [rbp-0x70], rsi + mov rdi, rcx mov ecx, edx - mov rdx, r8 - ;; size=58 bbWeight=2 PerfScore 29.00 + mov rdx, rdi + ;; size=64 bbWeight=2 PerfScore 30.00 G_M26249_IG12: - mov r8d, 1 - mov dword ptr [rbp-0x60], eax - mov gword ptr [rbp-0x70], rdx - mov dword ptr [rbp-0x5C], ecx - jmp SHORT G_M26249_IG14 - ;; size=18 bbWeight=2 PerfScore 10.50 + mov edi, 1 + jmp SHORT G_M26249_IG15 + ;; size=7 bbWeight=2 PerfScore 4.50 G_M26249_IG13: xor rdx, rdx - mov gword ptr [rbp-0x70], rdx + mov gword ptr [rbp-0x68], rdx xor eax, eax - mov dword ptr [rbp-0x5C], eax - xor r8d, r8d - mov dword ptr [rbp-0x60], r8d + mov dword ptr [rbp-0x54], eax xor edi, edi - xor r9d, r9d - mov r8d, r9d - ;; size=26 bbWeight=2 PerfScore 9.00 + xor r8d, r8d + ;; size=16 bbWeight=2 PerfScore 6.00 G_M26249_IG14: - mov dword ptr [rbp-0x2C], r8d - mov rsi, gword ptr [rbp-0x78] - mov rdi, r12 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov eax, r8d + mov ecx, dword ptr [rbp-0x54] + mov rdx, gword ptr [rbp-0x68] + ;; size=10 bbWeight=2 PerfScore 4.50 +G_M26249_IG15: + mov rsi, gword ptr [rbp-0x70] + mov gword ptr [r12], rsi xor esi, esi mov dword ptr [r12+0x08], esi - cmp byte ptr [rbp-0x2C], 0 - je G_M26249_IG33 - ;; size=33 bbWeight=8 PerfScore 60.00 -G_M26249_IG15: - mov r12d, dword ptr [rbp-0x60] - test r12d, r12d - je G_M26249_IG32 - ;; size=13 bbWeight=4 PerfScore 9.00 + test dil, dil + je G_M26249_IG34 + ;; size=24 bbWeight=8 PerfScore 36.00 G_M26249_IG16: + mov dword ptr [rbp-0x58], eax + test eax, eax + je G_M26249_IG33 + ;; size=11 bbWeight=4 PerfScore 9.00 +G_M26249_IG17: cmp byte ptr [rbx+0x24], 0 - je G_M26249_IG27 + je G_M26249_IG28 lea rsi, bword ptr [rbx+0x80] - mov rax, gword ptr [r13] - test rax, rax - je G_M26249_IG25 + mov r8, gword ptr [r13] + test r8, r8 + je G_M26249_IG26 mov edi, dword ptr [rsi+0x10] sar edi, 31 mov r15d, dword ptr [rsi+0x14] - mov ecx, r15d - sar ecx, 31 - lea edi, [rcx+2*rdi] + mov r9d, r15d + sar r9d, 31 + lea edi, [r9+2*rdi] neg edi mov r14, gword ptr [rsi+0x08] mov r13d, dword ptr [r13+0x08] and r15d, 0xD1FFAB1E test edi, edi - je G_M26249_IG22 - cmp rax, r14 - jne G_M26249_IG36 + je G_M26249_IG23 + cmp r8, r14 + jne G_M26249_IG37 cmp edi, 1 - je SHORT G_M26249_IG17 + je SHORT G_M26249_IG18 + mov gword ptr [rbp-0x68], rdx + mov dword ptr [rbp-0x54], ecx mov rsi, r14 mov rdi, 0xD1FFAB1E ; System.Buffers.MemoryManager`1[ubyte] - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS - call [rax]CORINFO_HELP_CHKCASTCLASS + mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS + call [r8]CORINFO_HELP_CHKCASTCLASS mov rdi, rax mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x20]System.Buffers.MemoryManager`1[ubyte]:get_Memory():System.Memory`1[ubyte]:this - mov gword ptr [rbp-0x58], rax - mov qword ptr [rbp-0x50], rdx + mov gword ptr [rbp-0x50], rax + mov qword ptr [rbp-0x48], rdx sub r15d, r13d mov esi, r15d mov edi, r13d add rsi, rdi - mov edi, dword ptr [rbp-0x4C] + mov edi, dword ptr [rbp-0x44] cmp rsi, rdi - jbe G_M26249_IG24 - jmp G_M26249_IG37 - ;; size=163 bbWeight=0.50 PerfScore 20.00 -G_M26249_IG17: - mov rax, r14 - test rax, rax - je SHORT G_M26249_IG20 - ;; size=8 bbWeight=0.50 PerfScore 0.75 + jbe G_M26249_IG25 + jmp G_M26249_IG38 + ;; size=173 bbWeight=0.50 PerfScore 21.00 G_M26249_IG18: - mov rdi, 0xD1FFAB1E ; ubyte[] - cmp qword ptr [rax], rdi - je SHORT G_M26249_IG20 - ;; size=15 bbWeight=0.25 PerfScore 1.06 + mov r12, r14 + test r12, r12 + je SHORT G_M26249_IG21 + ;; size=8 bbWeight=0.50 PerfScore 0.75 G_M26249_IG19: - mov rsi, r14 - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTARRAY - call [rax]CORINFO_HELP_CHKCASTARRAY - ;; size=15 bbWeight=0.12 PerfScore 0.44 + mov rdi, 0xD1FFAB1E ; ubyte[] + cmp qword ptr [r12], rdi + je SHORT G_M26249_IG21 + ;; size=16 bbWeight=0.25 PerfScore 1.06 G_M26249_IG20: + mov gword ptr [rbp-0x68], rdx + mov dword ptr [rbp-0x54], ecx + mov rsi, r14 + mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTARRAY + call [r8]CORINFO_HELP_CHKCASTARRAY + mov r12, rax + mov ecx, dword ptr [rbp-0x54] + mov rdx, gword ptr [rbp-0x68] + ;; size=33 bbWeight=0.12 PerfScore 0.97 +G_M26249_IG21: mov esi, r15d sub esi, r13d - test rax, rax - je SHORT G_M26249_IG21 + test r12, r12 + je SHORT G_M26249_IG22 mov edi, r13d add rsi, rdi - mov edi, dword ptr [rax+0x08] + mov edi, dword ptr [r12+0x08] cmp rsi, rdi - jbe SHORT G_M26249_IG24 - jmp G_M26249_IG37 - ;; size=30 bbWeight=0.50 PerfScore 3.75 -G_M26249_IG21: - or esi, r13d - je SHORT G_M26249_IG24 - jmp G_M26249_IG37 - ;; size=10 bbWeight=0.50 PerfScore 1.62 + mov gword ptr [rbp-0x68], rdx + mov dword ptr [rbp-0x54], ecx + jbe SHORT G_M26249_IG25 + jmp G_M26249_IG38 + ;; size=39 bbWeight=0.50 PerfScore 4.75 G_M26249_IG22: - mov rsi, rax + or esi, r13d + mov gword ptr [rbp-0x68], rdx + mov dword ptr [rbp-0x54], ecx + je SHORT G_M26249_IG25 + jmp G_M26249_IG38 + ;; size=17 bbWeight=0.50 PerfScore 2.62 +G_M26249_IG23: + mov gword ptr [rbp-0x68], rdx + mov dword ptr [rbp-0x54], ecx + mov rsi, r8 mov rdi, 0xD1FFAB1E ; System.Buffers.ReadOnlySequenceSegment`1[ubyte] - mov rax, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS - call [rax]CORINFO_HELP_CHKCASTCLASS + mov r8, 0xD1FFAB1E ; code for CORINFO_HELP_CHKCASTCLASS + call [r8]CORINFO_HELP_CHKCASTCLASS cmp rax, r14 - jne SHORT G_M26249_IG23 + jne SHORT G_M26249_IG24 mov edi, dword ptr [r14+0x24] mov eax, r15d sub eax, r13d mov ecx, r13d add rax, rcx cmp rax, rdi - jbe SHORT G_M26249_IG24 - jmp G_M26249_IG35 - ;; size=56 bbWeight=0.50 PerfScore 5.62 -G_M26249_IG23: + jbe SHORT G_M26249_IG25 + jmp G_M26249_IG36 + ;; size=64 bbWeight=0.50 PerfScore 6.62 +G_M26249_IG24: cmp gword ptr [rax+0x08], 0 - je G_M26249_IG36 + je G_M26249_IG37 mov edi, dword ptr [rax+0x24] cmp r13d, edi - ja G_M26249_IG35 + ja G_M26249_IG36 ;; size=23 bbWeight=0.50 PerfScore 3.62 -G_M26249_IG24: +G_M26249_IG25: mov edi, 1 - jmp SHORT G_M26249_IG26 + jmp SHORT G_M26249_IG27 ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M26249_IG25: - xor edi, edi - ;; size=2 bbWeight=0.50 PerfScore 0.12 G_M26249_IG26: + xor edi, edi + mov gword ptr [rbp-0x68], rdx + mov dword ptr [rbp-0x54], ecx + ;; size=9 bbWeight=0.50 PerfScore 1.12 +G_M26249_IG27: test edi, edi sete dil mov byte ptr [rbx+0x2A], dil - ;; size=10 bbWeight=0.50 PerfScore 1.12 -G_M26249_IG27: + mov ecx, dword ptr [rbp-0x54] + mov rdx, gword ptr [rbp-0x68] + ;; size=17 bbWeight=0.50 PerfScore 2.12 +G_M26249_IG28: xor r15, r15 xor r14d, r14d - mov r13, gword ptr [rbp-0x70] - test r13, r13 - je SHORT G_M26249_IG30 - mov rdi, qword ptr [r13] + test rdx, rdx + je SHORT G_M26249_IG31 + mov rdi, qword ptr [rdx] test dword ptr [rdi], 0xD1FFAB1E - jne SHORT G_M26249_IG28 - mov rdi, r13 - mov rax, qword ptr [r13] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this + jne SHORT G_M26249_IG29 + mov dword ptr [rbp-0x54], ecx + mov rdi, rdx + mov rdx, qword ptr [rdx] + mov rdx, qword ptr [rdx+0x40] + call [rdx+0x28]System.Buffers.MemoryManager`1[ubyte]:GetSpan():System.Span`1[ubyte]:this mov r15, rax mov r14d, edx - jmp SHORT G_M26249_IG29 - ;; size=49 bbWeight=0.50 PerfScore 9.25 -G_M26249_IG28: - lea r15, bword ptr [r13+0x10] - mov r14d, dword ptr [r13+0x08] - ;; size=8 bbWeight=0.50 PerfScore 1.25 + jmp SHORT G_M26249_IG30 + ;; size=46 bbWeight=0.50 PerfScore 9.25 G_M26249_IG29: - mov r13d, dword ptr [rbp-0x5C] - and r13d, 0xD1FFAB1E - mov eax, r13d - mov edi, r12d - add rdi, rax - mov esi, r14d - cmp rdi, rsi - ja G_M26249_IG37 - add r15, rax - mov r14d, r12d - ;; size=38 bbWeight=0.50 PerfScore 2.00 + lea r15, bword ptr [rdx+0x10] + mov r14d, dword ptr [rdx+0x08] + mov dword ptr [rbp-0x54], ecx + ;; size=11 bbWeight=0.50 PerfScore 1.75 G_M26249_IG30: + mov ecx, dword ptr [rbp-0x54] + and ecx, 0xD1FFAB1E + mov edi, ecx + mov eax, dword ptr [rbp-0x58] + mov ecx, eax + add rcx, rdi + mov edx, r14d + cmp rcx, rdx + ja SHORT G_M26249_IG38 + add r15, rdi + mov r14d, eax + ;; size=33 bbWeight=0.50 PerfScore 2.50 +G_M26249_IG31: mov rax, r15 mov bword ptr [rbx+0x30], rax mov dword ptr [rbx+0x38], r14d movsxd rax, dword ptr [rbx+0x20] add qword ptr [rbx+0x10], rax xor eax, eax mov dword ptr [rbx+0x20], eax mov eax, 1 ;; size=29 bbWeight=0.50 PerfScore 5.38 -G_M26249_IG31: - add rsp, 88 +G_M26249_IG32: + add rsp, 72 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M26249_IG32: - lea rdi, bword ptr [rbx+0x70] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF +G_M26249_IG33: + mov gword ptr [rbx+0x70], r15 mov dword ptr [rbx+0x78], r14d jmp G_M26249_IG02 - ;; size=21 bbWeight=4 PerfScore 19.00 -G_M26249_IG33: - lea rdi, bword ptr [rbx+0x70] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF + ;; size=13 bbWeight=4 PerfScore 16.00 +G_M26249_IG34: + mov gword ptr [rbx+0x70], r15 mov dword ptr [rbx+0x78], r14d mov byte ptr [rbx+0x2A], 1 xor eax, eax - ;; size=22 bbWeight=0.50 PerfScore 2.00 -G_M26249_IG34: - add rsp, 88 + ;; size=14 bbWeight=0.50 PerfScore 1.62 +G_M26249_IG35: + add rsp, 72 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12 -G_M26249_IG35: +G_M26249_IG36: mov edi, 33 mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException(int) call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException(int) int3 ;; size=18 bbWeight=0 PerfScore 0.00 -G_M26249_IG36: +G_M26249_IG37: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowInvalidOperationException_EndPositionNotReached() call [rax]System.ThrowHelper:ThrowInvalidOperationException_EndPositionNotReached() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -G_M26249_IG37: +G_M26249_IG38: mov rax, 0xD1FFAB1E ; code for System.ThrowHelper:ThrowArgumentOutOfRangeException() call [rax]System.ThrowHelper:ThrowArgumentOutOfRangeException() int3 ;; size=13 bbWeight=0 PerfScore 0.00 -; Total bytes of code 1187, prolog size 45, PerfScore 552.54, instruction count 330, allocated bytes for code 1187 (MethodHash=b36f9976) for method System.Text.Json.Utf8JsonReader:GetNextSpan():ubyte:this (FullOpts) +; Total bytes of code 1204, prolog size 32, PerfScore 511.20, instruction count 339, allocated bytes for code 1204 (MethodHash=b36f9976) for method System.Text.Json.Utf8JsonReader:GetNextSpan():ubyte:this (FullOpts) ```

Note: some changes were skipped as they were likely noise.

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

MihuBot commented 3 months ago

Top method improvements

-216 (-4.16 % of base) - System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this ```diff ; Assembly listing for method System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (FullOpts) ; Emitting BLENDED_CODE for X86 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; fully interruptible ; No PGO data ; 0 inlinees with PGO data; 47 single block inlinees; 9 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] (126,529 ) byref -> rbx this single-def ; V01 loc0 [V01,T01] ( 28,204 ) ushort -> [rbp-0x2C] ; V02 loc1 [V02,T42] ( 8, 19 ) ubyte -> registers ; V03 loc2 [V03,T77] ( 3, 6 ) ubyte -> r15 ; V04 loc3 [V04,T27] ( 8, 38 ) int -> r13 ; V05 loc4 [V05,T49] ( 5, 14 ) int -> r12 ; V06 loc5 [V06,T78] ( 3, 6 ) int -> rdx ; V07 loc6 [V07,T75] ( 3, 6 ) ref -> r15 class-hnd exact ; V08 loc7 [V08,T83] ( 2, 4 ) ref -> r15 class-hnd exact ; V09 loc8 [V09,T24] ( 8, 40 ) int -> registers ; V10 loc9 [V10,T07] ( 6, 72 ) int -> r15 ; V11 loc10 [V11,T06] ( 7, 80 ) int -> registers ; V12 loc11 [V12,T26] ( 3, 40 ) ubyte -> rsi ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T61] ( 5, 10 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" ; V15 tmp2 [V15,T65] ( 2, 8 ) int -> rsi "dup spill" ; V16 tmp3 [V16,T91] ( 3, 0 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V17 tmp4 [V17,T94] ( 2, 0 ) ref -> rdi class-hnd exact "impImportAndPushBox" ; V18 tmp5 [V18,T92] ( 3, 0 ) ref -> rax ; V19 tmp6 [V19,T93] ( 3, 0 ) ref -> r15 class-hnd exact "Single-def Box Helper" ; V20 tmp7 [V20,T95] ( 2, 0 ) ref -> rdi class-hnd exact "impImportAndPushBox" ;* V21 tmp8 [V21 ] ( 0, 0 ) byref -> zero-ref ;* V22 tmp9 [V22 ] ( 0, 0 ) byref -> zero-ref ; V23 tmp10 [V23,T79] ( 3, 6 ) int -> r12 ; V24 tmp11 [V24,T43] ( 4, 16 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V25 tmp12 [V25,T66] ( 2, 8 ) int -> r14 "dup spill" ; V26 tmp13 [V26,T51] ( 3, 12 ) ref -> rdi class-hnd exact "impAppendStmt" ;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "non-inline candidate call" ; V28 tmp15 [V28,T29] ( 2, 32 ) int -> r15 "dup spill" ; V29 tmp16 [V29,T13] ( 3, 48 ) ref -> rsi class-hnd exact "impAppendStmt" ; V30 tmp17 [V30,T36] ( 3, 24 ) int -> rax ; V31 tmp18 [V31,T38] ( 5, 20 ) ref -> r13 class-hnd exact "NewObj constructor temp" ;* V32 tmp19 [V32 ] ( 0, 0 ) byref -> zero-ref -; V33 tmp20 [V33,T39] ( 5, 20 ) ref -> rsi class-hnd exact "NewObj constructor temp" +; V33 tmp20 [V33,T39] ( 5, 20 ) ref -> rax class-hnd exact "NewObj constructor temp" ;* V34 tmp21 [V34 ] ( 0, 0 ) byref -> zero-ref -; V35 tmp22 [V35,T76] ( 3, 6 ) ref -> rsi -; V36 tmp23 [V36,T40] ( 5, 20 ) ref -> rsi class-hnd exact "NewObj constructor temp" +; V35 tmp22 [V35,T76] ( 3, 6 ) ref -> rax +; V36 tmp23 [V36,T40] ( 5, 20 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V37 tmp24 [V37,T52] ( 3, 12 ) byref -> rdi "dup spill" ;* V38 tmp25 [V38 ] ( 0, 0 ) byref -> zero-ref ;* V39 tmp26 [V39 ] ( 0, 0 ) byref -> zero-ref ; V40 tmp27 [V40,T80] ( 3, 6 ) int -> r15 ; V41 tmp28 [V41,T44] ( 4, 16 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V42 tmp29 [V42,T10] ( 2, 64 ) int -> r12 "dup spill" ; V43 tmp30 [V43,T11] ( 2, 64 ) int -> r12 "dup spill" ; V44 tmp31 [V44,T85] ( 2, 4 ) int -> rdi "Inlining Arg" ; V45 tmp32 [V45,T62] ( 4, 8 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" ; V46 tmp33 [V46,T63] ( 4, 8 ) ref -> rax class-hnd exact single-def "NewObj constructor temp" ; V47 tmp34 [V47,T86] ( 2, 4 ) int -> rdi "Inlining Arg" ; V48 tmp35 [V48,T87] ( 2, 4 ) int -> rdi "Inlining Arg" ;* V49 tmp36 [V49,T47] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V50 tmp37 [V50,T30] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V51 tmp38 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V52 tmp39 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V53 tmp40 [V53,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V54 tmp41 [V54,T31] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V55 tmp42 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V56 tmp43 [V56 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ;* V57 tmp44 [V57,T90] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V58 tmp45 [V58,T89] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V59 tmp46 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V60 tmp47 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V61 tmp48 [V61,T81] ( 3, 6 ) ubyte -> r14 "Inline return value spill temp" ;* V62 tmp49 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ;* V63 tmp50 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" ; V64 tmp51 [V64,T67] ( 2, 8 ) int -> rdi "Inlining Arg" ; V65 tmp52 [V65,T32] ( 6, 24 ) byref -> rdi "Inlining Arg" ; V66 tmp53 [V66,T64] ( 4, 8 ) int -> r15 "Inline stloc first use temp" ;* V67 tmp54 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" ; V68 tmp55 [V68,T56] ( 3, 12 ) int -> rsi "Inlining Arg" ; V69 tmp56 [V69,T45] ( 4, 16 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V70 tmp57 [V70,T46] ( 4, 16 ) ref -> rax class-hnd exact "NewObj constructor temp" ; V71 tmp58 [V71,T68] ( 2, 8 ) int -> rdi "Inlining Arg" ; V72 tmp59 [V72,T69] ( 2, 8 ) int -> rdi "Inlining Arg" ;* V73 tmp60 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V74 tmp61 [V74,T41] ( 5, 20 ) byref -> rdi "Inlining Arg" ; V75 tmp62 [V75,T57] ( 3, 12 ) int -> rsi "Span.get_Item index" ; V76 tmp63 [V76,T53] ( 3, 12 ) byref -> rdi "Span.get_Item ptrToSpan" ;* V77 tmp64 [V77 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V78 tmp65 [V78,T70] ( 2, 8 ) int -> rdi "Inlining Arg" ;* V79 tmp66 [V79 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V80 tmp67 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -; V81 tmp68 [V81,T71] ( 2, 8 ) int -> rdi "Inlining Arg" +; V81 tmp68 [V81,T71] ( 2, 8 ) int -> rcx "Inlining Arg" ;* V82 tmp69 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V83 tmp70 [V83,T72] ( 2, 8 ) int -> rdi "Inlining Arg" ; V84 tmp71 [V84,T73] ( 2, 8 ) int -> rdi "Inlining Arg" ;* V85 tmp72 [V85 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP ;* V86 tmp73 [V86 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V87 tmp74 [V87 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP ;* V88 tmp75 [V88 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP ;* V89 tmp76 [V89 ] ( 0, 0 ) byref -> zero-ref "field V55._reference (fldOffset=0x0)" P-INDEP ;* V90 tmp77 [V90 ] ( 0, 0 ) int -> zero-ref "field V55._length (fldOffset=0x8)" P-INDEP ;* V91 tmp78 [V91 ] ( 0, 0 ) byref -> zero-ref "field V56._reference (fldOffset=0x0)" P-INDEP ;* V92 tmp79 [V92 ] ( 0, 0 ) int -> zero-ref "field V56._length (fldOffset=0x8)" P-INDEP ;* V93 tmp80 [V93 ] ( 0, 0 ) byref -> zero-ref "field V59._reference (fldOffset=0x0)" P-INDEP ;* V94 tmp81 [V94 ] ( 0, 0 ) int -> zero-ref "field V59._length (fldOffset=0x8)" P-INDEP ;* V95 tmp82 [V95 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP ;* V96 tmp83 [V96 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP ;* V97 tmp84 [V97 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP ;* V98 tmp85 [V98 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP ;* V99 tmp86 [V99 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP ;* V100 tmp87 [V100 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP ; V101 tmp88 [V101,T84] ( 2, 4 ) byref -> r13 "field V67._reference (fldOffset=0x0)" P-INDEP ; V102 tmp89 [V102,T88] ( 2, 4 ) int -> rax "field V67._length (fldOffset=0x8)" P-INDEP ; V103 tmp90 [V103,T02] ( 3, 96 ) ref -> rax "arr expr" ; V104 tmp91 [V104,T04] ( 3, 96 ) int -> rdi "index expr" ; V105 tmp92 [V105,T03] ( 3, 96 ) ref -> rax "arr expr" ; V106 tmp93 [V106,T05] ( 3, 96 ) int -> rdi "index expr" ; V107 tmp94 [V107,T54] ( 3, 12 ) ref -> rsi "arr expr" ; V108 tmp95 [V108,T58] ( 3, 12 ) int -> rdx "index expr" ; V109 tmp96 [V109,T55] ( 3, 12 ) ref -> rdi "arr expr" ; V110 tmp97 [V110,T74] ( 2, 8 ) int -> rdi "argument with side effect" ; V111 tmp98 [V111,T96] ( 2, 0 ) ref -> rdx "argument with side effect" ; V112 tmp99 [V112,T97] ( 2, 0 ) ref -> rdx "argument with side effect" ; V113 tmp100 [V113,T98] ( 2, 0 ) ref -> rdx "argument with side effect" ; V114 tmp101 [V114,T99] ( 2, 0 ) ref -> rdx "argument with side effect" ; V115 tmp102 [V115,T14] ( 3, 48 ) ref -> rcx "arr expr" ; V116 tmp103 [V116,T19] ( 3, 48 ) int -> rdx "index expr" ; V117 tmp104 [V117,T15] ( 3, 48 ) ref -> rax "arr expr" ; V118 tmp105 [V118,T20] ( 3, 48 ) int -> rdi "index expr" ; V119 tmp106 [V119,T16] ( 3, 48 ) ref -> rdx "arr expr" ; V120 tmp107 [V120,T21] ( 3, 48 ) int -> rcx "index expr" ; V121 tmp108 [V121,T08] ( 2, 64 ) ref -> rsi "argument with side effect" ; V122 tmp109 [V122,T09] ( 2, 64 ) ref -> [rbp-0x38] spill-single-def "argument with side effect" ; V123 tmp110 [V123,T100] ( 2, 0 ) ref -> rdx "argument with side effect" ; V124 tmp111 [V124,T101] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V125 cse0 [V125,T82] ( 3, 6 ) int -> rsi "CSE #11: conservative" ; V126 cse1 [V126,T25] ( 5, 40 ) int -> rdi "CSE #18: moderate" ; V127 cse2 [V127,T28] ( 4, 32 ) int -> rdi "CSE #22: moderate" ; V128 cse3 [V128,T17] ( 3, 48 ) ref -> rax "CSE #02: moderate" ; V129 cse4 [V129,T22] ( 3, 48 ) int -> rdi "CSE #03: moderate" ; V130 cse5 [V130,T18] ( 3, 48 ) ref -> rax "CSE #04: moderate" ; V131 cse6 [V131,T23] ( 3, 48 ) int -> rdi "CSE #05: moderate" ; V132 cse7 [V132,T12] ( 4, 48 ) int -> rdi "CSE #25: moderate" ; V133 cse8 [V133,T33] ( 3, 24 ) ref -> rcx "CSE #19: moderate" ; V134 cse9 [V134,T34] ( 3, 24 ) ref -> rax "CSE #20: moderate" ; V135 cse10 [V135,T37] ( 3, 24 ) int -> rdi "CSE #21: moderate" ; V136 cse11 [V136,T35] ( 3, 24 ) ref -> rsi "CSE #23: moderate" ; V137 cse12 [V137,T50] ( 4, 12 ) int -> rdi "CSE #08: conservative" ; V138 rat0 [V138,T60] ( 3, 11.20) int -> r13 "ReplaceWithLclVar is creating a new local variable" ; V139 rat1 [V139,T59] ( 3, 11.75) int -> r12 "ReplaceWithLclVar is creating a new local variable" ; ; Lcl frame size = 24 G_M39122_IG01: push rbp push r15 push r14 push r13 push r12 push rbx sub rsp, 24 lea rbp, [rsp+0x40] mov rbx, rdi ;; size=22 bbWeight=1 PerfScore 7.00 G_M39122_IG02: xor r15d, r15d mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov edi, dword ptr [rbx+0x70] and edi, -2 mov byte ptr [rax+0x2E], 28 mov dword ptr [rax+0x28], edi mov rdi, 0xD1FFAB1E mov qword ptr [rax+0x20], rdi - lea rdi, bword ptr [rbx+0x08] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x08], rax mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov edi, dword ptr [rbx+0x70] mov byte ptr [rax+0x2E], 24 mov dword ptr [rax+0x28], edi - lea rdi, bword ptr [rbx+0x10] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x10], rax mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov edi, dword ptr [rbx+0x70] mov byte ptr [rax+0x2E], 25 mov dword ptr [rax+0x28], edi - lea rdi, bword ptr [rbx+0x18] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x18], rax mov edi, dword ptr [rbx+0x58] mov rax, gword ptr [rbx+0x28] cmp edi, dword ptr [rax+0x08] jge G_M39122_IG58 - ;; size=147 bbWeight=1 PerfScore 30.75 + ;; size=123 bbWeight=1 PerfScore 28.50 G_M39122_IG03: xor edi, edi xor r14d, r14d mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanBlank():this call [rax]System.Text.RegularExpressions.RegexParser:ScanBlank():this mov r13d, dword ptr [rbx+0x58] test byte ptr [rbx+0x70], 32 je SHORT G_M39122_IG05 jmp SHORT G_M39122_IG07 ;; size=32 bbWeight=4 PerfScore 48.00 G_M39122_IG04: inc dword ptr [rbx+0x58] ;; size=3 bbWeight=8 PerfScore 24.00 G_M39122_IG05: mov edi, dword ptr [rbx+0x58] mov rax, gword ptr [rbx+0x28] cmp edi, dword ptr [rax+0x08] jge G_M39122_IG08 cmp edi, dword ptr [rax+0x08] jae G_M39122_IG67 movzx r12, word ptr [rax+2*rdi+0x0C] cmp r12d, 124 jg SHORT G_M39122_IG04 mov edi, r12d mov rax, 0xD1FFAB1E ; static handle cmp byte ptr [rdi+rax], 3 jb SHORT G_M39122_IG04 cmp r12d, 123 jne SHORT G_M39122_IG08 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this call [rax]System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this test eax, eax je SHORT G_M39122_IG04 jmp SHORT G_M39122_IG08 ;; size=83 bbWeight=16 PerfScore 444.00 G_M39122_IG06: inc dword ptr [rbx+0x58] ;; size=3 bbWeight=8 PerfScore 24.00 G_M39122_IG07: mov edi, dword ptr [rbx+0x58] mov rax, gword ptr [rbx+0x28] cmp edi, dword ptr [rax+0x08] jge SHORT G_M39122_IG08 cmp edi, dword ptr [rax+0x08] jae G_M39122_IG67 movzx r12, word ptr [rax+2*rdi+0x0C] cmp r12d, 124 jg SHORT G_M39122_IG06 mov edi, r12d mov rax, 0xD1FFAB1E ; static handle cmp byte ptr [rdi+rax], 0 jbe SHORT G_M39122_IG06 cmp r12d, 123 jne SHORT G_M39122_IG08 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this call [rax]System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this test eax, eax je SHORT G_M39122_IG06 ;; size=77 bbWeight=16 PerfScore 412.00 G_M39122_IG08: mov r12d, dword ptr [rbx+0x58] mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanBlank():this call [rax]System.Text.RegularExpressions.RegexParser:ScanBlank():this mov edi, dword ptr [rbx+0x58] mov rsi, gword ptr [rbx+0x28] cmp edi, dword ptr [rsi+0x08] je SHORT G_M39122_IG14 ;; size=31 bbWeight=4 PerfScore 54.00 G_M39122_IG09: mov rsi, gword ptr [rbx+0x28] mov edx, edi cmp edx, dword ptr [rsi+0x08] jae G_M39122_IG67 movzx rsi, word ptr [rsi+2*rdx+0x0C] mov eax, esi cmp eax, 124 jg SHORT G_M39122_IG10 mov esi, eax mov rdx, 0xD1FFAB1E ; static handle movzx rsi, byte ptr [rsi+rdx] cmp esi, 3 jge SHORT G_M39122_IG11 ;; size=49 bbWeight=2 PerfScore 27.00 G_M39122_IG10: mov eax, 32 jmp SHORT G_M39122_IG15 ;; size=7 bbWeight=2 PerfScore 4.50 G_M39122_IG11: cmp eax, 123 jle SHORT G_M39122_IG12 xor r14d, r14d jmp SHORT G_M39122_IG13 ;; size=10 bbWeight=2 PerfScore 7.00 G_M39122_IG12: cmp esi, 4 sete r14b movzx r14, r14b ;; size=11 bbWeight=2 PerfScore 3.00 G_M39122_IG13: inc edi mov dword ptr [rbx+0x58], edi jmp SHORT G_M39122_IG15 ;; size=7 bbWeight=2 PerfScore 6.50 G_M39122_IG14: mov dword ptr [rbp-0x2C], 33 mov eax, dword ptr [rbp-0x2C] ;; size=10 bbWeight=2 PerfScore 4.00 G_M39122_IG15: cmp r13d, r12d - jge G_M39122_IG18 - ;; size=9 bbWeight=4 PerfScore 5.00 + jge SHORT G_M39122_IG18 + ;; size=5 bbWeight=4 PerfScore 5.00 G_M39122_IG16: mov edx, r12d sub edx, r13d test r14d, r14d setne dil movzx rdi, dil sub edx, edi xor r15d, r15d test edx, edx jle SHORT G_M39122_IG17 mov dword ptr [rbp-0x2C], eax mov rdi, rbx mov esi, r13d xor ecx, ecx mov r8, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:AddToConcatenate(int,int,ubyte):this call [r8]System.Text.RegularExpressions.RegexParser:AddToConcatenate(int,int,ubyte):this mov eax, dword ptr [rbp-0x2C] ;; size=53 bbWeight=2 PerfScore 19.50 G_M39122_IG17: test r14d, r14d je SHORT G_M39122_IG18 mov dword ptr [rbp-0x2C], eax mov rdi, gword ptr [rbx+0x28] lea esi, [r12-0x01] cmp esi, dword ptr [rdi+0x08] jae G_M39122_IG67 dec r12d mov esi, r12d movzx rdi, word ptr [rdi+2*rsi+0x0C] mov esi, dword ptr [rbx+0x70] mov rdx, gword ptr [rbx+0x30] lea rcx, bword ptr [rbx+0x5C] mov r8, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:CreateOneWithCaseConversion(ushort,int,System.Globalization.CultureInfo,byref):System.Text.RegularExpressions.RegexNode call [r8]System.Text.RegularExpressions.RegexNode:CreateOneWithCaseConversion(ushort,int,System.Globalization.CultureInfo,byref):System.Text.RegularExpressions.RegexNode - lea rdi, bword ptr [rbx+0x20] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x20], rax mov eax, dword ptr [rbp-0x2C] - ;; size=76 bbWeight=2 PerfScore 43.50 + ;; size=68 bbWeight=2 PerfScore 42.00 G_M39122_IG18: cmp eax, 63 jbe G_M39122_IG27 ;; size=9 bbWeight=4 PerfScore 5.00 G_M39122_IG19: lea r13d, [rax-0x5B] cmp r13d, 3 ja SHORT G_M39122_IG21 ;; size=10 bbWeight=2 PerfScore 3.50 G_M39122_IG20: mov edi, r13d lea rax, [reloc @RWD00] mov eax, dword ptr [rax+4*rdi] lea rcx, G_M39122_IG02 add rax, rcx jmp rax ;; size=25 bbWeight=1.60 PerfScore 9.60 G_M39122_IG21: cmp eax, 123 je G_M39122_IG33 cmp eax, 124 jne G_M39122_IG42 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:AddAlternate():this call [rax]System.Text.RegularExpressions.RegexParser:AddAlternate():this jmp G_M39122_IG57 ;; size=38 bbWeight=2 PerfScore 16.00 G_M39122_IG22: test byte ptr [rbx+0x70], 2 je SHORT G_M39122_IG23 mov r12d, 14 jmp SHORT G_M39122_IG24 ;; size=14 bbWeight=2 PerfScore 12.50 G_M39122_IG23: mov r12d, 18 ;; size=6 bbWeight=2 PerfScore 0.50 G_M39122_IG24: mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov edi, dword ptr [rbx+0x70] mov byte ptr [rax+0x2E], r12b mov dword ptr [rax+0x28], edi - lea rdi, bword ptr [rbx+0x20] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x20], rax jmp G_M39122_IG42 - ;; size=42 bbWeight=2 PerfScore 18.00 + ;; size=34 bbWeight=2 PerfScore 16.50 G_M39122_IG25: mov edi, dword ptr [rbx+0x58] mov rsi, gword ptr [rbx+0x28] cmp edi, dword ptr [rsi+0x08] je G_M39122_IG60 mov rdi, rbx xor esi, esi mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanBackslash(ubyte):System.Text.RegularExpressions.RegexNode:this call [rax]System.Text.RegularExpressions.RegexParser:ScanBackslash(ubyte):System.Text.RegularExpressions.RegexNode:this - lea rdi, bword ptr [rbx+0x20] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x20], rax jmp G_M39122_IG42 - ;; size=50 bbWeight=2 PerfScore 31.00 + ;; size=42 bbWeight=2 PerfScore 29.50 G_M39122_IG26: mov esi, dword ptr [rbx+0x70] and esi, 1 mov rdi, rbx xor edx, edx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this call [rax]System.Text.RegularExpressions.RegexParser:ScanCharClass(ubyte,ubyte):System.Text.RegularExpressions.RegexCharClass:this mov rdi, rax mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexCharClass:ToStringClass():System.String:this cmp dword ptr [rdi], edi call [rax]System.Text.RegularExpressions.RegexCharClass:ToStringClass():System.String:this mov r15, rax mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov r13, rax mov edi, dword ptr [rbx+0x70] and edi, -2 mov byte ptr [r13+0x2E], 11 mov dword ptr [r13+0x28], edi lea rdi, bword ptr [r13+0x10] mov rsi, r15 call CORINFO_HELP_ASSIGN_REF - lea rdi, bword ptr [rbx+0x20] - mov rsi, r13 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x20], r13 jmp G_M39122_IG42 - ;; size=105 bbWeight=2 PerfScore 48.00 + ;; size=97 bbWeight=2 PerfScore 46.50 G_M39122_IG27: lea r12d, [rax-0x20] cmp r12d, 14 ja SHORT G_M39122_IG29 ;; size=10 bbWeight=2 PerfScore 3.50 G_M39122_IG28: mov edi, r12d lea rcx, [reloc @RWD16] mov ecx, dword ptr [rcx+4*rdi] lea rdx, G_M39122_IG02 add rcx, rdx jmp rcx ;; size=25 bbWeight=1.88 PerfScore 11.25 G_M39122_IG29: cmp eax, 63 je SHORT G_M39122_IG33 jmp G_M39122_IG42 ;; size=10 bbWeight=2 PerfScore 6.50 G_M39122_IG30: test byte ptr [rbx+0x70], 16 je SHORT G_M39122_IG31 mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST - mov rsi, rax mov edi, dword ptr [rbx+0x70] and edi, -2 - mov byte ptr [rsi+0x2E], 11 - mov dword ptr [rsi+0x28], edi + mov byte ptr [rax+0x2E], 11 + mov dword ptr [rax+0x28], edi mov rdi, 0xD1FFAB1E ; '' - mov gword ptr [rsi+0x10], rdi + mov gword ptr [rax+0x10], rdi jmp SHORT G_M39122_IG32 - ;; size=53 bbWeight=2 PerfScore 26.00 + ;; size=50 bbWeight=2 PerfScore 25.50 G_M39122_IG31: mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST - mov rsi, rax mov edi, dword ptr [rbx+0x70] and edi, -2 - mov byte ptr [rsi+0x2E], 10 - mov dword ptr [rsi+0x28], edi - mov word ptr [rsi+0x2C], 10 - ;; size=37 bbWeight=2 PerfScore 13.50 + mov byte ptr [rax+0x2E], 10 + mov dword ptr [rax+0x28], edi + mov word ptr [rax+0x2C], 10 + ;; size=34 bbWeight=2 PerfScore 13.00 G_M39122_IG32: - lea rdi, bword ptr [rbx+0x20] - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x20], rax jmp G_M39122_IG42 - ;; size=14 bbWeight=2 PerfScore 7.00 + ;; size=9 bbWeight=2 PerfScore 6.00 G_M39122_IG33: cmp gword ptr [rbx+0x20], 0 je G_M39122_IG61 dec dword ptr [rbx+0x58] jmp G_M39122_IG42 ;; size=19 bbWeight=2 PerfScore 18.00 G_M39122_IG34: cmp gword ptr [rbx], 0 je G_M39122_IG64 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:AddGroup():this call [rax]System.Text.RegularExpressions.RegexParser:AddGroup():this mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:PopGroup():this call [rax]System.Text.RegularExpressions.RegexParser:PopGroup():this lea rdi, bword ptr [rbx+0x78] dec dword ptr [rdi+0x08] mov esi, dword ptr [rdi+0x08] add rdi, 16 cmp esi, dword ptr [rdi+0x08] jae G_M39122_IG67 mov rdi, bword ptr [rdi] mov edi, dword ptr [rdi+4*rsi] mov dword ptr [rbx+0x70], edi cmp gword ptr [rbx+0x20], 0 jne G_M39122_IG42 jmp G_M39122_IG57 ;; size=88 bbWeight=2 PerfScore 63.50 G_M39122_IG35: lea rdi, bword ptr [rbx+0x78] mov esi, dword ptr [rbx+0x70] mov r15d, dword ptr [rdi+0x08] mov r13, bword ptr [rdi+0x10] mov eax, dword ptr [rdi+0x18] cmp r15d, eax jb SHORT G_M39122_IG36 mov rax, 0xD1FFAB1E ; code for System.Collections.Generic.ValueListBuilder`1[int]:AddWithResize(int):this call [rax]System.Collections.Generic.ValueListBuilder`1[int]:AddWithResize(int):this jmp SHORT G_M39122_IG37 ;; size=37 bbWeight=2 PerfScore 30.00 G_M39122_IG36: mov eax, r15d mov dword ptr [r13+4*rax], esi inc r15d mov dword ptr [rdi+0x08], r15d ;; size=15 bbWeight=2 PerfScore 5.00 G_M39122_IG37: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this call [rax]System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this mov r15, rax test r15, r15 jne SHORT G_M39122_IG38 lea rdi, bword ptr [rbx+0x78] dec dword ptr [rdi+0x08] jmp G_M39122_IG57 ;; size=35 bbWeight=2 PerfScore 21.00 G_M39122_IG38: mov rdi, gword ptr [rbx+0x08] lea rdi, bword ptr [rdi+0x18] mov rsi, gword ptr [rbx] call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rbx+0x10] lea rdi, bword ptr [rdi+0x18] mov rsi, gword ptr [rbx+0x08] call CORINFO_HELP_ASSIGN_REF mov rdi, gword ptr [rbx+0x18] lea rdi, bword ptr [rdi+0x18] mov rsi, gword ptr [rbx+0x10] call CORINFO_HELP_ASSIGN_REF - mov rsi, gword ptr [rbx+0x18] - mov rdi, rbx - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rdi, bword ptr [rbx+0x08] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov rdi, gword ptr [rbx+0x18] + mov gword ptr [rbx], rdi + mov gword ptr [rbx+0x08], r15 mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov edi, dword ptr [rbx+0x70] mov byte ptr [rax+0x2E], 24 mov dword ptr [rax+0x28], edi - lea rdi, bword ptr [rbx+0x10] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x10], rax mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST mov edi, dword ptr [rbx+0x70] mov byte ptr [rax+0x2E], 25 mov dword ptr [rax+0x28], edi - lea rdi, bword ptr [rbx+0x18] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF + mov gword ptr [rbx+0x18], rax jmp G_M39122_IG57 - ;; size=153 bbWeight=2 PerfScore 75.00 + ;; size=124 bbWeight=2 PerfScore 70.00 G_M39122_IG39: test byte ptr [rbx+0x70], 2 je SHORT G_M39122_IG40 mov r15d, 15 jmp SHORT G_M39122_IG41 ;; size=14 bbWeight=2 PerfScore 12.50 G_M39122_IG40: mov r15d, 20 ;; size=6 bbWeight=2 PerfScore 0.50 G_M39122_IG41: mov rdi, 0xD1FFAB1E ; System.Text.RegularExpressions.RegexNode call CORINFO_HELP_NEWSFAST - mov edi, dword ptr [rbx+0x70] + mov ecx, dword ptr [rbx+0x70] mov byte ptr [rax+0x2E], r15b - mov dword ptr [rax+0x28], edi - lea rdi, bword ptr [rbx+0x20] - mov rsi, rax - call CORINFO_HELP_CHECKED_ASSIGN_REF - ;; size=37 bbWeight=2 PerfScore 14.00 + mov dword ptr [rax+0x28], ecx + mov gword ptr [rbx+0x20], rax + ;; size=29 bbWeight=2 PerfScore 12.50 G_M39122_IG42: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanBlank():this call [rax]System.Text.RegularExpressions.RegexParser:ScanBlank():this mov edi, dword ptr [rbx+0x58] mov rax, gword ptr [rbx+0x28] cmp edi, dword ptr [rax+0x08] je G_M39122_IG56 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this call [rax]System.Text.RegularExpressions.RegexParser:IsTrueQuantifier():ubyte:this mov r14d, eax test r14d, r14d je G_M39122_IG56 mov rdi, gword ptr [rbx+0x28] mov r13d, dword ptr [rbx+0x58] lea eax, [r13+0x01] mov dword ptr [rbx+0x58], eax cmp r13d, dword ptr [rdi+0x08] jae G_M39122_IG67 mov eax, r13d movzx rax, word ptr [rdi+2*rax+0x0C] mov r12d, eax cmp gword ptr [rbx+0x20], 0 je G_M39122_IG57 ;; size=105 bbWeight=2 PerfScore 65.00 G_M39122_IG43: xor r15d, r15d xor r13d, r13d cmp r12d, 43 jbe G_M39122_IG51 ;; size=16 bbWeight=16 PerfScore 28.00 G_M39122_IG44: cmp r12d, 63 jne SHORT G_M39122_IG45 mov r13d, 1 jmp G_M39122_IG53 ;; size=17 bbWeight=8 PerfScore 28.00 G_M39122_IG45: cmp r12d, 123 jne G_M39122_IG53 mov r13d, dword ptr [rbx+0x58] mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanDecimal():int:this call [rax]System.Text.RegularExpressions.RegexParser:ScanDecimal():int:this mov r15d, eax mov eax, r15d mov edi, dword ptr [rbx+0x58] cmp r13d, edi jge SHORT G_M39122_IG48 mov rcx, gword ptr [rbx+0x28] cmp dword ptr [rcx+0x08], edi jle SHORT G_M39122_IG48 mov edx, edi cmp edx, dword ptr [rcx+0x08] jae G_M39122_IG67 cmp word ptr [rcx+2*rdx+0x0C], 44 jne SHORT G_M39122_IG48 inc edi mov dword ptr [rbx+0x58], edi mov edi, dword ptr [rbx+0x58] mov rax, gword ptr [rbx+0x28] cmp edi, dword ptr [rax+0x08] je SHORT G_M39122_IG46 cmp edi, dword ptr [rax+0x08] jae G_M39122_IG67 cmp word ptr [rax+2*rdi+0x0C], 125 jne SHORT G_M39122_IG47 ;; size=105 bbWeight=8 PerfScore 336.00 G_M39122_IG46: mov eax, 0xD1FFAB1E jmp SHORT G_M39122_IG48 ;; size=7 bbWeight=8 PerfScore 18.00 G_M39122_IG47: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanDecimal():int:this call [rax]System.Text.RegularExpressions.RegexParser:ScanDecimal():int:this ;; size=15 bbWeight=8 PerfScore 28.00 G_M39122_IG48: mov edi, dword ptr [rbx+0x58] cmp r13d, edi je SHORT G_M39122_IG49 mov rsi, gword ptr [rbx+0x28] cmp dword ptr [rsi+0x08], edi je SHORT G_M39122_IG49 lea ecx, [rdi+0x01] mov dword ptr [rbx+0x58], ecx cmp edi, dword ptr [rsi+0x08] jae G_M39122_IG67 cmp word ptr [rsi+2*rdi+0x0C], 125 je SHORT G_M39122_IG50 ;; size=40 bbWeight=8 PerfScore 150.00 G_M39122_IG49: mov rdi, gword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x20] mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this cmp dword ptr [rdi], edi call [rax]System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this xor rdi, rdi mov gword ptr [rbx+0x20], rdi dec r13d mov dword ptr [rbx+0x58], r13d jmp G_M39122_IG57 ;; size=40 bbWeight=2 PerfScore 29.50 G_M39122_IG50: mov r13d, eax jmp SHORT G_M39122_IG53 ;; size=5 bbWeight=4 PerfScore 9.00 G_M39122_IG51: cmp r12d, 42 je SHORT G_M39122_IG52 cmp r12d, 43 jne SHORT G_M39122_IG53 mov r15d, 1 ;; size=18 bbWeight=8 PerfScore 22.00 G_M39122_IG52: mov r13d, 0xD1FFAB1E ;; size=6 bbWeight=8 PerfScore 2.00 G_M39122_IG53: mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:ScanBlank():this call [rax]System.Text.RegularExpressions.RegexParser:ScanBlank():this xor esi, esi mov edi, dword ptr [rbx+0x58] mov rdx, gword ptr [rbx+0x28] cmp edi, dword ptr [rdx+0x08] jge SHORT G_M39122_IG55 ;; size=29 bbWeight=16 PerfScore 188.00 G_M39122_IG54: mov rdx, gword ptr [rbx+0x28] mov ecx, edi cmp ecx, dword ptr [rdx+0x08] jae G_M39122_IG67 cmp word ptr [rdx+2*rcx+0x0C], 63 jne SHORT G_M39122_IG55 inc edi mov dword ptr [rbx+0x58], edi mov esi, 1 ;; size=33 bbWeight=8 PerfScore 94.00 G_M39122_IG55: cmp r15d, r13d jg G_M39122_IG65 mov rax, gword ptr [rbx+0x18] mov gword ptr [rbp-0x38], rax mov rdi, gword ptr [rbx+0x20] mov edx, r15d mov ecx, r13d mov r8, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:MakeQuantifier(ubyte,int,int):System.Text.RegularExpressions.RegexNode:this cmp dword ptr [rdi], edi call [r8]System.Text.RegularExpressions.RegexNode:MakeQuantifier(ubyte,int,int):System.Text.RegularExpressions.RegexNode:this mov rsi, rax mov rdi, gword ptr [rbp-0x38] mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this cmp dword ptr [rdi], edi call [rax]System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this xor rdi, rdi mov gword ptr [rbx+0x20], rdi cmp gword ptr [rbx+0x20], 0 jne G_M39122_IG43 jmp SHORT G_M39122_IG57 ;; size=82 bbWeight=16 PerfScore 444.00 G_M39122_IG56: mov rdi, gword ptr [rbx+0x18] mov rsi, gword ptr [rbx+0x20] mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this cmp dword ptr [rdi], edi call [rax]System.Text.RegularExpressions.RegexNode:AddChild(System.Text.RegularExpressions.RegexNode):this xor rdi, rdi mov gword ptr [rbx+0x20], rdi ;; size=28 bbWeight=2 PerfScore 23.00 G_M39122_IG57: mov edi, dword ptr [rbx+0x58] mov rax, gword ptr [rbx+0x28] cmp edi, dword ptr [rax+0x08] mov r15d, r14d jl G_M39122_IG03 ;; size=19 bbWeight=4 PerfScore 33.00 G_M39122_IG58: cmp gword ptr [rbx], 0 jne G_M39122_IG66 mov rdi, rbx mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:AddGroup():this call [rax]System.Text.RegularExpressions.RegexParser:AddGroup():this mov rdi, gword ptr [rbx+0x20] mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexNode:FinalOptimize():System.Text.RegularExpressions.RegexNode:this cmp dword ptr [rdi], edi call [rax]System.Text.RegularExpressions.RegexNode:FinalOptimize():System.Text.RegularExpressions.RegexNode:this nop ;; size=44 bbWeight=1 PerfScore 16.00 G_M39122_IG59: add rsp, 24 pop rbx pop r12 pop r13 pop r14 pop r15 pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25 G_M39122_IG60: mov rax, 0xD1FFAB1E ; code for System.SR:get_UnescapedEndingBackslash():System.String call [rax]System.SR:get_UnescapedEndingBackslash():System.String mov rdx, rax mov rdi, rbx mov esi, 13 mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this call [rax]System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this mov rdi, rax call CORINFO_HELP_THROW int3 ;; size=44 bbWeight=0 PerfScore 0.00 G_M39122_IG61: test r15d, r15d je SHORT G_M39122_IG62 mov dword ptr [rbp-0x2C], eax mov rdi, 0xD1FFAB1E ; System.Char call CORINFO_HELP_NEWSFAST mov r15, rax mov rdi, 0xD1FFAB1E ; 'NestedQuantifiersNotParenthesized' mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String call [rax]System.SR:GetResourceString(System.String):System.String mov rdi, rax mov r12d, dword ptr [rbp-0x2C] mov word ptr [r15+0x08], r12w mov rsi, 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 rdx, rax mov rdi, rbx mov esi, 28 mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this call [rax]System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this jmp SHORT G_M39122_IG63 ;; size=100 bbWeight=0 PerfScore 0.00 G_M39122_IG62: mov dword ptr [rbp-0x2C], eax mov rdi, 0xD1FFAB1E ; System.Char call CORINFO_HELP_NEWSFAST mov r15, rax mov rdi, 0xD1FFAB1E ; 'QuantifierAfterNothing' mov rax, 0xD1FFAB1E ; code for System.SR:GetResourceString(System.String):System.String call [rax]System.SR:GetResourceString(System.String):System.String mov rdi, rax mov r12d, dword ptr [rbp-0x2C] mov word ptr [r15+0x08], r12w mov rsi, 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 rdx, rax mov rdi, rbx mov esi, 29 mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this call [rax]System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this ;; size=93 bbWeight=0 PerfScore 0.00 G_M39122_IG63: mov rdi, rax call CORINFO_HELP_THROW int3 ;; size=9 bbWeight=0 PerfScore 0.00 G_M39122_IG64: mov rax, 0xD1FFAB1E ; code for System.SR:get_InsufficientOpeningParentheses():System.String call [rax]System.SR:get_InsufficientOpeningParentheses():System.String mov rdx, rax mov rdi, rbx mov esi, 30 mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this call [rax]System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this mov rdi, rax call CORINFO_HELP_THROW int3 ;; size=44 bbWeight=0 PerfScore 0.00 G_M39122_IG65: mov rax, 0xD1FFAB1E ; code for System.SR:get_ReversedQuantifierRange():System.String call [rax]System.SR:get_ReversedQuantifierRange():System.String mov rdx, rax mov rdi, rbx mov esi, 27 mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this call [rax]System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this mov rdi, rax call CORINFO_HELP_THROW int3 ;; size=44 bbWeight=0 PerfScore 0.00 G_M39122_IG66: mov rax, 0xD1FFAB1E ; code for System.SR:get_InsufficientClosingParentheses():System.String call [rax]System.SR:get_InsufficientClosingParentheses():System.String mov rdx, rax mov rdi, rbx mov esi, 26 mov rax, 0xD1FFAB1E ; code for System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this call [rax]System.Text.RegularExpressions.RegexParser:MakeException(int,System.String):System.Text.RegularExpressions.RegexParseException:this mov rdi, rax call CORINFO_HELP_THROW int3 ;; size=44 bbWeight=0 PerfScore 0.00 G_M39122_IG67: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 RWD00 dd G_M39122_IG26 - G_M39122_IG02 dd G_M39122_IG25 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG22 - G_M39122_IG02 RWD16 dd G_M39122_IG57 - G_M39122_IG02 dd G_M39122_IG58 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG39 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG35 - G_M39122_IG02 dd G_M39122_IG34 - G_M39122_IG02 dd G_M39122_IG33 - G_M39122_IG02 dd G_M39122_IG33 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG42 - G_M39122_IG02 dd G_M39122_IG30 - G_M39122_IG02 -; Total bytes of code 2490, prolog size 22, PerfScore 3132.85, instruction count 612, allocated bytes for code 2490 (MethodHash=7576672d) for method System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (FullOpts) +; Total bytes of code 2382, prolog size 22, PerfScore 3116.10, instruction count 586, allocated bytes for code 2382 (MethodHash=7576672d) for method System.Text.RegularExpressions.RegexParser:ScanRegex():System.Text.RegularExpressions.RegexNode:this (FullOpts) ```
-124 (-35.43 % of base) - System.Text.RegularExpressions.RegexParser:.ctor(System.String,int,System.Globalization.CultureInfo,System.Collections.Hashtable,int,System.Collections.Hashtable,System.Span`1[int]):this ```diff ; Assembly listing for method System.Text.RegularExpressions.RegexParser:.ctor(System.String,int,System.Globalization.CultureInfo,System.Collections.Hashtable,int,System.Collections.Hashtable,System.Span`1[int]):this (FullOpts) ; Emitting BLENDED_CODE for X86 with AVX512 - Unix ; FullOpts code ; optimized code ; rbp based frame ; partially interruptible ; No PGO data ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; -; V00 this [V00,T00] ( 23, 23 ) byref -> rbx this single-def +; V00 this [V00,T00] ( 23, 23 ) byref -> rdi this single-def ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rsi class-hnd single-def -; V02 arg2 [V02,T05] ( 3, 3 ) int -> r13 single-def -; V03 arg3 [V03,T03] ( 3, 3 ) ref -> r15 class-hnd single-def -; V04 arg4 [V04,T04] ( 3, 3 ) ref -> r14 class-hnd single-def -; V05 arg5 [V05,T06] ( 3, 3 ) int -> r12 single-def +; V02 arg2 [V02,T05] ( 3, 3 ) int -> rdx single-def +; V03 arg3 [V03,T03] ( 3, 3 ) ref -> rcx class-hnd single-def +; V04 arg4 [V04,T04] ( 3, 3 ) ref -> r8 class-hnd single-def +; V05 arg5 [V05,T06] ( 3, 3 ) int -> r9 single-def ; V06 arg6 [V06,T07] ( 1, 1 ) ref -> [rbp+0x10] class-hnd single-def ;* V07 arg7 [V07 ] ( 0, 0 ) struct (16) zero-ref single-def ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" ; V10 tmp2 [V10,T08] ( 1, 1 ) byref -> [rbp+0x18] single-def "field V07._reference (fldOffset=0x0)" P-INDEP ; V11 tmp3 [V11,T09] ( 1, 1 ) int -> [rbp+0x20] single-def "field V07._length (fldOffset=0x8)" P-INDEP ;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref "V09.[000..008)" ;* V13 tmp5 [V13 ] ( 0, 0 ) int -> zero-ref "V09.[008..012)" ;* V14 tmp6 [V14 ] ( 0, 0 ) byref -> zero-ref single-def "V09.[016..024)" ;* V15 tmp7 [V15 ] ( 0, 0 ) int -> zero-ref "V09.[024..028)" ; V16 tmp8 [V16,T01] ( 5, 10 ) byref -> rax single-def "Spilling address for field-by-field copy" ; ; Lcl frame size = 0 G_M19169_IG01: push rbp - push r15 - push r14 - push r13 - push r12 - push rbx - lea rbp, [rsp+0x28] - mov rbx, rdi - mov r13d, edx - mov r15, rcx - mov r14, r8 - mov r12d, r9d - ;; size=30 bbWeight=1 PerfScore 7.75 + mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25 G_M19169_IG02: - lea rdi, bword ptr [rbx+0x28] - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov dword ptr [rbx+0x70], r13d - lea rdi, bword ptr [rbx+0x30] - mov rsi, r15 - call CORINFO_HELP_CHECKED_ASSIGN_REF - xor edi, edi - mov dword ptr [rbx+0x5C], edi - mov byte ptr [rbx+0x74], 0 - lea rdi, bword ptr [rbx+0x38] - mov rsi, r14 - call CORINFO_HELP_CHECKED_ASSIGN_REF - mov dword ptr [rbx+0x6C], r12d - lea rdi, bword ptr [rbx+0x40] - mov rsi, gword ptr [rbp+0x10] - call CORINFO_HELP_CHECKED_ASSIGN_REF - lea rax, bword ptr [rbx+0x78] + mov gword ptr [rdi+0x28], rsi + mov dword ptr [rdi+0x70], edx + mov gword ptr [rdi+0x30], rcx + xor eax, eax + mov dword ptr [rdi+0x5C], eax + mov byte ptr [rdi+0x74], 0 + mov gword ptr [rdi+0x38], r8 + mov dword ptr [rdi+0x6C], r9d + mov rax, gword ptr [rbp+0x10] + mov gword ptr [rdi+0x40], rax + lea rax, bword ptr [rdi+0x78] xor rcx, rcx mov gword ptr [rax], rcx - ;; size=72 bbWeight=1 PerfScore 13.50 + ;; size=45 bbWeight=1 PerfScore 11.00 G_M19169_IG03: mov dword ptr [rax+0x08], ecx - mov r15, bword ptr [rbp+0x18] - mov bword ptr [rax+0x10], r15 - mov r15d, dword ptr [rbp+0x20] - mov dword ptr [rax+0x18], r15d - ;; size=19 bbWeight=1 PerfScore 5.00 + mov rcx, bword ptr [rbp+0x18] + mov bword ptr [rax+0x10], rcx + mov ecx, dword ptr [rbp+0x20] + mov dword ptr [rax+0x18], ecx + xor rax, rax + mov gword ptr [rdi], rax + ;; size=22 bbWeight=1 PerfScore 6.25 G_M19169_IG04: - mov gword ptr [rbx], rcx - ;; size=3 bbWeight=1 PerfScore 1.00 + mov gword ptr [rdi+0x08], rax + ;; size=4 bbWeight=1 PerfScore 1.00 G_M19169_IG05: - mov gword ptr [rbx+0x08], rcx + mov gword ptr [rdi+0x10], rax ;; size=4 bbWeight=1 PerfScore 1.00 G_M19169_IG06: - mov gword ptr [rbx+0x10], rcx + mov gword ptr [rdi+0x18], rax ;; size=4 bbWeight=1 PerfScore 1.00 G_M19169_IG07: - mov gword ptr [rbx+0x18], rcx + mov gword ptr [rdi+0x20], rax ;; size=4 bbWeight=1 PerfScore 1.00 G_M19169_IG08: - mov gword ptr [rbx+0x20], rcx - ;; size=4 bbWeight=1 PerfScore 1.00 + mov dword ptr [rdi+0x58], eax + ;; size=3 bbWeight=1 PerfScore 1.00 G_M19169_IG09: - mov dword ptr [rbx+0x58], ecx + mov dword ptr [rdi+0x60], eax ;; size=3 bbWeight=1 PerfScore 1.00 G_M19169_IG10: - mov dword ptr [rbx+0x60], ecx + mov dword ptr [rdi+0x64], eax ;; size=3 bbWeight=1 PerfScore 1.00 G_M19169_IG11: - mov dword ptr [rbx+0x64], ecx + mov dword ptr [rdi+0x68], eax ;; size=3 bbWeight=1 PerfScore 1.00 G_M19169_IG12: - mov dword ptr [rbx+0x68], ecx - ;; size=3 bbWeight=1 PerfScore 1.00 -G_M19169_IG13: - mov gword ptr [rbx+0x48], rcx + mov gword ptr [rdi+0x48], rax ;; size=4 bbWeight=1 PerfScore 1.00 -G_M19169_IG14: - mov gword ptr [rbx+0x50], rcx - mov byte ptr [rbx+0x75], 0 +G_M19169_IG13: + mov gword ptr [rdi+0x50], rax + mov byte ptr [rdi+0x75], 0 ;; size=8 bbWeight=1 PerfScore 2.00 -G_M19169_IG15: - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 +G_M19169_IG14: pop rbp ret - ;; size=11 bbWeight=1 PerfScore 4.00 + ;; size=2 bbWeight=1 PerfScore 1.50 -; Total bytes of code 175, prolog size 15, PerfScore 42.25, instruction count 55, allocated bytes for code 175 (MethodHash=855eb51e) for method System.Text.RegularExpressions.RegexParser:.ctor(System.String,int,System.Globalization.CultureInfo,System.Collections.Hashtable,int,System.Collections.Hashtable,System.Span`1[int]):this (FullOpts) +; Total bytes of code 113, prolog size 4, PerfScore 31.00, instruction count 35, allocated bytes for code 113 (MethodHash=855eb51e) for method System.Text.RegularExpressions.RegexParser:.ctor(System.String,int,System.Globalization.CultureInfo,System.Collections.Hashtable,int,System.Collections.Hashtable,System.Span`1[int]):this (FullOpts) ```

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

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

MihuBot commented 3 months ago

@EgorBo