Imported Upstream version 6.4.0.137

Former-commit-id: 943baa9f16a098c33e129777827f3a9d20da00d6
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2019-07-26 19:53:28 +00:00
parent e9207cf623
commit ef583813eb
2712 changed files with 74169 additions and 40587 deletions

View File

@ -195,5 +195,25 @@ namespace System.Runtime.CompilerServices
return FormatterServices.GetUninitializedObject (type);
}
#endif
/// <summary>
/// GetSubArray helper method for the compiler to slice an array using a range.
/// </summary>
public static T[] GetSubArray<T> (T[] array, Range range)
{
Type elementType = array.GetType ().GetElementType ();
Span<T> source = array.AsSpan (range);
if (elementType.IsValueType)
{
return source.ToArray ();
}
else
{
T[] newArray = (T[]) Array.CreateInstance (elementType, source.Length);
source.CopyTo (newArray);
return newArray;
}
}
}
}