summaryrefslogtreecommitdiff
path: root/src/vm
diff options
context:
space:
mode:
authorJan Kotas <jkotas@microsoft.com>2018-12-20 07:10:07 -0800
committerGitHub <noreply@github.com>2018-12-20 07:10:07 -0800
commitb0f325989d84c0ea429f24250e6ee1c6fd1a50a7 (patch)
tree0068af0090cddebc54a9b3efc00cff742cb4b368 /src/vm
parent4cc0a9a55d283e44205bf842a68657280bdabcd5 (diff)
downloadcoreclr-b0f325989d84c0ea429f24250e6ee1c6fd1a50a7.tar.gz
coreclr-b0f325989d84c0ea429f24250e6ee1c6fd1a50a7.tar.bz2
coreclr-b0f325989d84c0ea429f24250e6ee1c6fd1a50a7.zip
Replace more of JitHelpers with S.R.CS.Unsafe (#21598)
- Replace JitHelpers.UnsafeCastToStackPtr with Unsafe.AsPointer - Delete PinningHelper that was duplicate of RawData helper class
Diffstat (limited to 'src/vm')
-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
8 files changed, 27 insertions, 55 deletions
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);