Skip to content

Commit 096a5e3

Browse files
[Mono] Restore old code to solve the recent SpanHelpers regressions (#75917)
* bring back the old code... * bring back more old code * Use an ifdef around clr code instead of a separate file * Delete SpanHelpers.Clr.cs * Remove a remaining INumber<T> helper from mono Co-authored-by: Jeff Handley <[email protected]>
1 parent eb4025c commit 096a5e3

2 files changed

Lines changed: 3 additions & 0 deletions

File tree

src/libraries/System.Private.CoreLib/src/System/MemoryExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1617,6 +1617,7 @@ ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(span)),
16171617
Unsafe.Add(ref valueRef, 2),
16181618
span.Length);
16191619

1620+
#if !MONO // We don't have a mono overload for 4 values
16201621
case 4:
16211622
return SpanHelpers.LastIndexOfAnyValueType(
16221623
ref spanRef,
@@ -1625,6 +1626,7 @@ ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(span)),
16251626
Unsafe.Add(ref valueRef, 2),
16261627
Unsafe.Add(ref valueRef, 3),
16271628
span.Length);
1629+
#endif
16281630

16291631
default:
16301632
return LastIndexOfAnyProbabilistic(ref Unsafe.As<short, char>(ref spanRef), span.Length, ref Unsafe.As<short, char>(ref valueRef), values.Length);

src/libraries/System.Private.CoreLib/src/System/SpanHelpers.T.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2504,6 +2504,7 @@ private static int LastIndexOfAnyValueType<TValue, TNegator>(ref TValue searchSp
25042504
return -1;
25052505
}
25062506

2507+
#if !MONO
25072508
[MethodImpl(MethodImplOptions.AggressiveInlining)]
25082509
internal static int LastIndexOfAnyValueType<T>(ref T searchSpace, T value0, T value1, T value2, T value3, int length) where T : struct, INumber<T>
25092510
=> LastIndexOfAnyValueType<T, DontNegate<T>>(ref searchSpace, value0, value1, value2, value3, length);

0 commit comments

Comments
 (0)