Imported Upstream version 4.3.2.467

Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
Xamarin Public Jenkins
2016-02-22 11:00:01 -05:00
parent f302175246
commit f3e3aab35a
4097 changed files with 122406 additions and 82300 deletions

View File

@@ -64,6 +64,44 @@ namespace System
}
}
[CLSCompliantAttribute (false)]
public static unsafe void MemoryCopy (void* source, void* destination, long destinationSizeInBytes, long sourceBytesToCopy)
{
if (sourceBytesToCopy > destinationSizeInBytes) {
ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.sourceBytesToCopy);
}
var src = (byte*)source;
var dst = (byte*)destination;
while (sourceBytesToCopy > int.MaxValue) {
Memcpy (dst, src, int.MaxValue);
sourceBytesToCopy -= int.MaxValue;
src += int.MaxValue;
dst += int.MaxValue;
}
memcpy1 (dst, src, (int) sourceBytesToCopy);
}
[CLSCompliantAttribute (false)]
public static unsafe void MemoryCopy (void* source, void* destination, ulong destinationSizeInBytes, ulong sourceBytesToCopy)
{
if (sourceBytesToCopy > destinationSizeInBytes) {
ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.sourceBytesToCopy);
}
var src = (byte*)source;
var dst = (byte*)destination;
while (sourceBytesToCopy > int.MaxValue) {
Memcpy (dst, src, int.MaxValue);
sourceBytesToCopy -= int.MaxValue;
src += int.MaxValue;
dst += int.MaxValue;
}
Memcpy (dst, src, (int) sourceBytesToCopy);
}
internal static unsafe void memcpy4 (byte *dest, byte *src, int size) {
/*while (size >= 32) {
// using long is better than int and slower than double