From a272954f5c88544467112d944f662ef81b3d7487 Mon Sep 17 00:00:00 2001 From: xtqqczze <45661989+xtqqczze@users.noreply.github.com> Date: Mon, 23 Jan 2023 02:02:15 +0000 Subject: [PATCH] Eliminate `ToArray` bounds checks (#81001) * Remove `RangeIterator.ToArray` bounds check https://github.com/dotnet/runtime/pull/80633#discussion_r1082720454 * Eliminate additional `ToArray` bounds checks --- .../System.Linq/src/System/Linq/OrderedEnumerable.SpeedOpt.cs | 2 +- src/libraries/System.Linq/src/System/Linq/Partition.SpeedOpt.cs | 2 +- src/libraries/System.Linq/src/System/Linq/Range.SpeedOpt.cs | 2 +- src/libraries/System.Linq/src/System/Linq/Select.SpeedOpt.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Linq/src/System/Linq/OrderedEnumerable.SpeedOpt.cs b/src/libraries/System.Linq/src/System/Linq/OrderedEnumerable.SpeedOpt.cs index 6ea4b069a1e9a..c8861e176f03b 100644 --- a/src/libraries/System.Linq/src/System/Linq/OrderedEnumerable.SpeedOpt.cs +++ b/src/libraries/System.Linq/src/System/Linq/OrderedEnumerable.SpeedOpt.cs @@ -21,7 +21,7 @@ public virtual TElement[] ToArray() TElement[] array = new TElement[count]; int[] map = SortedMap(buffer); - for (int i = 0; i != array.Length; i++) + for (int i = 0; i < array.Length; i++) { array[i] = buffer._items[map[i]]; } diff --git a/src/libraries/System.Linq/src/System/Linq/Partition.SpeedOpt.cs b/src/libraries/System.Linq/src/System/Linq/Partition.SpeedOpt.cs index c46465f82547b..8555fa1582d29 100644 --- a/src/libraries/System.Linq/src/System/Linq/Partition.SpeedOpt.cs +++ b/src/libraries/System.Linq/src/System/Linq/Partition.SpeedOpt.cs @@ -254,7 +254,7 @@ public TSource[] ToArray() } TSource[] array = new TSource[count]; - for (int i = 0, curIdx = _minIndexInclusive; i != array.Length; ++i, ++curIdx) + for (int i = 0, curIdx = _minIndexInclusive; i < array.Length; ++i, ++curIdx) { array[i] = _source[curIdx]; } diff --git a/src/libraries/System.Linq/src/System/Linq/Range.SpeedOpt.cs b/src/libraries/System.Linq/src/System/Linq/Range.SpeedOpt.cs index dba2dbb7ec39e..6704eef5dedc2 100644 --- a/src/libraries/System.Linq/src/System/Linq/Range.SpeedOpt.cs +++ b/src/libraries/System.Linq/src/System/Linq/Range.SpeedOpt.cs @@ -18,7 +18,7 @@ public int[] ToArray() { int[] array = new int[_end - _start]; int cur = _start; - for (int i = 0; i != array.Length; ++i) + for (int i = 0; i < array.Length; ++i) { array[i] = cur; ++cur; diff --git a/src/libraries/System.Linq/src/System/Linq/Select.SpeedOpt.cs b/src/libraries/System.Linq/src/System/Linq/Select.SpeedOpt.cs index 8ca02c76b08df..76ee67b2dcbdb 100644 --- a/src/libraries/System.Linq/src/System/Linq/Select.SpeedOpt.cs +++ b/src/libraries/System.Linq/src/System/Linq/Select.SpeedOpt.cs @@ -789,7 +789,7 @@ public TResult[] ToArray() } TResult[] array = new TResult[count]; - for (int i = 0, curIdx = _minIndexInclusive; i != array.Length; ++i, ++curIdx) + for (int i = 0, curIdx = _minIndexInclusive; i < array.Length; ++i, ++curIdx) { array[i] = _selector(_source[curIdx]); }