MihuBot / runtime-utils

0 stars 0 forks source link

[JitDiff X64] [MichalPetryka] Expand IsReferenceOrContainsReferences in T0 #524

Open MihuBot opened 1 month ago

MihuBot commented 1 month ago

Job completed in 13 minutes. https://github.com/dotnet/runtime/pull/104874

Diffs

Diffs ``` Found 269 files with textual diffs. Summary of Code Size diffs: (Lower is better) Total bytes of base: 49224735 Total bytes of diff: 49199897 Total bytes of delta: -24838 (-0.05 % of base) Total relative delta: -98.55 diff is an improvement. relative diff is an improvement. Total byte diff includes -35 bytes from reconciling methods Base had 3 unique methods, 35 unique bytes Diff had 0 unique methods, 0 unique bytes Top file improvements (bytes): -13532 : System.Private.CoreLib.dasm (-0.14 % of base) -4006 : System.Linq.dasm (-0.21 % of base) -3528 : System.Collections.dasm (-0.52 % of base) -2074 : System.Collections.Concurrent.dasm (-0.39 % of base) -722 : System.Numerics.Tensors.dasm (-0.06 % of base) -553 : System.Text.RegularExpressions.dasm (-0.06 % of base) -423 : System.Collections.Immutable.dasm (-0.02 % of base) 7 total files with Code Size differences (7 improved, 0 regressed), 252 unchanged. Top method regressions (bytes): 1 (0.20 % of base) : System.Private.CoreLib.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1-OSR) Top method improvements (bytes): -603 (-47.63 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Fill[System.__Canon](byref,ulong,System.__Canon) (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[double]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[long]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[short]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.Nullable`1[int]]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.Numerics.Vector`1[float]]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[ubyte]:ReturnArrays(int):this (Instrumented Tier0) -461 (-33.58 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ReturnArrays(int):this (Instrumented Tier0) -227 (-29.03 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TryLocalPop(byref):ubyte:this (Tier0) -190 (-34.05 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.__Canon,System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -184 (-45.32 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task:FromResult[System.__Canon](System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (Tier0) -183 (-27.94 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.Numerics.Vector`1[float]]:TryLocalPop(byref):ubyte:this (Tier0) -182 (-39.06 % of base) : System.Private.CoreLib.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier0) -172 (-35.03 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -161 (-14.77 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.Nullable`1[int]]:Remove(System.__Canon,byref):ubyte:this (Instrumented Tier0) -154 (-25.54 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[double]:TryLocalPop(byref):ubyte:this (Tier0) -153 (-33.12 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[double,System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[double]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[int]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[long]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[short]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.Nullable`1[int]]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.Numerics.Vector`1[float]]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[ubyte]:Clear():this (Tier0) -151 (-32.83 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[long,System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -151 (-32.83 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[System.Nullable`1[int],System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -150 (-25.21 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[long]:TryLocalPop(byref):ubyte:this (Tier0) -150 (-25.21 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.Nullable`1[int]]:TryLocalPop(byref):ubyte:this (Tier0) -149 (-31.84 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[short,System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -148 (-31.69 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[int,System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -148 (-31.69 % of base) : System.Collections.dasm - System.Collections.Generic.SortedList`2[ubyte,System.Nullable`1[int]]:RemoveAt(int):this (Tier0) -140 (-8.13 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:ToSpanInlined(System.Span`1[System.__Canon]):this (Instrumented Tier0) -136 (-23.33 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[short]:TryLocalPop(byref):ubyte:this (Tier0) -130 (-22.85 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TryLocalPop(byref):ubyte:this (Tier0) -130 (-22.85 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[ubyte]:TryLocalPop(byref):ubyte:this (Tier0) -126 (-70.39 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0) -119 (-64.67 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[System.__Canon](byref,byref,ulong) (Tier0) -119 (-9.61 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Instrumented Tier0) -115 (-16.02 % of base) : System.Private.CoreLib.dasm - System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]:TryDequeue(byref):ubyte:this (Instrumented Tier0) -114 (-13.13 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.__Canon]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -112 (-12.27 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAll(System.Predicate`1[System.__Canon]):int:this (Instrumented Tier0) -109 (-20.45 % of base) : System.Text.RegularExpressions.dasm - System.Text.StructListBuilder`1[System.__Canon]:GrowAndAdd(System.__Canon):this (Tier0) -108 (-14.52 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[double]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -106 (-14.36 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[long]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -106 (-14.36 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.Nullable`1[int]]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -106 (-13.27 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[System.Numerics.Vector`1[float]]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -104 (-34.44 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Dequeue():System.__Canon:this (Tier0) -103 (-55.08 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (Tier0) -103 (-47.69 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[System.__Canon](byref,ulong) (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[double]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[int]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[long]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[short]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[System.Numerics.Vector`1[float]]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[ubyte]():uint (Tier0) -100 (-36.36 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier0) -100 (-50.51 % of base) : System.Private.CoreLib.dasm - System.Span`1[ubyte]:Clear():this (Tier0) (2 methods) -98 (-30.53 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveRange(int,int):this (Tier0) -98 (-33.33 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.__Canon]:Clear():this (Tier0) -98 (-32.78 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.__Canon]:TryDequeue(byref):ubyte:this (Tier0) -98 (-35.51 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.__Canon]:TryPop(byref):ubyte:this (Tier0) -98 (-24.38 % of base) : System.Collections.Immutable.dasm - System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]:RemoveRange(int,int):this (Tier0) -97 (-9.58 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.HashSet`1+AlternateLookup`1[System.__Canon,System.Nullable`1[int]]:Remove(System.Nullable`1[int]):ubyte:this (Instrumented Tier0) -95 (-16.16 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.ReadOnlyTensorSpan`1[System.__Canon]:.ctor(ulong,long,System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):this (Tier0) -95 (-16.16 % of base) : System.Numerics.Tensors.dasm - System.Numerics.Tensors.TensorSpan`1[System.__Canon]:.ctor(ulong,long,System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):this (Tier0) -94 (-33.33 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[System.__Canon]:RemoveAt(int):this (Tier0) -94 (-59.12 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:Clear():this (Tier0) -94 (-30.52 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:RemoveRootNode():this (Tier0) -94 (-59.12 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (Tier0) -92 (-12.72 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[short]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -92 (-36.22 % of base) : System.Text.RegularExpressions.dasm - System.Text.StructListBuilder`1[System.__Canon]:Dispose():this (Tier0) -91 (-12.73 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[int]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -91 (-12.71 % of base) : System.Collections.Concurrent.dasm - System.Collections.Concurrent.ConcurrentBag`1+WorkStealingQueue[ubyte]:TrySteal(byref,ubyte):ubyte:this (Instrumented Tier0) -88 (-18.57 % of base) : System.Private.CoreLib.dasm - System.GC:AllocateUninitializedArray[ubyte](int,ubyte):ubyte[] (Tier0) (2 methods) -86 (-32.33 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.Numerics.Vector`1[float]]:Dequeue():System.Numerics.Vector`1[float]:this (Tier0) -85 (-8.19 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float],byref):ubyte:this (Instrumented Tier0) -82 (-8.01 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[double,System.Nullable`1[int]]:Remove(double,byref):ubyte:this (Instrumented Tier0) -82 (-8.06 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[long,System.Nullable`1[int]]:Remove(long,byref):ubyte:this (Instrumented Tier0) -82 (-7.98 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[short,System.Nullable`1[int]]:Remove(short,byref):ubyte:this (Instrumented Tier0) -82 (-7.75 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[System.Nullable`1[int],System.Nullable`1[int]]:Remove(System.Nullable`1[int],byref):ubyte:this (Instrumented Tier0) -82 (-34.31 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.Numerics.Vector`1[float]]:Pop():System.Numerics.Vector`1[float]:this (Tier0) -81 (-8.01 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[int,System.Nullable`1[int]]:Remove(int,byref):ubyte:this (Instrumented Tier0) -80 (-7.81 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Dictionary`2[ubyte,System.Nullable`1[int]]:Remove(ubyte,byref):ubyte:this (Instrumented Tier0) -80 (-32.65 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.CollectionsMarshal:SetCount[System.__Canon](System.Collections.Generic.List`1[System.__Canon],int) (Tier0) -79 (-38.92 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[int]:RemoveAt(int):this (Tier0) -79 (-42.25 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[System.__Canon]:.ctor(ulong,int):this (Tier0) -79 (-42.25 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.__Canon]:.ctor(ulong,int):this (Tier0) -76 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[ubyte]:.ctor(ulong,int):this (Tier0) (2 methods) -76 (-25.17 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsBytes[ushort](System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ubyte] (Tier0) (2 methods) -76 (-27.54 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[double,long](System.ReadOnlySpan`1[double]):System.ReadOnlySpan`1[long] (Tier0) -76 (-31.40 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[double,long](System.Span`1[double]):System.Span`1[long] (Tier0) -76 (-27.54 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[int,long](System.ReadOnlySpan`1[int]):System.ReadOnlySpan`1[long] (Tier0) -76 (-31.40 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[int,long](System.Span`1[int]):System.Span`1[long] (Tier0) -76 (-27.54 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[long,long](System.ReadOnlySpan`1[long]):System.ReadOnlySpan`1[long] (Tier0) -76 (-31.40 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[long,long](System.Span`1[long]):System.Span`1[long] (Tier0) -76 (-27.54 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[short,long](System.ReadOnlySpan`1[short]):System.ReadOnlySpan`1[long] (Tier0) -76 (-31.40 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[short,long](System.Span`1[short]):System.Span`1[long] (Tier0) -76 (-27.54 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[System.Numerics.Vector`1[float],long](System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]):System.ReadOnlySpan`1[long] (Tier0) -76 (-31.40 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:Cast[System.Numerics.Vector`1[float],long](System.Span`1[System.Numerics.Vector`1[float]]):System.Span`1[long] (Tier0) Top method regressions (percentages): 1 (0.20 % of base) : System.Private.CoreLib.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1-OSR) Top method improvements (percentages): -11 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[System.ReadOnlyMemory`1[ushort]]():ubyte (Tier0) (1 base, 0 diff methods) -8 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[ulong]():ubyte (Tier0) (1 base, 0 diff methods) -16 (-100.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[ushort]():ubyte (Tier0) (2 base, 0 diff methods) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[double]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[int]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[long]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[short]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[System.Numerics.Vector`1[float]]():uint (Tier0) -101 (-90.18 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.SafeBuffer:SizeOf[ubyte]():uint (Tier0) -126 (-70.39 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.__Canon]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[double]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[int]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[long]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[short]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.Nullable`1[int]]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[System.Numerics.Vector`1[float]]:Clear():this (Tier0) -152 (-70.37 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.Queue`1[ubyte]:Clear():this (Tier0) -119 (-64.67 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[System.__Canon](byref,byref,ulong) (Tier0) -94 (-59.12 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.Nullable`1[int]]:Clear():this (Tier0) -94 (-59.12 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[double,System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[int,System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[long,System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[short,System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[System.Nullable`1[int],System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.PriorityQueue`2[ubyte,System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[double]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[int]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[long]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[short]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.Nullable`1[int]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.Numerics.Vector`1[float]]:Clear():this (Tier0) -45 (-55.56 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[ubyte]:Clear():this (Tier0) -103 (-55.08 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[System.__Canon]:Clear():this (Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[double]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[long]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[short]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.Nullable`1[int]]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.Numerics.Vector`1[float]]:ReturnArrays(int):this (Instrumented Tier0) -470 (-54.21 % of base) : System.Linq.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[ubyte]:ReturnArrays(int):this (Instrumented Tier0) -59 (-51.30 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.Numerics.Vector`1[float]]:Clear():this (Tier0) -100 (-50.51 % of base) : System.Private.CoreLib.dasm - System.Span`1[ubyte]:Clear():this (Tier0) (2 methods) -8 (-50.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[long]():ubyte (Tier0) (2 base, 1 diff methods) -8 (-50.00 % of base) : System.Private.CoreLib.dasm - System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[ubyte]():ubyte (Tier0) (2 base, 1 diff methods) -43 (-48.86 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[double](byref,ulong) (Tier0) -43 (-48.86 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[int](byref,ulong) (Tier0) -43 (-48.86 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[long](byref,ulong) (Tier0) -43 (-48.86 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[short](byref,ulong) (Tier0) -43 (-48.86 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[System.Nullable`1[int]](byref,ulong) (Tier0) -43 (-48.86 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[ubyte](byref,ulong) (Tier0) -50 (-48.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[short]:Clear():this (Tier0) -103 (-47.69 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Reverse[System.__Canon](byref,ulong) (Tier0) -603 (-47.63 % of base) : System.Private.CoreLib.dasm - System.SpanHelpers:Fill[System.__Canon](byref,ulong,System.__Canon) (Instrumented Tier0) -55 (-47.41 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[double](byref,byref,ulong) (Tier0) -55 (-47.41 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[int](byref,byref,ulong) (Tier0) -55 (-47.41 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[long](byref,byref,ulong) (Tier0) -55 (-47.41 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[System.Nullable`1[int]](byref,byref,ulong) (Tier0) -54 (-47.37 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[System.Numerics.Vector`1[float]](byref,byref,ulong) (Tier0) -51 (-47.22 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[short](byref,byref,ulong) (Tier0) -51 (-47.22 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[ushort](byref,byref,ulong) (Tier0) -51 (-47.22 % of base) : System.Private.CoreLib.dasm - System.Span`1[double]:Clear():this (Tier0) -51 (-47.22 % of base) : System.Private.CoreLib.dasm - System.Span`1[long]:Clear():this (Tier0) -51 (-47.22 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.Nullable`1[int]]:Clear():this (Tier0) -47 (-47.00 % of base) : System.Private.CoreLib.dasm - System.Buffer:Memmove[ubyte](byref,byref,ulong) (Tier0) -50 (-46.73 % of base) : System.Private.CoreLib.dasm - System.Span`1[int]:Clear():this (Tier0) -184 (-45.32 % of base) : System.Private.CoreLib.dasm - System.Threading.Tasks.Task:FromResult[System.__Canon](System.__Canon):System.Threading.Tasks.Task`1[System.__Canon] (Tier0) -79 (-42.25 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[System.__Canon]:.ctor(ulong,int):this (Tier0) -79 (-42.25 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.__Canon]:.ctor(ulong,int):this (Tier0) -182 (-39.06 % of base) : System.Private.CoreLib.dasm - System.GC:AllocateUninitializedArray[System.__Canon](int,ubyte):System.__Canon[] (Tier0) -79 (-38.92 % of base) : System.Private.CoreLib.dasm - System.Collections.Generic.List`1[int]:RemoveAt(int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[double]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[int]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[long]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[short]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[System.Nullable`1[int]]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[System.Numerics.Vector`1[float]]:.ctor(ulong,int):this (Tier0) -76 (-36.54 % of base) : System.Private.CoreLib.dasm - System.ReadOnlySpan`1[ubyte]:.ctor(ulong,int):this (Tier0) (2 methods) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[double]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[int]:.ctor(ulong,int):this (Tier0) -76 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[long]:.ctor(ulong,int):this (Tier0) (2 methods) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[short]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.Nullable`1[int]]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[System.Numerics.Vector`1[float]]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[ubyte]:.ctor(ulong,int):this (Tier0) -38 (-36.54 % of base) : System.Private.CoreLib.dasm - System.Span`1[ushort]:.ctor(ulong,int):this (Tier0) -100 (-36.36 % of base) : System.Collections.dasm - System.Collections.Generic.Stack`1[System.__Canon]:Pop():System.__Canon:this (Tier0) -92 (-36.22 % of base) : System.Text.RegularExpressions.dasm - System.Text.StructListBuilder`1[System.__Canon]:Dispose():this (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[double](System.ReadOnlySpan`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[double](System.Span`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[int](System.ReadOnlySpan`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[int](System.Span`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[long](System.ReadOnlySpan`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[long](System.Span`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[short](System.ReadOnlySpan`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[short](System.Span`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[System.Numerics.Vector`1[float]](System.ReadOnlySpan`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[System.Numerics.Vector`1[float]](System.Span`1[ubyte]):byref (Tier0) -38 (-35.85 % of base) : System.Private.CoreLib.dasm - System.Runtime.InteropServices.MemoryMarshal:AsRef[ubyte](System.ReadOnlySpan`1[ubyte]):byref (Tier0) 353 total methods with Code Size differences (352 improved, 1 regressed), 230726 unchanged. -------------------------------------------------------------------------------- ```

Artifacts:

MihuBot commented 1 month ago

Top method improvements

-603 (-47.63 % of base) - System.SpanHelpers:Fill[System.__Canon](byref,ulong,System.__Canon) ```diff ; Assembly listing for method System.SpanHelpers:Fill[System.__Canon](byref,ulong,System.__Canon) (Instrumented Tier0) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Instrumented Tier0 code ; rbp based frame ; fully interruptible ; Final local variable assignments ; ; V00 TypeCtx [V00 ] ( 1, 1 ) long -> [rbp-0x38] do-not-enreg[] ; V01 arg0 [V01 ] ( 1, 1 ) byref -> [rbp-0x40] do-not-enreg[] ; V02 arg1 [V02 ] ( 1, 1 ) long -> [rbp-0x48] do-not-enreg[] ; V03 arg2 [V03 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] class-hnd ; V04 loc0 [V04 ] ( 1, 1 ) long -> [rbp-0x58] do-not-enreg[] -; V05 loc1 [V05 ] ( 1, 1 ) ref -> [rbp-0x60] do-not-enreg[F] must-init ld-addr-op class-hnd +; V05 loc1 [V05 ] ( 1, 1 ) ref -> [rbp-0x60] do-not-enreg[] must-init ld-addr-op class-hnd ; V06 loc2 [V06 ] ( 1, 1 ) simd32 -> [rbp-0x90] do-not-enreg[S] ld-addr-op ; V07 loc3 [V07 ] ( 1, 1 ) byref -> [rbp-0x98] do-not-enreg[] must-init ; V08 loc4 [V08 ] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[] ; V09 loc5 [V09 ] ( 1, 1 ) long -> [rbp-0xA8] do-not-enreg[] ; V10 loc6 [V10 ] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[] ; V11 loc7 [V11 ] ( 1, 1 ) simd16 -> [rbp-0xC0] do-not-enreg[S] ; V12 loc8 [V12 ] ( 1, 1 ) long -> [rbp-0xC8] do-not-enreg[] ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V14 tmp1 [V14 ] ( 1, 1 ) long -> [rbp-0xD0] do-not-enreg[] "spilling helperCall" -; V15 tmp2 [V15 ] ( 1, 1 ) long -> [rbp-0xD8] do-not-enreg[] "impSpillLclRefs" -; V16 tmp3 [V16 ] ( 1, 1 ) simd32 -> [rbp-0x110] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" -; V17 tmp4 [V17 ] ( 1, 1 ) simd32 -> [rbp-0x130] do-not-enreg[S] -; V18 tmp5 [V18 ] ( 1, 1 ) int -> [rbp-0x138] do-not-enreg[X] addr-exposed "patchpoint counter" -; V19 tmp6 [V19 ] ( 1, 1 ) long -> [rbp-0x140] do-not-enreg[] "fgMakeTemp is creating a new local variable" +; V14 tmp1 [V14 ] ( 1, 1 ) long -> [rbp-0xD0] do-not-enreg[] "impSpillLclRefs" +; V15 tmp2 [V15 ] ( 1, 1 ) int -> [rbp-0xD8] do-not-enreg[X] addr-exposed "patchpoint counter" ; -; Lcl frame size = 320 +; Lcl frame size = 224 G_M31119_IG01: push rbp - sub rsp, 320 - lea rbp, [rsp+0x140] + sub rsp, 224 + lea rbp, [rsp+0xE0] xor eax, eax mov qword ptr [rbp-0x60], rax mov qword ptr [rbp-0x98], rax mov qword ptr [rbp-0x30], rdi mov qword ptr [rbp-0x38], rdi mov bword ptr [rbp-0x40], rsi mov qword ptr [rbp-0x48], rdx mov gword ptr [rbp-0x50], rcx ;; size=49 bbWeight=1 PerfScore 9.00 G_M31119_IG02: - mov rax, qword ptr [rbp-0x38] - mov rax, qword ptr [rax+0x18] - mov rax, qword ptr [rax+0x10] - mov qword ptr [rbp-0x140], rax - cmp qword ptr [rbp-0x140], 0 - je SHORT G_M31119_IG04 - ;; size=29 bbWeight=1 PerfScore 9.00 -G_M31119_IG03: - mov rax, qword ptr [rbp-0x140] - mov qword ptr [rbp-0xD0], rax - jmp SHORT G_M31119_IG05 - ;; size=16 bbWeight=0.80 PerfScore 3.20 -G_M31119_IG04: - mov rdi, qword ptr [rbp-0x38] - mov rsi, 0xD1FFAB1E ; global ptr - call CORINFO_HELP_RUNTIMEHANDLE_METHOD - mov qword ptr [rbp-0xD0], rax - ;; size=26 bbWeight=0.20 PerfScore 0.65 -G_M31119_IG05: - mov dword ptr [rbp-0x138], 0x3E8 - mov rdi, qword ptr [rbp-0xD0] - mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[System.__Canon]():ubyte - call [rax]System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[System.__Canon]():ubyte - test eax, eax - jne G_M31119_IG17 - mov edi, 8 - mov rax, 0xD1FFAB1E ; code for System.Numerics.BitOperations:IsPow2(int):ubyte - call [rax]System.Numerics.BitOperations:IsPow2(int):ubyte - test eax, eax - je SHORT G_M31119_IG07 - cmp qword ptr [rbp-0x48], 4 - jb SHORT G_M31119_IG06 - mov rax, gword ptr [rbp-0x50] - mov gword ptr [rbp-0x60], rax - jmp SHORT G_M31119_IG08 - ;; size=75 bbWeight=1 PerfScore 18.25 -G_M31119_IG06: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - jmp G_M31119_IG17 - ;; size=20 bbWeight=0.50 PerfScore 1.62 -G_M31119_IG07: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - jmp G_M31119_IG17 - ;; size=20 bbWeight=0.50 PerfScore 1.62 -G_M31119_IG08: - vxorps ymm0, ymm0, ymm0 - vmovups ymmword ptr [rbp-0x110], ymm0 - lea rdi, [rbp-0x110] - mov rsi, qword ptr [rbp-0x60] - mov rax, 0xD1FFAB1E ; code for System.Numerics.Vector`1[ulong]:.ctor(ulong):this - call [rax]System.Numerics.Vector`1[ulong]:.ctor(ulong):this - vmovups ymm0, ymmword ptr [rbp-0x110] - vmovups ymmword ptr [rbp-0x130], ymm0 - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - vmovups ymm0, ymmword ptr [rbp-0x130] - vmovups ymmword ptr [rbp-0x90], ymm0 - mov rax, bword ptr [rbp-0x40] - mov bword ptr [rbp-0x98], rax - mov rax, qword ptr [rbp-0x48] - shl rax, 3 - mov qword ptr [rbp-0xA0], rax - mov rax, qword ptr [rbp-0xA0] - and rax, -64 - mov qword ptr [rbp-0xA8], rax - xor eax, eax - mov qword ptr [rbp-0xB0], rax - cmp qword ptr [rbp-0x48], 8 - jb G_M31119_IG13 - ;; size=146 bbWeight=1 PerfScore 28.33 -G_M31119_IG09: - mov eax, dword ptr [rbp-0x138] - dec eax - mov dword ptr [rbp-0x138], eax - cmp dword ptr [rbp-0x138], 0 - jg SHORT G_M31119_IG11 - ;; size=23 bbWeight=1 PerfScore 5.25 -G_M31119_IG10: - lea rdi, [rbp-0x138] - mov esi, 465 - call CORINFO_HELP_PATCHPOINT - ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M31119_IG11: - mov rax, bword ptr [rbp-0x98] - mov rcx, qword ptr [rbp-0xB0] - vmovups ymm0, ymmword ptr [rbp-0x90] - vmovups ymmword ptr [rax+rcx], ymm0 - mov rax, bword ptr [rbp-0x98] - mov rcx, qword ptr [rbp-0xB0] - vmovups ymm0, ymmword ptr [rbp-0x90] - vmovups ymmword ptr [rax+rcx+0x20], ymm0 - mov rax, qword ptr [rbp-0xB0] - add rax, 64 - mov qword ptr [rbp-0xB0], rax - mov rax, qword ptr [rbp-0xB0] - cmp rax, qword ptr [rbp-0xA8] - jb G_M31119_IG16 - ;; size=93 bbWeight=1 PerfScore 22.25 -G_M31119_IG12: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - ;; size=15 bbWeight=0.50 PerfScore 0.62 -G_M31119_IG13: - mov eax, dword ptr [rbp-0xA0] - and eax, 32 - test eax, eax - je SHORT G_M31119_IG14 - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov rax, bword ptr [rbp-0x98] - mov rcx, qword ptr [rbp-0xB0] - vmovups ymm0, ymmword ptr [rbp-0x90] - vmovups ymmword ptr [rax+rcx], ymm0 - ;; size=55 bbWeight=1 PerfScore 11.75 -G_M31119_IG14: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov rax, bword ptr [rbp-0x98] - mov rcx, qword ptr [rbp-0xA0] - vmovups ymm0, ymmword ptr [rbp-0x90] - vmovups ymmword ptr [rax+rcx-0x20], ymm0 - ;; size=43 bbWeight=1 PerfScore 9.25 -G_M31119_IG15: - vzeroupper - add rsp, 320 - pop rbp - ret - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M31119_IG16: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - jmp G_M31119_IG09 - ;; size=20 bbWeight=0.50 PerfScore 1.62 -G_M31119_IG17: + mov dword ptr [rbp-0xD8], 0x3E8 xor eax, eax mov qword ptr [rbp-0x58], rax cmp qword ptr [rbp-0x48], 8 - jb G_M31119_IG22 + jb G_M31119_IG07 mov rax, qword ptr [rbp-0x48] and rax, -8 mov qword ptr [rbp-0xC8], rax - ;; size=32 bbWeight=1 PerfScore 6.50 -G_M31119_IG18: - mov eax, dword ptr [rbp-0x138] + ;; size=42 bbWeight=1 PerfScore 7.50 +G_M31119_IG03: + mov eax, dword ptr [rbp-0xD8] dec eax - mov dword ptr [rbp-0x138], eax - cmp dword ptr [rbp-0x138], 0 - jg SHORT G_M31119_IG20 + mov dword ptr [rbp-0xD8], eax + cmp dword ptr [rbp-0xD8], 0 + jg SHORT G_M31119_IG05 ;; size=23 bbWeight=1 PerfScore 5.25 -G_M31119_IG19: - lea rdi, [rbp-0x138] +G_M31119_IG04: + lea rdi, [rbp-0xD8] mov esi, 584 call CORINFO_HELP_PATCHPOINT ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M31119_IG20: +G_M31119_IG05: mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x08] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x10] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x18] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x20] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x28] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x30] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x38] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, qword ptr [rbp-0x58] add rax, 8 - mov qword ptr [rbp-0xD8], rax + mov qword ptr [rbp-0xD0], rax mov rax, qword ptr [rbp-0x58] add rax, 8 mov qword ptr [rbp-0x58], rax - mov rax, qword ptr [rbp-0xD8] + mov rax, qword ptr [rbp-0xD0] cmp rax, qword ptr [rbp-0xC8] - jb G_M31119_IG27 + jb G_M31119_IG12 ;; size=222 bbWeight=1 PerfScore 48.00 -G_M31119_IG21: +G_M31119_IG06: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 ;; size=15 bbWeight=0.50 PerfScore 0.62 -G_M31119_IG22: +G_M31119_IG07: mov eax, dword ptr [rbp-0x48] and eax, 4 test eax, eax - je SHORT G_M31119_IG23 + je SHORT G_M31119_IG08 mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x08] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x10] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x18] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, qword ptr [rbp-0x58] add rax, 4 mov qword ptr [rbp-0x58], rax ;; size=124 bbWeight=1 PerfScore 25.50 -G_M31119_IG23: +G_M31119_IG08: mov eax, dword ptr [rbp-0x48] and eax, 2 test eax, eax - je SHORT G_M31119_IG24 + je SHORT G_M31119_IG09 mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx+0x08] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF mov rax, qword ptr [rbp-0x58] add rax, 2 mov qword ptr [rbp-0x58], rax ;; size=80 bbWeight=1 PerfScore 15.50 -G_M31119_IG24: +G_M31119_IG09: mov eax, dword ptr [rbp-0x48] and eax, 1 test eax, eax - je SHORT G_M31119_IG25 + je SHORT G_M31119_IG10 mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov rax, bword ptr [rbp-0x40] mov rcx, qword ptr [rbp-0x58] lea rdi, bword ptr [rax+8*rcx] mov rsi, gword ptr [rbp-0x50] call CORINFO_HELP_CHECKED_ASSIGN_REF ;; size=46 bbWeight=1 PerfScore 8.25 -G_M31119_IG25: +G_M31119_IG10: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 nop ;; size=16 bbWeight=1 PerfScore 1.50 -G_M31119_IG26: - vzeroupper - add rsp, 320 +G_M31119_IG11: + add rsp, 224 pop rbp ret - ;; size=12 bbWeight=1 PerfScore 2.75 -G_M31119_IG27: + ;; size=9 bbWeight=1 PerfScore 1.75 +G_M31119_IG12: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 - jmp G_M31119_IG18 + jmp G_M31119_IG03 ;; size=20 bbWeight=0.50 PerfScore 1.62 -; Total bytes of code 1266, prolog size 49, PerfScore 240.72, instruction count 252, allocated bytes for code 1266 (MethodHash=45708670) for method System.SpanHelpers:Fill[System.__Canon](byref,ulong,System.__Canon) (Instrumented Tier0) +; Total bytes of code 663, prolog size 49, PerfScore 124.52, instruction count 146, allocated bytes for code 663 (MethodHash=45708670) for method System.SpanHelpers:Fill[System.__Canon](byref,ulong,System.__Canon) (Instrumented Tier0) ```
-470 (-54.21 % of base) - System.Collections.Generic.SegmentedArrayBuilder`1[double]:ReturnArrays(int):this ```diff ; Assembly listing for method System.Collections.Generic.SegmentedArrayBuilder`1[double]:ReturnArrays(int):this (Instrumented Tier0) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Instrumented Tier0 code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x30] do-not-enreg[] this ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp-0x34] do-not-enreg[] -; V02 loc0 [V02 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op +; V02 loc0 [V02 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[SF] must-init ld-addr-op ; V03 loc1 [V03 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init class-hnd -; V04 loc2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[SF] must-init ld-addr-op +; V04 loc2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[S] must-init ld-addr-op ; V05 loc3 [V05 ] ( 1, 1 ) int -> [rbp-0x64] do-not-enreg[] ; V06 loc4 [V06 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init class-hnd ; V07 loc5 [V07 ] ( 1, 1 ) int -> [rbp-0x74] do-not-enreg[] ; V08 loc6 [V08 ] ( 1, 1 ) ref -> [rbp-0x80] do-not-enreg[] must-init class-hnd ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10 ] ( 1, 1 ) struct (16) [rbp-0x90] do-not-enreg[SR] multireg-ret must-init "Return value temp for multireg return" -; V11 tmp2 [V11 ] ( 1, 1 ) struct (16) [rbp-0xA0] do-not-enreg[SR] multireg-ret must-init "Return value temp for multireg return" -; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [rbp-0xA8] do-not-enreg[] must-init "handle histogram profile tmp" -; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [rbp-0xB0] do-not-enreg[] must-init "handle histogram profile tmp" -; V14 tmp5 [V14 ] ( 1, 1 ) ref -> [rbp-0xB8] do-not-enreg[] must-init "handle histogram profile tmp" -; V15 tmp6 [V15 ] ( 1, 1 ) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed "patchpoint counter" -; V16 tmp7 [V16 ] ( 1, 1 ) ref -> [rbp-0xC8] do-not-enreg[] must-init "argument with side effect" -; V17 tmp8 [V17 ] ( 1, 1 ) ref -> [rbp-0xD0] do-not-enreg[] must-init "argument with side effect" -; V18 tmp9 [V18 ] ( 1, 1 ) ref -> [rbp-0xD8] do-not-enreg[] must-init "argument with side effect" +; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [rbp-0x98] do-not-enreg[] must-init "handle histogram profile tmp" +; V12 tmp3 [V12 ] ( 1, 1 ) int -> [rbp-0xA0] do-not-enreg[X] addr-exposed "patchpoint counter" +; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [rbp-0xA8] do-not-enreg[] must-init "argument with side effect" ; -; Lcl frame size = 224 +; Lcl frame size = 176 G_M52201_IG01: push rbp - sub rsp, 224 - lea rbp, [rsp+0xE0] + sub rsp, 176 + lea rbp, [rsp+0xB0] xor eax, eax - mov qword ptr [rbp-0xD8], rax + mov qword ptr [rbp-0xA8], rax vxorps xmm8, xmm8, xmm8 - vmovdqu32 zmmword ptr [rbp-0xD0], zmm8 - vmovdqu32 zmmword ptr [rbp-0x90], zmm8 + vmovdqu32 zmmword ptr [rbp-0xA0], zmm8 + vmovdqa xmmword ptr [rbp-0x60], xmm8 vmovdqa xmmword ptr [rbp-0x50], xmm8 mov qword ptr [rbp-0x40], rax mov bword ptr [rbp-0x30], rdi mov dword ptr [rbp-0x34], esi - ;; size=66 bbWeight=1 PerfScore 12.33 + ;; size=61 bbWeight=1 PerfScore 12.33 G_M52201_IG02: mov rax, bword ptr [rbp-0x30] cmp byte ptr [rax], al mov rax, bword ptr [rbp-0x30] lea rsi, bword ptr [rax+0x10] mov rdi, 0xD1FFAB1E ; :InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[double],double[]](byref,int):System.ReadOnlySpan`1[double[]] mov edx, 27 mov rax, 0xD1FFAB1E ; code for :InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[double],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] call [rax]:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[double],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] mov bword ptr [rbp-0x90], rax mov qword ptr [rbp-0x88], rdx ;; size=55 bbWeight=1 PerfScore 11.25 G_M52201_IG03: vmovdqu xmm0, xmmword ptr [rbp-0x90] vmovdqu xmmword ptr [rbp-0x48], xmm0 ;; size=13 bbWeight=1 PerfScore 4.00 G_M52201_IG04: - mov dword ptr [rbp-0xC0], 0x3E8 - mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[double]():ubyte - call [rax]System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[double]():ubyte - test eax, eax - je G_M52201_IG12 - mov eax, dword ptr [rbp-0x34] - dec eax - mov dword ptr [rbp-0x34], eax - lea rdi, [rbp-0x48] - mov ecx, dword ptr [rbp-0x34] - mov rsi, 0xD1FFAB1E ; System.ReadOnlySpan`1[double[]] - xor edx, edx - mov rax, 0xD1FFAB1E ; code for System.ReadOnlySpan`1[System.__Canon]:Slice(int,int):System.ReadOnlySpan`1[System.__Canon]:this - call [rax]System.ReadOnlySpan`1[System.__Canon]:Slice(int,int):System.ReadOnlySpan`1[System.__Canon]:this - mov bword ptr [rbp-0xA0], rax - mov qword ptr [rbp-0x98], rdx - ;; size=83 bbWeight=1 PerfScore 15.00 -G_M52201_IG05: - vmovdqu xmm0, xmmword ptr [rbp-0xA0] - vmovdqu xmmword ptr [rbp-0x60], xmm0 - ;; size=13 bbWeight=1 PerfScore 4.00 -G_M52201_IG06: - xor eax, eax - mov dword ptr [rbp-0x64], eax - jmp G_M52201_IG08 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M52201_IG07: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov eax, dword ptr [rbp-0x58] - cmp dword ptr [rbp-0x64], eax - jae G_M52201_IG20 - mov rax, bword ptr [rbp-0x60] - mov ecx, dword ptr [rbp-0x64] - mov ecx, ecx - mov rax, gword ptr [rax+8*rcx] - mov gword ptr [rbp-0x70], rax - mov rdi, gword ptr [rbp-0x70] - mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array) - call [rax]System.Array:Clear(System.Array) - mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[double]:get_Shared():System.Buffers.ArrayPool`1[double] - call [rax]System.Buffers.ArrayPool`1[double]:get_Shared():System.Buffers.ArrayPool`1[double] - mov gword ptr [rbp-0xA8], rax - mov rdi, gword ptr [rbp-0xA8] - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xA8] - mov gword ptr [rbp-0xC8], rax - mov rdi, gword ptr [rbp-0xC8] - mov rsi, gword ptr [rbp-0x70] - xor edx, edx - mov rax, gword ptr [rbp-0xC8] - mov rax, qword ptr [rax] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.ArrayPool`1[double]:Return(double[],ubyte):this - mov eax, dword ptr [rbp-0x64] - inc eax - mov dword ptr [rbp-0x64], eax - ;; size=153 bbWeight=1 PerfScore 35.75 -G_M52201_IG08: - mov eax, dword ptr [rbp-0xC0] - dec eax - mov dword ptr [rbp-0xC0], eax - cmp dword ptr [rbp-0xC0], 0 - jg SHORT G_M52201_IG10 - ;; size=23 bbWeight=1 PerfScore 5.25 -G_M52201_IG09: - lea rdi, [rbp-0xC0] - mov esi, 75 - call CORINFO_HELP_PATCHPOINT - ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M52201_IG10: - mov eax, dword ptr [rbp-0x64] - cmp eax, dword ptr [rbp-0x58] - jl G_M52201_IG07 - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov eax, dword ptr [rbp-0x40] - cmp dword ptr [rbp-0x34], eax - jae G_M52201_IG20 - mov rax, bword ptr [rbp-0x48] - mov ecx, dword ptr [rbp-0x34] - mov ecx, ecx - mov rax, gword ptr [rax+8*rcx] - mov gword ptr [rbp-0x50], rax - mov rax, bword ptr [rbp-0x30] - mov edx, dword ptr [rax+0x08] - mov rdi, gword ptr [rbp-0x50] - xor esi, esi - mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array,int,int) - call [rax]System.Array:Clear(System.Array,int,int) - mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[double]:get_Shared():System.Buffers.ArrayPool`1[double] - call [rax]System.Buffers.ArrayPool`1[double]:get_Shared():System.Buffers.ArrayPool`1[double] - mov gword ptr [rbp-0xB0], rax - mov rdi, gword ptr [rbp-0xB0] - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xB0] - mov gword ptr [rbp-0xD0], rax - mov rdi, gword ptr [rbp-0xD0] - mov rsi, gword ptr [rbp-0x50] - xor edx, edx - mov rax, gword ptr [rbp-0xD0] - mov rax, qword ptr [rax] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.ArrayPool`1[double]:Return(double[],ubyte):this - nop - ;; size=167 bbWeight=1 PerfScore 41.00 -G_M52201_IG11: - add rsp, 224 - pop rbp - ret - ;; size=9 bbWeight=1 PerfScore 1.75 -G_M52201_IG12: + mov dword ptr [rbp-0xA0], 0x3E8 xor eax, eax mov dword ptr [rbp-0x74], eax - jmp G_M52201_IG14 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M52201_IG13: + jmp G_M52201_IG06 + ;; size=20 bbWeight=1 PerfScore 4.25 +G_M52201_IG05: mov eax, dword ptr [rbp-0x40] cmp dword ptr [rbp-0x74], eax - jae G_M52201_IG20 + jae G_M52201_IG12 mov rax, bword ptr [rbp-0x48] mov ecx, dword ptr [rbp-0x74] mov ecx, ecx mov rax, gword ptr [rax+8*rcx] mov gword ptr [rbp-0x80], rax cmp gword ptr [rbp-0x80], 0 - je G_M52201_IG19 + je G_M52201_IG11 mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[double]:get_Shared():System.Buffers.ArrayPool`1[double] call [rax]System.Buffers.ArrayPool`1[double]:get_Shared():System.Buffers.ArrayPool`1[double] - mov gword ptr [rbp-0xB8], rax - mov rdi, gword ptr [rbp-0xB8] + mov gword ptr [rbp-0x98], rax + mov rdi, gword ptr [rbp-0x98] mov rsi, 0xD1FFAB1E call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xB8] - mov gword ptr [rbp-0xD8], rax - mov rdi, gword ptr [rbp-0xD8] + mov rax, gword ptr [rbp-0x98] + mov gword ptr [rbp-0xA8], rax + mov rdi, gword ptr [rbp-0xA8] mov rsi, gword ptr [rbp-0x80] xor edx, edx - mov rax, gword ptr [rbp-0xD8] + mov rax, gword ptr [rbp-0xA8] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.ArrayPool`1[double]:Return(double[],ubyte):this mov eax, dword ptr [rbp-0x74] inc eax mov dword ptr [rbp-0x74], eax ;; size=148 bbWeight=1 PerfScore 34.50 -G_M52201_IG14: - mov eax, dword ptr [rbp-0xC0] +G_M52201_IG06: + mov eax, dword ptr [rbp-0xA0] dec eax - mov dword ptr [rbp-0xC0], eax - cmp dword ptr [rbp-0xC0], 0 - jg SHORT G_M52201_IG16 + mov dword ptr [rbp-0xA0], eax + cmp dword ptr [rbp-0xA0], 0 + jg SHORT G_M52201_IG08 ;; size=23 bbWeight=1 PerfScore 5.25 -G_M52201_IG15: - lea rdi, [rbp-0xC0] +G_M52201_IG07: + lea rdi, [rbp-0xA0] mov esi, 161 call CORINFO_HELP_PATCHPOINT ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M52201_IG16: +G_M52201_IG08: mov eax, dword ptr [rbp-0x74] cmp eax, dword ptr [rbp-0x40] - jl G_M52201_IG13 + jl G_M52201_IG05 ;; size=12 bbWeight=1 PerfScore 4.00 -G_M52201_IG17: +G_M52201_IG09: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 nop ;; size=16 bbWeight=1 PerfScore 1.50 -G_M52201_IG18: - add rsp, 224 +G_M52201_IG10: + add rsp, 176 pop rbp ret ;; size=9 bbWeight=1 PerfScore 1.75 -G_M52201_IG19: +G_M52201_IG11: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 - jmp SHORT G_M52201_IG17 + jmp SHORT G_M52201_IG09 ;; size=17 bbWeight=0.50 PerfScore 1.62 -G_M52201_IG20: +G_M52201_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 867, prolog size 59, PerfScore 185.49, instruction count 177, allocated bytes for code 867 (MethodHash=5c7c3416) for method System.Collections.Generic.SegmentedArrayBuilder`1[double]:ReturnArrays(int):this (Instrumented Tier0) +; Total bytes of code 397, prolog size 54, PerfScore 80.48, instruction count 80, allocated bytes for code 397 (MethodHash=5c7c3416) for method System.Collections.Generic.SegmentedArrayBuilder`1[double]:ReturnArrays(int):this (Instrumented Tier0) ```
-470 (-54.21 % of base) - System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this ```diff ; Assembly listing for method System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (Instrumented Tier0) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Instrumented Tier0 code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x30] do-not-enreg[] this ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp-0x34] do-not-enreg[] -; V02 loc0 [V02 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op +; V02 loc0 [V02 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[SF] must-init ld-addr-op ; V03 loc1 [V03 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init class-hnd -; V04 loc2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[SF] must-init ld-addr-op +; V04 loc2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[S] must-init ld-addr-op ; V05 loc3 [V05 ] ( 1, 1 ) int -> [rbp-0x64] do-not-enreg[] ; V06 loc4 [V06 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init class-hnd ; V07 loc5 [V07 ] ( 1, 1 ) int -> [rbp-0x74] do-not-enreg[] ; V08 loc6 [V08 ] ( 1, 1 ) ref -> [rbp-0x80] do-not-enreg[] must-init class-hnd ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10 ] ( 1, 1 ) struct (16) [rbp-0x90] do-not-enreg[SR] multireg-ret must-init "Return value temp for multireg return" -; V11 tmp2 [V11 ] ( 1, 1 ) struct (16) [rbp-0xA0] do-not-enreg[SR] multireg-ret must-init "Return value temp for multireg return" -; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [rbp-0xA8] do-not-enreg[] must-init "handle histogram profile tmp" -; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [rbp-0xB0] do-not-enreg[] must-init "handle histogram profile tmp" -; V14 tmp5 [V14 ] ( 1, 1 ) ref -> [rbp-0xB8] do-not-enreg[] must-init "handle histogram profile tmp" -; V15 tmp6 [V15 ] ( 1, 1 ) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed "patchpoint counter" -; V16 tmp7 [V16 ] ( 1, 1 ) ref -> [rbp-0xC8] do-not-enreg[] must-init "argument with side effect" -; V17 tmp8 [V17 ] ( 1, 1 ) ref -> [rbp-0xD0] do-not-enreg[] must-init "argument with side effect" -; V18 tmp9 [V18 ] ( 1, 1 ) ref -> [rbp-0xD8] do-not-enreg[] must-init "argument with side effect" +; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [rbp-0x98] do-not-enreg[] must-init "handle histogram profile tmp" +; V12 tmp3 [V12 ] ( 1, 1 ) int -> [rbp-0xA0] do-not-enreg[X] addr-exposed "patchpoint counter" +; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [rbp-0xA8] do-not-enreg[] must-init "argument with side effect" ; -; Lcl frame size = 224 +; Lcl frame size = 176 G_M7919_IG01: push rbp - sub rsp, 224 - lea rbp, [rsp+0xE0] + sub rsp, 176 + lea rbp, [rsp+0xB0] xor eax, eax - mov qword ptr [rbp-0xD8], rax + mov qword ptr [rbp-0xA8], rax vxorps xmm8, xmm8, xmm8 - vmovdqu32 zmmword ptr [rbp-0xD0], zmm8 - vmovdqu32 zmmword ptr [rbp-0x90], zmm8 + vmovdqu32 zmmword ptr [rbp-0xA0], zmm8 + vmovdqa xmmword ptr [rbp-0x60], xmm8 vmovdqa xmmword ptr [rbp-0x50], xmm8 mov qword ptr [rbp-0x40], rax mov bword ptr [rbp-0x30], rdi mov dword ptr [rbp-0x34], esi - ;; size=66 bbWeight=1 PerfScore 12.33 + ;; size=61 bbWeight=1 PerfScore 12.33 G_M7919_IG02: mov rax, bword ptr [rbp-0x30] cmp byte ptr [rax], al mov rax, bword ptr [rbp-0x30] lea rsi, bword ptr [rax+0x10] mov rdi, 0xD1FFAB1E ; :InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[int],int[]](byref,int):System.ReadOnlySpan`1[int[]] mov edx, 27 mov rax, 0xD1FFAB1E ; code for :InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[int],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] call [rax]:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[int],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] mov bword ptr [rbp-0x90], rax mov qword ptr [rbp-0x88], rdx ;; size=55 bbWeight=1 PerfScore 11.25 G_M7919_IG03: vmovdqu xmm0, xmmword ptr [rbp-0x90] vmovdqu xmmword ptr [rbp-0x48], xmm0 ;; size=13 bbWeight=1 PerfScore 4.00 G_M7919_IG04: - mov dword ptr [rbp-0xC0], 0x3E8 - mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[int]():ubyte - call [rax]System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[int]():ubyte - test eax, eax - je G_M7919_IG12 - mov eax, dword ptr [rbp-0x34] - dec eax - mov dword ptr [rbp-0x34], eax - lea rdi, [rbp-0x48] - mov ecx, dword ptr [rbp-0x34] - mov rsi, 0xD1FFAB1E ; System.ReadOnlySpan`1[int[]] - xor edx, edx - mov rax, 0xD1FFAB1E ; code for System.ReadOnlySpan`1[System.__Canon]:Slice(int,int):System.ReadOnlySpan`1[System.__Canon]:this - call [rax]System.ReadOnlySpan`1[System.__Canon]:Slice(int,int):System.ReadOnlySpan`1[System.__Canon]:this - mov bword ptr [rbp-0xA0], rax - mov qword ptr [rbp-0x98], rdx - ;; size=83 bbWeight=1 PerfScore 15.00 -G_M7919_IG05: - vmovdqu xmm0, xmmword ptr [rbp-0xA0] - vmovdqu xmmword ptr [rbp-0x60], xmm0 - ;; size=13 bbWeight=1 PerfScore 4.00 -G_M7919_IG06: - xor eax, eax - mov dword ptr [rbp-0x64], eax - jmp G_M7919_IG08 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M7919_IG07: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov eax, dword ptr [rbp-0x58] - cmp dword ptr [rbp-0x64], eax - jae G_M7919_IG20 - mov rax, bword ptr [rbp-0x60] - mov ecx, dword ptr [rbp-0x64] - mov ecx, ecx - mov rax, gword ptr [rax+8*rcx] - mov gword ptr [rbp-0x70], rax - mov rdi, gword ptr [rbp-0x70] - mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array) - call [rax]System.Array:Clear(System.Array) - mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] - call [rax]System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] - mov gword ptr [rbp-0xA8], rax - mov rdi, gword ptr [rbp-0xA8] - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xA8] - mov gword ptr [rbp-0xC8], rax - mov rdi, gword ptr [rbp-0xC8] - mov rsi, gword ptr [rbp-0x70] - xor edx, edx - mov rax, gword ptr [rbp-0xC8] - mov rax, qword ptr [rax] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.ArrayPool`1[int]:Return(int[],ubyte):this - mov eax, dword ptr [rbp-0x64] - inc eax - mov dword ptr [rbp-0x64], eax - ;; size=153 bbWeight=1 PerfScore 35.75 -G_M7919_IG08: - mov eax, dword ptr [rbp-0xC0] - dec eax - mov dword ptr [rbp-0xC0], eax - cmp dword ptr [rbp-0xC0], 0 - jg SHORT G_M7919_IG10 - ;; size=23 bbWeight=1 PerfScore 5.25 -G_M7919_IG09: - lea rdi, [rbp-0xC0] - mov esi, 75 - call CORINFO_HELP_PATCHPOINT - ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M7919_IG10: - mov eax, dword ptr [rbp-0x64] - cmp eax, dword ptr [rbp-0x58] - jl G_M7919_IG07 - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov eax, dword ptr [rbp-0x40] - cmp dword ptr [rbp-0x34], eax - jae G_M7919_IG20 - mov rax, bword ptr [rbp-0x48] - mov ecx, dword ptr [rbp-0x34] - mov ecx, ecx - mov rax, gword ptr [rax+8*rcx] - mov gword ptr [rbp-0x50], rax - mov rax, bword ptr [rbp-0x30] - mov edx, dword ptr [rax+0x08] - mov rdi, gword ptr [rbp-0x50] - xor esi, esi - mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array,int,int) - call [rax]System.Array:Clear(System.Array,int,int) - mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] - call [rax]System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] - mov gword ptr [rbp-0xB0], rax - mov rdi, gword ptr [rbp-0xB0] - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xB0] - mov gword ptr [rbp-0xD0], rax - mov rdi, gword ptr [rbp-0xD0] - mov rsi, gword ptr [rbp-0x50] - xor edx, edx - mov rax, gword ptr [rbp-0xD0] - mov rax, qword ptr [rax] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.ArrayPool`1[int]:Return(int[],ubyte):this - nop - ;; size=167 bbWeight=1 PerfScore 41.00 -G_M7919_IG11: - add rsp, 224 - pop rbp - ret - ;; size=9 bbWeight=1 PerfScore 1.75 -G_M7919_IG12: + mov dword ptr [rbp-0xA0], 0x3E8 xor eax, eax mov dword ptr [rbp-0x74], eax - jmp G_M7919_IG14 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M7919_IG13: + jmp G_M7919_IG06 + ;; size=20 bbWeight=1 PerfScore 4.25 +G_M7919_IG05: mov eax, dword ptr [rbp-0x40] cmp dword ptr [rbp-0x74], eax - jae G_M7919_IG20 + jae G_M7919_IG12 mov rax, bword ptr [rbp-0x48] mov ecx, dword ptr [rbp-0x74] mov ecx, ecx mov rax, gword ptr [rax+8*rcx] mov gword ptr [rbp-0x80], rax cmp gword ptr [rbp-0x80], 0 - je G_M7919_IG19 + je G_M7919_IG11 mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] call [rax]System.Buffers.ArrayPool`1[int]:get_Shared():System.Buffers.ArrayPool`1[int] - mov gword ptr [rbp-0xB8], rax - mov rdi, gword ptr [rbp-0xB8] + mov gword ptr [rbp-0x98], rax + mov rdi, gword ptr [rbp-0x98] mov rsi, 0xD1FFAB1E call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xB8] - mov gword ptr [rbp-0xD8], rax - mov rdi, gword ptr [rbp-0xD8] + mov rax, gword ptr [rbp-0x98] + mov gword ptr [rbp-0xA8], rax + mov rdi, gword ptr [rbp-0xA8] mov rsi, gword ptr [rbp-0x80] xor edx, edx - mov rax, gword ptr [rbp-0xD8] + mov rax, gword ptr [rbp-0xA8] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.ArrayPool`1[int]:Return(int[],ubyte):this mov eax, dword ptr [rbp-0x74] inc eax mov dword ptr [rbp-0x74], eax ;; size=148 bbWeight=1 PerfScore 34.50 -G_M7919_IG14: - mov eax, dword ptr [rbp-0xC0] +G_M7919_IG06: + mov eax, dword ptr [rbp-0xA0] dec eax - mov dword ptr [rbp-0xC0], eax - cmp dword ptr [rbp-0xC0], 0 - jg SHORT G_M7919_IG16 + mov dword ptr [rbp-0xA0], eax + cmp dword ptr [rbp-0xA0], 0 + jg SHORT G_M7919_IG08 ;; size=23 bbWeight=1 PerfScore 5.25 -G_M7919_IG15: - lea rdi, [rbp-0xC0] +G_M7919_IG07: + lea rdi, [rbp-0xA0] mov esi, 161 call CORINFO_HELP_PATCHPOINT ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M7919_IG16: +G_M7919_IG08: mov eax, dword ptr [rbp-0x74] cmp eax, dword ptr [rbp-0x40] - jl G_M7919_IG13 + jl G_M7919_IG05 ;; size=12 bbWeight=1 PerfScore 4.00 -G_M7919_IG17: +G_M7919_IG09: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 nop ;; size=16 bbWeight=1 PerfScore 1.50 -G_M7919_IG18: - add rsp, 224 +G_M7919_IG10: + add rsp, 176 pop rbp ret ;; size=9 bbWeight=1 PerfScore 1.75 -G_M7919_IG19: +G_M7919_IG11: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 - jmp SHORT G_M7919_IG17 + jmp SHORT G_M7919_IG09 ;; size=17 bbWeight=0.50 PerfScore 1.62 -G_M7919_IG20: +G_M7919_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 867, prolog size 59, PerfScore 185.49, instruction count 177, allocated bytes for code 867 (MethodHash=9563e110) for method System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (Instrumented Tier0) +; Total bytes of code 397, prolog size 54, PerfScore 80.48, instruction count 80, allocated bytes for code 397 (MethodHash=9563e110) for method System.Collections.Generic.SegmentedArrayBuilder`1[int]:ReturnArrays(int):this (Instrumented Tier0) ```
-470 (-54.21 % of base) - System.Collections.Generic.SegmentedArrayBuilder`1[long]:ReturnArrays(int):this ```diff ; Assembly listing for method System.Collections.Generic.SegmentedArrayBuilder`1[long]:ReturnArrays(int):this (Instrumented Tier0) ; Emitting BLENDED_CODE for X64 with AVX512 - Unix ; Instrumented Tier0 code ; rbp based frame ; partially interruptible ; Final local variable assignments ; ; V00 this [V00 ] ( 1, 1 ) byref -> [rbp-0x30] do-not-enreg[] this ; V01 arg1 [V01 ] ( 1, 1 ) int -> [rbp-0x34] do-not-enreg[] -; V02 loc0 [V02 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op +; V02 loc0 [V02 ] ( 1, 1 ) struct (16) [rbp-0x48] do-not-enreg[SF] must-init ld-addr-op ; V03 loc1 [V03 ] ( 1, 1 ) ref -> [rbp-0x50] do-not-enreg[] must-init class-hnd -; V04 loc2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[SF] must-init ld-addr-op +; V04 loc2 [V04 ] ( 1, 1 ) struct (16) [rbp-0x60] do-not-enreg[S] must-init ld-addr-op ; V05 loc3 [V05 ] ( 1, 1 ) int -> [rbp-0x64] do-not-enreg[] ; V06 loc4 [V06 ] ( 1, 1 ) ref -> [rbp-0x70] do-not-enreg[] must-init class-hnd ; V07 loc5 [V07 ] ( 1, 1 ) int -> [rbp-0x74] do-not-enreg[] ; V08 loc6 [V08 ] ( 1, 1 ) ref -> [rbp-0x80] do-not-enreg[] must-init class-hnd ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10 ] ( 1, 1 ) struct (16) [rbp-0x90] do-not-enreg[SR] multireg-ret must-init "Return value temp for multireg return" -; V11 tmp2 [V11 ] ( 1, 1 ) struct (16) [rbp-0xA0] do-not-enreg[SR] multireg-ret must-init "Return value temp for multireg return" -; V12 tmp3 [V12 ] ( 1, 1 ) ref -> [rbp-0xA8] do-not-enreg[] must-init "handle histogram profile tmp" -; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [rbp-0xB0] do-not-enreg[] must-init "handle histogram profile tmp" -; V14 tmp5 [V14 ] ( 1, 1 ) ref -> [rbp-0xB8] do-not-enreg[] must-init "handle histogram profile tmp" -; V15 tmp6 [V15 ] ( 1, 1 ) int -> [rbp-0xC0] do-not-enreg[X] addr-exposed "patchpoint counter" -; V16 tmp7 [V16 ] ( 1, 1 ) ref -> [rbp-0xC8] do-not-enreg[] must-init "argument with side effect" -; V17 tmp8 [V17 ] ( 1, 1 ) ref -> [rbp-0xD0] do-not-enreg[] must-init "argument with side effect" -; V18 tmp9 [V18 ] ( 1, 1 ) ref -> [rbp-0xD8] do-not-enreg[] must-init "argument with side effect" +; V11 tmp2 [V11 ] ( 1, 1 ) ref -> [rbp-0x98] do-not-enreg[] must-init "handle histogram profile tmp" +; V12 tmp3 [V12 ] ( 1, 1 ) int -> [rbp-0xA0] do-not-enreg[X] addr-exposed "patchpoint counter" +; V13 tmp4 [V13 ] ( 1, 1 ) ref -> [rbp-0xA8] do-not-enreg[] must-init "argument with side effect" ; -; Lcl frame size = 224 +; Lcl frame size = 176 G_M57622_IG01: push rbp - sub rsp, 224 - lea rbp, [rsp+0xE0] + sub rsp, 176 + lea rbp, [rsp+0xB0] xor eax, eax - mov qword ptr [rbp-0xD8], rax + mov qword ptr [rbp-0xA8], rax vxorps xmm8, xmm8, xmm8 - vmovdqu32 zmmword ptr [rbp-0xD0], zmm8 - vmovdqu32 zmmword ptr [rbp-0x90], zmm8 + vmovdqu32 zmmword ptr [rbp-0xA0], zmm8 + vmovdqa xmmword ptr [rbp-0x60], xmm8 vmovdqa xmmword ptr [rbp-0x50], xmm8 mov qword ptr [rbp-0x40], rax mov bword ptr [rbp-0x30], rdi mov dword ptr [rbp-0x34], esi - ;; size=66 bbWeight=1 PerfScore 12.33 + ;; size=61 bbWeight=1 PerfScore 12.33 G_M57622_IG02: mov rax, bword ptr [rbp-0x30] cmp byte ptr [rax], al mov rax, bword ptr [rbp-0x30] lea rsi, bword ptr [rax+0x10] mov rdi, 0xD1FFAB1E ; :InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[long],long[]](byref,int):System.ReadOnlySpan`1[long[]] mov edx, 27 mov rax, 0xD1FFAB1E ; code for :InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[long],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] call [rax]:InlineArrayAsReadOnlySpan[System.Collections.Generic.SegmentedArrayBuilder`1+Arrays[long],System.__Canon](byref,int):System.ReadOnlySpan`1[System.__Canon] mov bword ptr [rbp-0x90], rax mov qword ptr [rbp-0x88], rdx ;; size=55 bbWeight=1 PerfScore 11.25 G_M57622_IG03: vmovdqu xmm0, xmmword ptr [rbp-0x90] vmovdqu xmmword ptr [rbp-0x48], xmm0 ;; size=13 bbWeight=1 PerfScore 4.00 G_M57622_IG04: - mov dword ptr [rbp-0xC0], 0x3E8 - mov rax, 0xD1FFAB1E ; code for System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[long]():ubyte - call [rax]System.Runtime.CompilerServices.RuntimeHelpers:IsReferenceOrContainsReferences[long]():ubyte - test eax, eax - je G_M57622_IG12 - mov eax, dword ptr [rbp-0x34] - dec eax - mov dword ptr [rbp-0x34], eax - lea rdi, [rbp-0x48] - mov ecx, dword ptr [rbp-0x34] - mov rsi, 0xD1FFAB1E ; System.ReadOnlySpan`1[long[]] - xor edx, edx - mov rax, 0xD1FFAB1E ; code for System.ReadOnlySpan`1[System.__Canon]:Slice(int,int):System.ReadOnlySpan`1[System.__Canon]:this - call [rax]System.ReadOnlySpan`1[System.__Canon]:Slice(int,int):System.ReadOnlySpan`1[System.__Canon]:this - mov bword ptr [rbp-0xA0], rax - mov qword ptr [rbp-0x98], rdx - ;; size=83 bbWeight=1 PerfScore 15.00 -G_M57622_IG05: - vmovdqu xmm0, xmmword ptr [rbp-0xA0] - vmovdqu xmmword ptr [rbp-0x60], xmm0 - ;; size=13 bbWeight=1 PerfScore 4.00 -G_M57622_IG06: - xor eax, eax - mov dword ptr [rbp-0x64], eax - jmp G_M57622_IG08 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M57622_IG07: - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov eax, dword ptr [rbp-0x58] - cmp dword ptr [rbp-0x64], eax - jae G_M57622_IG20 - mov rax, bword ptr [rbp-0x60] - mov ecx, dword ptr [rbp-0x64] - mov ecx, ecx - mov rax, gword ptr [rax+8*rcx] - mov gword ptr [rbp-0x70], rax - mov rdi, gword ptr [rbp-0x70] - mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array) - call [rax]System.Array:Clear(System.Array) - mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[long]:get_Shared():System.Buffers.ArrayPool`1[long] - call [rax]System.Buffers.ArrayPool`1[long]:get_Shared():System.Buffers.ArrayPool`1[long] - mov gword ptr [rbp-0xA8], rax - mov rdi, gword ptr [rbp-0xA8] - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xA8] - mov gword ptr [rbp-0xC8], rax - mov rdi, gword ptr [rbp-0xC8] - mov rsi, gword ptr [rbp-0x70] - xor edx, edx - mov rax, gword ptr [rbp-0xC8] - mov rax, qword ptr [rax] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.ArrayPool`1[long]:Return(long[],ubyte):this - mov eax, dword ptr [rbp-0x64] - inc eax - mov dword ptr [rbp-0x64], eax - ;; size=153 bbWeight=1 PerfScore 35.75 -G_M57622_IG08: - mov eax, dword ptr [rbp-0xC0] - dec eax - mov dword ptr [rbp-0xC0], eax - cmp dword ptr [rbp-0xC0], 0 - jg SHORT G_M57622_IG10 - ;; size=23 bbWeight=1 PerfScore 5.25 -G_M57622_IG09: - lea rdi, [rbp-0xC0] - mov esi, 75 - call CORINFO_HELP_PATCHPOINT - ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M57622_IG10: - mov eax, dword ptr [rbp-0x64] - cmp eax, dword ptr [rbp-0x58] - jl G_M57622_IG07 - mov rdi, 0xD1FFAB1E - call CORINFO_HELP_COUNTPROFILE32 - mov eax, dword ptr [rbp-0x40] - cmp dword ptr [rbp-0x34], eax - jae G_M57622_IG20 - mov rax, bword ptr [rbp-0x48] - mov ecx, dword ptr [rbp-0x34] - mov ecx, ecx - mov rax, gword ptr [rax+8*rcx] - mov gword ptr [rbp-0x50], rax - mov rax, bword ptr [rbp-0x30] - mov edx, dword ptr [rax+0x08] - mov rdi, gword ptr [rbp-0x50] - xor esi, esi - mov rax, 0xD1FFAB1E ; code for System.Array:Clear(System.Array,int,int) - call [rax]System.Array:Clear(System.Array,int,int) - mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[long]:get_Shared():System.Buffers.ArrayPool`1[long] - call [rax]System.Buffers.ArrayPool`1[long]:get_Shared():System.Buffers.ArrayPool`1[long] - mov gword ptr [rbp-0xB0], rax - mov rdi, gword ptr [rbp-0xB0] - mov rsi, 0xD1FFAB1E - call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xB0] - mov gword ptr [rbp-0xD0], rax - mov rdi, gword ptr [rbp-0xD0] - mov rsi, gword ptr [rbp-0x50] - xor edx, edx - mov rax, gword ptr [rbp-0xD0] - mov rax, qword ptr [rax] - mov rax, qword ptr [rax+0x40] - call [rax+0x28]System.Buffers.ArrayPool`1[long]:Return(long[],ubyte):this - nop - ;; size=167 bbWeight=1 PerfScore 41.00 -G_M57622_IG11: - add rsp, 224 - pop rbp - ret - ;; size=9 bbWeight=1 PerfScore 1.75 -G_M57622_IG12: + mov dword ptr [rbp-0xA0], 0x3E8 xor eax, eax mov dword ptr [rbp-0x74], eax - jmp G_M57622_IG14 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M57622_IG13: + jmp G_M57622_IG06 + ;; size=20 bbWeight=1 PerfScore 4.25 +G_M57622_IG05: mov eax, dword ptr [rbp-0x40] cmp dword ptr [rbp-0x74], eax - jae G_M57622_IG20 + jae G_M57622_IG12 mov rax, bword ptr [rbp-0x48] mov ecx, dword ptr [rbp-0x74] mov ecx, ecx mov rax, gword ptr [rax+8*rcx] mov gword ptr [rbp-0x80], rax cmp gword ptr [rbp-0x80], 0 - je G_M57622_IG19 + je G_M57622_IG11 mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 mov rax, 0xD1FFAB1E ; code for System.Buffers.ArrayPool`1[long]:get_Shared():System.Buffers.ArrayPool`1[long] call [rax]System.Buffers.ArrayPool`1[long]:get_Shared():System.Buffers.ArrayPool`1[long] - mov gword ptr [rbp-0xB8], rax - mov rdi, gword ptr [rbp-0xB8] + mov gword ptr [rbp-0x98], rax + mov rdi, gword ptr [rbp-0x98] mov rsi, 0xD1FFAB1E call CORINFO_HELP_CLASSPROFILE32 - mov rax, gword ptr [rbp-0xB8] - mov gword ptr [rbp-0xD8], rax - mov rdi, gword ptr [rbp-0xD8] + mov rax, gword ptr [rbp-0x98] + mov gword ptr [rbp-0xA8], rax + mov rdi, gword ptr [rbp-0xA8] mov rsi, gword ptr [rbp-0x80] xor edx, edx - mov rax, gword ptr [rbp-0xD8] + mov rax, gword ptr [rbp-0xA8] mov rax, qword ptr [rax] mov rax, qword ptr [rax+0x40] call [rax+0x28]System.Buffers.ArrayPool`1[long]:Return(long[],ubyte):this mov eax, dword ptr [rbp-0x74] inc eax mov dword ptr [rbp-0x74], eax ;; size=148 bbWeight=1 PerfScore 34.50 -G_M57622_IG14: - mov eax, dword ptr [rbp-0xC0] +G_M57622_IG06: + mov eax, dword ptr [rbp-0xA0] dec eax - mov dword ptr [rbp-0xC0], eax - cmp dword ptr [rbp-0xC0], 0 - jg SHORT G_M57622_IG16 + mov dword ptr [rbp-0xA0], eax + cmp dword ptr [rbp-0xA0], 0 + jg SHORT G_M57622_IG08 ;; size=23 bbWeight=1 PerfScore 5.25 -G_M57622_IG15: - lea rdi, [rbp-0xC0] +G_M57622_IG07: + lea rdi, [rbp-0xA0] mov esi, 161 call CORINFO_HELP_PATCHPOINT ;; size=17 bbWeight=0.01 PerfScore 0.02 -G_M57622_IG16: +G_M57622_IG08: mov eax, dword ptr [rbp-0x74] cmp eax, dword ptr [rbp-0x40] - jl G_M57622_IG13 + jl G_M57622_IG05 ;; size=12 bbWeight=1 PerfScore 4.00 -G_M57622_IG17: +G_M57622_IG09: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 nop ;; size=16 bbWeight=1 PerfScore 1.50 -G_M57622_IG18: - add rsp, 224 +G_M57622_IG10: + add rsp, 176 pop rbp ret ;; size=9 bbWeight=1 PerfScore 1.75 -G_M57622_IG19: +G_M57622_IG11: mov rdi, 0xD1FFAB1E call CORINFO_HELP_COUNTPROFILE32 - jmp SHORT G_M57622_IG17 + jmp SHORT G_M57622_IG09 ;; size=17 bbWeight=0.50 PerfScore 1.62 -G_M57622_IG20: +G_M57622_IG12: call CORINFO_HELP_RNGCHKFAIL int3 ;; size=6 bbWeight=0 PerfScore 0.00 -; Total bytes of code 867, prolog size 59, PerfScore 185.49, instruction count 177, allocated bytes for code 867 (MethodHash=6ffb1ee9) for method System.Collections.Generic.SegmentedArrayBuilder`1[long]:ReturnArrays(int):this (Instrumented Tier0) +; Total bytes of code 397, prolog size 54, PerfScore 80.48, instruction count 80, allocated bytes for code 397 (MethodHash=6ffb1ee9) for method System.Collections.Generic.SegmentedArrayBuilder`1[long]:ReturnArrays(int):this (Instrumented Tier0) ```

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

MihuBot commented 1 month ago

@MichalPetryka