Imported Upstream version 4.2.0.179

Former-commit-id: 4610231f55806d2a05ed69e5ff3faa7336cc1479
This commit is contained in:
Xamarin Public Jenkins
2015-08-26 07:17:56 -04:00
committed by Jo Shields
parent aa7da660d6
commit c042cd0c52
7507 changed files with 90259 additions and 657307 deletions

View File

@@ -408,10 +408,14 @@ namespace System.Runtime.InteropServices
#if !FULL_AOT_RUNTIME
public static int GetHRForException (Exception e)
{
#if FEATURE_COMINTEROP
var errorInfo = new ManagedErrorInfo(e);
SetErrorInfo (0, errorInfo);
return e.hresult;
#else
return -1;
#endif
}
[MonoTODO]
@@ -788,7 +792,7 @@ namespace System.Runtime.InteropServices
return *(short*)addr;
short s;
String.memcpy ((byte*)&s, (byte*)ptr, 2);
Buffer.Memcpy ((byte*)&s, (byte*)ptr, 2);
return s;
}
@@ -800,7 +804,7 @@ namespace System.Runtime.InteropServices
return *(short*)addr;
short s;
String.memcpy ((byte*)&s, addr, 2);
Buffer.Memcpy ((byte*)&s, addr, 2);
return s;
}
@@ -820,7 +824,7 @@ namespace System.Runtime.InteropServices
return *(int*)addr;
int s;
String.memcpy ((byte*)&s, addr, 4);
Buffer.Memcpy ((byte*)&s, addr, 4);
return s;
}
@@ -833,7 +837,7 @@ namespace System.Runtime.InteropServices
return *(int*)addr;
else {
int s;
String.memcpy ((byte*)&s, addr, 4);
Buffer.Memcpy ((byte*)&s, addr, 4);
return s;
}
}
@@ -857,7 +861,7 @@ namespace System.Runtime.InteropServices
return *(long*)ptr;
long s;
String.memcpy ((byte*)&s, addr, 8);
Buffer.Memcpy ((byte*)&s, addr, 8);
return s;
}
@@ -869,7 +873,7 @@ namespace System.Runtime.InteropServices
return *(long*)addr;
long s;
String.memcpy ((byte*)&s, addr, 8);
Buffer.Memcpy ((byte*)&s, addr, 8);
return s;
}
@@ -975,6 +979,21 @@ namespace System.Runtime.InteropServices
return SizeOf (structure.GetType ());
}
internal static uint SizeOfType (Type type)
{
return (uint) SizeOf (type);
}
internal static uint AlignedSizeOf<T> () where T : struct
{
uint size = SizeOfType (typeof (T));
if (size == 1 || size == 2)
return size;
if (IntPtr.Size == 8 && size == 4)
return size;
return (size + 3) & (~((uint)3));
}
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static IntPtr StringToBSTR (string s);
@@ -1171,7 +1190,7 @@ namespace System.Runtime.InteropServices
if (((uint)addr & 1) == 0)
*(short*)addr = val;
else
String.memcpy (addr, (byte*)&val, 2);
Buffer.Memcpy (addr, (byte*)&val, 2);
}
public static unsafe void WriteInt16 (IntPtr ptr, int ofs, short val)
@@ -1181,7 +1200,7 @@ namespace System.Runtime.InteropServices
if (((uint)addr & 1) == 0)
*(short*)addr = val;
else {
String.memcpy (addr, (byte*)&val, 2);
Buffer.Memcpy (addr, (byte*)&val, 2);
}
}
@@ -1215,7 +1234,7 @@ namespace System.Runtime.InteropServices
if (((uint)addr & 3) == 0)
*(int*)addr = val;
else {
String.memcpy (addr, (byte*)&val, 4);
Buffer.Memcpy (addr, (byte*)&val, 4);
}
}
@@ -1226,7 +1245,7 @@ namespace System.Runtime.InteropServices
if (((uint)addr & 3) == 0)
*(int*)addr = val;
else {
String.memcpy (addr, (byte*)&val, 4);
Buffer.Memcpy (addr, (byte*)&val, 4);
}
}
@@ -1246,7 +1265,7 @@ namespace System.Runtime.InteropServices
if (((uint)addr & 7) == 0)
*(long*)addr = val;
else
String.memcpy (addr, (byte*)&val, 8);
Buffer.Memcpy (addr, (byte*)&val, 8);
}
public static unsafe void WriteInt64 (IntPtr ptr, int ofs, long val)
@@ -1258,7 +1277,7 @@ namespace System.Runtime.InteropServices
if (((uint)addr & 7) == 0)
*(long*)addr = val;
else
String.memcpy (addr, (byte*)&val, 8);
Buffer.Memcpy (addr, (byte*)&val, 8);
}
[MonoTODO]
@@ -1503,6 +1522,7 @@ namespace System.Runtime.InteropServices
return null;
}
#if FEATURE_COMINTEROP
[DllImport ("oleaut32.dll", CharSet=CharSet.Unicode, EntryPoint = "SetErrorInfo")]
static extern int _SetErrorInfo (int dwReserved,
[MarshalAs(UnmanagedType.Interface)] IErrorInfo pIErrorInfo);
@@ -1551,7 +1571,7 @@ namespace System.Runtime.InteropServices
}
return retVal;
}
#endif
public static Exception GetExceptionForHR (int errorCode)
{
return GetExceptionForHR (errorCode, IntPtr.Zero);
@@ -1559,7 +1579,7 @@ namespace System.Runtime.InteropServices
public static Exception GetExceptionForHR (int errorCode, IntPtr errorInfo)
{
#if !MOBILE
#if FEATURE_COMINTEROP
IErrorInfo info = null;
if (errorInfo != (IntPtr)(-1)) {
if (errorInfo == IntPtr.Zero) {