summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/System.Private.CoreLib/src/System/Diagnostics/Eventing/FrameworkEventSource.cs11
-rw-r--r--src/System.Private.CoreLib/src/System/Runtime/CompilerServices/jithelpers.cs60
-rw-r--r--src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIPropertyValueImpl.cs4
-rw-r--r--src/System.Private.CoreLib/src/System/Threading/Tasks/TPLETWProvider.cs7
-rw-r--r--src/vm/array.cpp22
-rw-r--r--src/vm/ecalllist.h3
-rw-r--r--src/vm/ilmarshalers.cpp4
-rw-r--r--src/vm/jitinterface.cpp23
-rw-r--r--src/vm/mscorlib.h12
-rw-r--r--src/vm/prestub.cpp6
-rw-r--r--src/vm/reflectioninvocation.cpp9
-rw-r--r--src/vm/reflectioninvocation.h3
12 files changed, 51 insertions, 113 deletions
diff --git a/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/FrameworkEventSource.cs b/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/FrameworkEventSource.cs
index dda0a02a56..323cae2ac9 100644
--- a/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/FrameworkEventSource.cs
+++ b/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/FrameworkEventSource.cs
@@ -15,6 +15,7 @@ using System.Globalization;
using System.Reflection;
using System.Text;
using System.Runtime.CompilerServices;
+using Internal.Runtime.CompilerServices;
namespace System.Diagnostics.Tracing
{
@@ -572,7 +573,7 @@ namespace System.Diagnostics.Tracing
public unsafe void ThreadPoolEnqueueWorkObject(object workID)
{
// convert the Object Id to a long
- ThreadPoolEnqueueWork((long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref workID)));
+ ThreadPoolEnqueueWork((long)*((void**)Unsafe.AsPointer(ref workID)));
}
[Event(31, Level = EventLevel.Verbose, Keywords = Keywords.ThreadPool | Keywords.ThreadTransfer)]
@@ -588,7 +589,7 @@ namespace System.Diagnostics.Tracing
public unsafe void ThreadPoolDequeueWorkObject(object workID)
{
// convert the Object Id to a long
- ThreadPoolDequeueWork((long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref workID)));
+ ThreadPoolDequeueWork((long)*((void**)Unsafe.AsPointer(ref workID)));
}
// In the desktop runtime they don't use Tasks for the point at which the response happens, which means that the
@@ -686,7 +687,7 @@ namespace System.Diagnostics.Tracing
#endif // !CORECLR
public unsafe void ThreadTransferSendObj(object id, int kind, string info, bool multiDequeues, int intInfo1, int intInfo2)
{
- ThreadTransferSend((long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref id)), kind, info, multiDequeues, intInfo1, intInfo2);
+ ThreadTransferSend((long)*((void**)Unsafe.AsPointer(ref id)), kind, info, multiDequeues, intInfo1, intInfo2);
}
// id - represents a correlation ID that allows correlation of two activities, one stamped by
@@ -711,7 +712,7 @@ namespace System.Diagnostics.Tracing
#endif // !CORECLR
public unsafe void ThreadTransferReceiveObj(object id, int kind, string info)
{
- ThreadTransferReceive((long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref id)), kind, info);
+ ThreadTransferReceive((long)*((void**)Unsafe.AsPointer(ref id)), kind, info);
}
// id - represents a correlation ID that allows correlation of two activities, one stamped by
@@ -736,7 +737,7 @@ namespace System.Diagnostics.Tracing
#endif // !CORECLR
public unsafe void ThreadTransferReceiveHandledObj(object id, int kind, string info)
{
- ThreadTransferReceive((long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref id)), kind, info);
+ ThreadTransferReceive((long)*((void**)Unsafe.AsPointer(ref id)), kind, info);
}
// return a stable ID for a an object. We use the hash code which is not truely unique but is
diff --git a/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/jithelpers.cs b/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/jithelpers.cs
index 1c009706c7..f765e18c45 100644
--- a/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/jithelpers.cs
+++ b/src/System.Private.CoreLib/src/System/Runtime/CompilerServices/jithelpers.cs
@@ -48,18 +48,18 @@ namespace System.Runtime.CompilerServices
// Helper class to assist with unsafe pinning of arbitrary objects.
// It's used by VM code.
- internal class PinningHelper
+ internal class RawData
{
- public byte m_data;
+ public byte Data;
}
- internal class ArrayPinningHelper
+ internal class RawSzArrayData
{
- public IntPtr m_lengthAndPadding;
- public byte m_arrayData;
+ public IntPtr Count; // Array._numComponents padded to IntPtr
+ public byte Data;
}
- internal static class JitHelpers
+ internal static unsafe class JitHelpers
{
// The special dll name to be used for DllImport of QCalls
internal const string QCall = "QCall";
@@ -68,21 +68,21 @@ namespace System.Runtime.CompilerServices
// s has to be a local variable on the stack.
internal static StringHandleOnStack GetStringHandleOnStack(ref string s)
{
- return new StringHandleOnStack(UnsafeCastToStackPointer(ref s));
+ return new StringHandleOnStack((IntPtr)Unsafe.AsPointer(ref s));
}
// Wraps object variable into a handle. Used to pass managed object references in and out of QCalls.
// o has to be a local variable on the stack.
internal static ObjectHandleOnStack GetObjectHandleOnStack<T>(ref T o) where T : class
{
- return new ObjectHandleOnStack(UnsafeCastToStackPointer(ref o));
+ return new ObjectHandleOnStack((IntPtr)Unsafe.AsPointer(ref o));
}
// Wraps StackCrawlMark into a handle. Used to pass StackCrawlMark to QCalls.
// stackMark has to be a local variable on the stack.
internal static StackCrawlMarkHandle GetStackCrawlMarkHandle(ref StackCrawlMark stackMark)
{
- return new StackCrawlMarkHandle(UnsafeCastToStackPointer(ref stackMark));
+ return new StackCrawlMarkHandle((IntPtr)Unsafe.AsPointer(ref stackMark));
}
#if DEBUG
@@ -121,22 +121,6 @@ namespace System.Runtime.CompilerServices
// See getILIntrinsicImplementation for how this happens.
throw new InvalidOperationException();
}
-
- // Internal method for getting a raw pointer for handles in JitHelpers.
- // The reference has to point into a local stack variable in order so it can not be moved by the GC.
- internal static IntPtr UnsafeCastToStackPointer<T>(ref T val)
- {
- IntPtr p = UnsafeCastToStackPointerInternal<T>(ref val);
- Debug.Assert(IsAddressInStack(p), "Pointer not in the stack!");
- return p;
- }
-
- private static IntPtr UnsafeCastToStackPointerInternal<T>(ref T val)
- {
- // The body of this function will be replaced by the EE with unsafe code that just returns val!!!
- // See getILIntrinsicImplementation for how this happens.
- throw new InvalidOperationException();
- }
#else // DEBUG
internal static int UnsafeEnumCast<T>(T val) where T : struct // Actually T must be 4 byte (or less) enum
@@ -152,13 +136,6 @@ namespace System.Runtime.CompilerServices
// See getILIntrinsicImplementation for how this happens.
throw new InvalidOperationException();
}
-
- internal static IntPtr UnsafeCastToStackPointer<T>(ref T val)
- {
- // The body of this function will be replaced by the EE with unsafe code that just returns o!!!
- // See getILIntrinsicImplementation for how this happens.
- throw new InvalidOperationException();
- }
#endif // DEBUG
// Set the given element in the array without any type or range checks
@@ -168,22 +145,7 @@ namespace System.Runtime.CompilerServices
internal static ref byte GetRawData(this object obj) =>
ref Unsafe.As<RawData>(obj).Data;
- private sealed class RawData
- {
- public byte Data;
- }
-
-#if DEBUG
- [MethodImplAttribute(MethodImplOptions.InternalCall)]
- private static extern bool IsAddressInStack(IntPtr ptr);
-#endif
-
- internal static ref byte GetRawSzArrayData(this Array array)
- {
- // The body of this function will be replaced by the EE with unsafe code!!!
- // See getILIntrinsicImplementation for how this happens.
- typeof(ArrayPinningHelper).ToString(); // Type used by the actual method body
- throw new InvalidOperationException();
- }
+ internal static ref byte GetRawSzArrayData(this Array array) =>
+ ref Unsafe.As<RawSzArrayData>(array).Data;
}
}
diff --git a/src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIPropertyValueImpl.cs b/src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIPropertyValueImpl.cs
index 57de152c21..972b28977d 100644
--- a/src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIPropertyValueImpl.cs
+++ b/src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIPropertyValueImpl.cs
@@ -9,6 +9,8 @@ using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Security;
+using Internal.Runtime.CompilerServices;
+
namespace System.Runtime.InteropServices.WindowsRuntime
{
internal class CLRIPropertyValueImpl : IPropertyValue
@@ -492,7 +494,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
fixed (byte* pData = &_data.GetRawData())
{
- byte* pUnboxed = (byte*)JitHelpers.UnsafeCastToStackPointer(ref unboxed);
+ byte* pUnboxed = (byte*)Unsafe.AsPointer(ref unboxed);
Buffer.Memcpy(pUnboxed, pData, Marshal.SizeOf(unboxed));
}
diff --git a/src/System.Private.CoreLib/src/System/Threading/Tasks/TPLETWProvider.cs b/src/System.Private.CoreLib/src/System/Threading/Tasks/TPLETWProvider.cs
index 93931f5d7f..401ae40a47 100644
--- a/src/System.Private.CoreLib/src/System/Threading/Tasks/TPLETWProvider.cs
+++ b/src/System.Private.CoreLib/src/System/Threading/Tasks/TPLETWProvider.cs
@@ -15,9 +15,10 @@ using System.Collections.Generic;
using System.Text;
using System.Security;
using System.Runtime.CompilerServices;
-
using System.Diagnostics.Tracing;
+using Internal.Runtime.CompilerServices;
+
namespace System.Threading.Tasks
{
/// <summary>Provides an event source for tracing TPL information.</summary>
@@ -514,7 +515,7 @@ namespace System.Threading.Tasks
}
[NonEvent]
- public unsafe void RunningContinuation(int TaskID, object Object) { RunningContinuation(TaskID, (long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref Object))); }
+ public unsafe void RunningContinuation(int TaskID, object Object) { RunningContinuation(TaskID, (long)*((void**)Unsafe.AsPointer(ref Object))); }
[Event(20, Keywords = Keywords.Debug)]
private void RunningContinuation(int TaskID, long Object)
{
@@ -523,7 +524,7 @@ namespace System.Threading.Tasks
}
[NonEvent]
- public unsafe void RunningContinuationList(int TaskID, int Index, object Object) { RunningContinuationList(TaskID, Index, (long)*((void**)JitHelpers.UnsafeCastToStackPointer(ref Object))); }
+ public unsafe void RunningContinuationList(int TaskID, int Index, object Object) { RunningContinuationList(TaskID, Index, (long)*((void**)Unsafe.AsPointer(ref Object))); }
[Event(21, Keywords = Keywords.Debug)]
public void RunningContinuationList(int TaskID, int Index, long Object)
diff --git a/src/vm/array.cpp b/src/vm/array.cpp
index 1a4a940c42..cde360c562 100644
--- a/src/vm/array.cpp
+++ b/src/vm/array.cpp
@@ -781,7 +781,7 @@ public:
DWORD dwFactorLocalNum = NewLocal(ELEMENT_TYPE_I4);
DWORD dwLengthLocalNum = NewLocal(ELEMENT_TYPE_I4);
- mdToken tokPinningHelper = GetToken(MscorlibBinder::GetField(FIELD__PINNING_HELPER__M_DATA));
+ mdToken tokRawData = GetToken(MscorlibBinder::GetField(FIELD__RAW_DATA__DATA));
ILCodeLabel * pRangeExceptionLabel = NewCodeLabel();
ILCodeLabel * pRangeExceptionLabel1 = NewCodeLabel();
@@ -817,13 +817,13 @@ public:
m_pCode->EmitBRFALSE(pTypeCheckOK); //Storing NULL is OK
m_pCode->EmitLDARG(rank); // return param
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(Object::GetOffsetOfFirstField());
m_pCode->EmitSUB();
m_pCode->EmitLDIND_I(); // TypeHandle
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(Object::GetOffsetOfFirstField());
m_pCode->EmitSUB();
m_pCode->EmitLDIND_I(); // Array MT
@@ -851,13 +851,13 @@ public:
m_pCode->EmitLDARG(hiddenArgIdx); // hidden param
m_pCode->EmitBRFALSE(pTypeCheckPassed);
m_pCode->EmitLDARG(hiddenArgIdx);
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(offsetof(ParamTypeDesc, m_Arg) - (Object::GetOffsetOfFirstField()+2));
m_pCode->EmitADD();
m_pCode->EmitLDIND_I();
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(Object::GetOffsetOfFirstField());
m_pCode->EmitSUB();
m_pCode->EmitLDIND_I(); // Array MT
@@ -875,7 +875,7 @@ public:
{
// check if the array is SZArray.
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(Object::GetOffsetOfFirstField());
m_pCode->EmitSUB();
m_pCode->EmitLDIND_I();
@@ -889,7 +889,7 @@ public:
// it is SZArray
// bounds check
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(ArrayBase::GetOffsetOfNumComponents() - Object::GetOffsetOfFirstField());
m_pCode->EmitADD();
m_pCode->EmitLDIND_I4();
@@ -897,7 +897,7 @@ public:
m_pCode->EmitBLE_UN(pRangeExceptionLabel);
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(ArrayBase::GetBoundsOffset(pMT) - Object::GetOffsetOfFirstField());
m_pCode->EmitADD();
m_pCode->EmitLDARG(firstIdx);
@@ -909,7 +909,7 @@ public:
{
// Cache length
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC((ArrayBase::GetBoundsOffset(pMT) - Object::GetOffsetOfFirstField()) + (idx-firstIdx)*sizeof(DWORD));
m_pCode->EmitADD();
m_pCode->EmitLDIND_I4();
@@ -922,7 +922,7 @@ public:
{
// Load lower bound
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC((ArrayBase::GetLowerBoundsOffset(pMT) - Object::GetOffsetOfFirstField()) + (idx-firstIdx)*sizeof(DWORD));
m_pCode->EmitADD();
m_pCode->EmitLDIND_I4();
@@ -961,7 +961,7 @@ public:
// Compute element address
m_pCode->EmitLoadThis();
- m_pCode->EmitLDFLDA(tokPinningHelper);
+ m_pCode->EmitLDFLDA(tokRawData);
m_pCode->EmitLDC(ArrayBase::GetDataPtrOffset(pMT) - Object::GetOffsetOfFirstField());
m_pCode->EmitADD();
m_pCode->EmitLDLOC(dwTotalLocalNum);
diff --git a/src/vm/ecalllist.h b/src/vm/ecalllist.h
index 492bd95a31..c8244a69e8 100644
--- a/src/vm/ecalllist.h
+++ b/src/vm/ecalllist.h
@@ -222,9 +222,6 @@ FCFuncEnd()
FCFuncStart(gJitHelpers)
FCFuncElement("UnsafeSetArrayElement", JitHelpers::UnsafeSetArrayElement)
-#ifdef _DEBUG
- FCFuncElement("IsAddressInStack", ReflectionInvocation::IsAddressInStack)
-#endif
FCFuncEnd()
FCFuncStart(gCOMTypeHandleFuncs)
diff --git a/src/vm/ilmarshalers.cpp b/src/vm/ilmarshalers.cpp
index 58319d85e4..71fd1e7196 100644
--- a/src/vm/ilmarshalers.cpp
+++ b/src/vm/ilmarshalers.cpp
@@ -2448,7 +2448,7 @@ void ILBlittablePtrMarshaler::EmitConvertContentsCLRToNative(ILCodeStream* pslIL
ILCodeLabel* pNullRefLabel = pslILEmit->NewCodeLabel();
UINT uNativeSize = m_pargs->m_pMT->GetNativeSize();
- int fieldDef = pslILEmit->GetToken(MscorlibBinder::GetField(FIELD__PINNING_HELPER__M_DATA));
+ int fieldDef = pslILEmit->GetToken(MscorlibBinder::GetField(FIELD__RAW_DATA__DATA));
EmitLoadNativeValue(pslILEmit);
pslILEmit->EmitBRFALSE(pNullRefLabel);
@@ -2470,7 +2470,7 @@ void ILBlittablePtrMarshaler::EmitConvertContentsNativeToCLR(ILCodeStream* pslIL
ILCodeLabel* pNullRefLabel = pslILEmit->NewCodeLabel();
UINT uNativeSize = m_pargs->m_pMT->GetNativeSize();
- int fieldDef = pslILEmit->GetToken(MscorlibBinder::GetField(FIELD__PINNING_HELPER__M_DATA));
+ int fieldDef = pslILEmit->GetToken(MscorlibBinder::GetField(FIELD__RAW_DATA__DATA));
EmitLoadManagedValue(pslILEmit);
pslILEmit->EmitBRFALSE(pNullRefLabel);
diff --git a/src/vm/jitinterface.cpp b/src/vm/jitinterface.cpp
index 7fcdd62d05..2d87c276c8 100644
--- a/src/vm/jitinterface.cpp
+++ b/src/vm/jitinterface.cpp
@@ -6973,18 +6973,7 @@ bool getILIntrinsicImplementation(MethodDesc * ftn,
// Compare tokens to cover all generic instantiations
// The body of the first method is simply ret Arg0. The second one first casts the arg to I4.
- if (tk == MscorlibBinder::GetMethod(METHOD__JIT_HELPERS__UNSAFE_CAST_TO_STACKPTR)->GetMemberDef())
- {
- // Return the argument that was passed in converted to IntPtr
- static const BYTE ilcode[] = { CEE_LDARG_0, CEE_CONV_I, CEE_RET };
- methInfo->ILCode = const_cast<BYTE*>(ilcode);
- methInfo->ILCodeSize = sizeof(ilcode);
- methInfo->maxStack = 1;
- methInfo->EHcount = 0;
- methInfo->options = (CorInfoOptions)0;
- return true;
- }
- else if (tk == MscorlibBinder::GetMethod(METHOD__JIT_HELPERS__UNSAFE_ENUM_CAST)->GetMemberDef())
+ if (tk == MscorlibBinder::GetMethod(METHOD__JIT_HELPERS__UNSAFE_ENUM_CAST)->GetMemberDef())
{
// Normally we would follow the above pattern and unconditionally replace the IL,
// relying on generic type constraints to guarantee that it will only ever be instantiated
@@ -7048,16 +7037,16 @@ bool getILIntrinsicImplementation(MethodDesc * ftn,
}
else if (tk == MscorlibBinder::GetMethod(METHOD__JIT_HELPERS__GET_RAW_SZ_ARRAY_DATA)->GetMemberDef())
{
- mdToken tokArrayPinningHelper = MscorlibBinder::GetField(FIELD__ARRAY_PINNING_HELPER__M_ARRAY_DATA)->GetMemberDef();
+ mdToken tokRawSzArrayData = MscorlibBinder::GetField(FIELD__RAW_SZARRAY_DATA__DATA)->GetMemberDef();
static BYTE ilcode[] = { CEE_LDARG_0,
CEE_LDFLDA,0,0,0,0,
CEE_RET };
- ilcode[2] = (BYTE)(tokArrayPinningHelper);
- ilcode[3] = (BYTE)(tokArrayPinningHelper >> 8);
- ilcode[4] = (BYTE)(tokArrayPinningHelper >> 16);
- ilcode[5] = (BYTE)(tokArrayPinningHelper >> 24);
+ ilcode[2] = (BYTE)(tokRawSzArrayData);
+ ilcode[3] = (BYTE)(tokRawSzArrayData >> 8);
+ ilcode[4] = (BYTE)(tokRawSzArrayData >> 16);
+ ilcode[5] = (BYTE)(tokRawSzArrayData >> 24);
methInfo->ILCode = const_cast<BYTE*>(ilcode);
methInfo->ILCodeSize = sizeof(ilcode);
diff --git a/src/vm/mscorlib.h b/src/vm/mscorlib.h
index f257ecd2f3..48f3a5e580 100644
--- a/src/vm/mscorlib.h
+++ b/src/vm/mscorlib.h
@@ -682,11 +682,9 @@ DEFINE_CLASS(JIT_HELPERS, CompilerServices, JitHelpers)
#ifdef _DEBUG
DEFINE_METHOD(JIT_HELPERS, UNSAFE_ENUM_CAST, UnsafeEnumCastInternal, NoSig)
DEFINE_METHOD(JIT_HELPERS, UNSAFE_ENUM_CAST_LONG, UnsafeEnumCastLongInternal, NoSig)
-DEFINE_METHOD(JIT_HELPERS, UNSAFE_CAST_TO_STACKPTR,UnsafeCastToStackPointerInternal, NoSig)
#else // _DEBUG
DEFINE_METHOD(JIT_HELPERS, UNSAFE_ENUM_CAST, UnsafeEnumCast, NoSig)
DEFINE_METHOD(JIT_HELPERS, UNSAFE_ENUM_CAST_LONG, UnsafeEnumCastLong, NoSig)
-DEFINE_METHOD(JIT_HELPERS, UNSAFE_CAST_TO_STACKPTR,UnsafeCastToStackPointer, NoSig)
#endif // _DEBUG
DEFINE_METHOD(JIT_HELPERS, GET_RAW_SZ_ARRAY_DATA, GetRawSzArrayData, NoSig)
@@ -715,12 +713,12 @@ DEFINE_CLASS(INTERLOCKED, Threading, Interlocked)
DEFINE_METHOD(INTERLOCKED, COMPARE_EXCHANGE_T, CompareExchange, GM_RefT_T_T_RetT)
DEFINE_METHOD(INTERLOCKED, COMPARE_EXCHANGE_OBJECT,CompareExchange, SM_RefObject_Object_Object_RetObject)
-DEFINE_CLASS(PINNING_HELPER, CompilerServices, PinningHelper)
-DEFINE_FIELD(PINNING_HELPER, M_DATA, m_data)
+DEFINE_CLASS(RAW_DATA, CompilerServices, RawData)
+DEFINE_FIELD(RAW_DATA, DATA, Data)
-DEFINE_CLASS(ARRAY_PINNING_HELPER, CompilerServices, ArrayPinningHelper)
-DEFINE_FIELD(ARRAY_PINNING_HELPER, M_ARRAY_DATA, m_arrayData)
-DEFINE_FIELD(ARRAY_PINNING_HELPER, M_ARRAY_LENGTH_AND_PADDING, m_lengthAndPadding)
+DEFINE_CLASS(RAW_SZARRAY_DATA, CompilerServices, RawSzArrayData)
+DEFINE_FIELD(RAW_SZARRAY_DATA, COUNT, Count)
+DEFINE_FIELD(RAW_SZARRAY_DATA, DATA, Data)
DEFINE_CLASS(RUNTIME_WRAPPED_EXCEPTION, CompilerServices, RuntimeWrappedException)
DEFINE_METHOD(RUNTIME_WRAPPED_EXCEPTION, OBJ_CTOR, .ctor, IM_Obj_RetVoid)
diff --git a/src/vm/prestub.cpp b/src/vm/prestub.cpp
index c7124c6d98..0565c178b2 100644
--- a/src/vm/prestub.cpp
+++ b/src/vm/prestub.cpp
@@ -1206,13 +1206,13 @@ Stub * CreateUnboxingILStubForSharedGenericValueTypeMethods(MethodDesc* pTargetM
CreateInstantiatingILStubTargetSig(pTargetMD, typeContext, &stubSigBuilder);
// 2. Emit the method body
- mdToken tokPinningHelper = pCode->GetToken(MscorlibBinder::GetField(FIELD__PINNING_HELPER__M_DATA));
+ mdToken tokRawData = pCode->GetToken(MscorlibBinder::GetField(FIELD__RAW_DATA__DATA));
// 2.1 Push the thisptr
// We need to skip over the MethodTable*
// The trick below will do that.
pCode->EmitLoadThis();
- pCode->EmitLDFLDA(tokPinningHelper);
+ pCode->EmitLDFLDA(tokRawData);
#if defined(_TARGET_X86_)
// 2.2 Push the rest of the arguments for x86
@@ -1225,7 +1225,7 @@ Stub * CreateUnboxingILStubForSharedGenericValueTypeMethods(MethodDesc* pTargetM
// 2.3 Push the hidden context param
// The context is going to be captured from the thisptr
pCode->EmitLoadThis();
- pCode->EmitLDFLDA(tokPinningHelper);
+ pCode->EmitLDFLDA(tokRawData);
pCode->EmitLDC(Object::GetOffsetOfFirstField());
pCode->EmitSUB();
pCode->EmitLDIND_I();
diff --git a/src/vm/reflectioninvocation.cpp b/src/vm/reflectioninvocation.cpp
index d2d2180cd2..7667ca8281 100644
--- a/src/vm/reflectioninvocation.cpp
+++ b/src/vm/reflectioninvocation.cpp
@@ -2375,15 +2375,6 @@ FCIMPL1(Object*, ReflectionInvocation::TypedReferenceToObject, TypedByRef * valu
}
FCIMPLEND
-#ifdef _DEBUG
-FCIMPL1(FC_BOOL_RET, ReflectionInvocation::IsAddressInStack, void * ptr)
-{
- FCALL_CONTRACT;
- FC_RETURN_BOOL(Thread::IsAddressInCurrentStack(ptr));
-}
-FCIMPLEND
-#endif
-
FCIMPL2_IV(Object*, ReflectionInvocation::CreateEnum, ReflectClassBaseObject *pTypeUNSAFE, INT64 value) {
FCALL_CONTRACT;
diff --git a/src/vm/reflectioninvocation.h b/src/vm/reflectioninvocation.h
index 64234d7eab..7cb3348292 100644
--- a/src/vm/reflectioninvocation.h
+++ b/src/vm/reflectioninvocation.h
@@ -63,9 +63,6 @@ public:
static FCDECL4(void, MakeTypedReference, TypedByRef * value, Object* targetUNSAFE, ArrayBase* fldsUNSAFE, ReflectClassBaseObject *pFieldType);
static FCDECL2(void, SetTypedReference, TypedByRef * target, Object* objUNSAFE);
static FCDECL1(Object*, TypedReferenceToObject, TypedByRef * value);
-#ifdef _DEBUG
- static FCDECL1(FC_BOOL_RET, IsAddressInStack, void * ptr);
-#endif
#ifdef FEATURE_COMINTEROP
static FCDECL3(Object*, GetClassFromProgID, StringObject* classNameUNSAFE, StringObject* serverUNSAFE, CLR_BOOL bThrowOnError);