* [x86/Linux] Revert UMThkCallFrame-related code
* [x86/Linux] Fix dangling 'TheUMEntryPrestub' reference
This commit re-enables GenerateUMThunkPrestub and its related code in
order to remove TheUMEntryPrestub reference.
* [x86/Linux] Re-enable several methods in StubLinkerCPU
This commit re-enables the following methods for x86/Linux:
- StubLinkerCPU::EmitSetup
- StubLinkerCPU::EmitComMethodStubProlog
- StubLinkerCPU::EmitComMethodStubEpilog
In addtion, EmitComMethodStubEpilog is marked as NYI.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6ed21c52f25243b7cc1c64b19a47bbd4beb69314
AppDomain *m_pDomain;
};
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
//-------------------------------------------------------------------------
// One-time creation of special prestub to initialize UMEntryThunks.
//-------------------------------------------------------------------------
Stub *GenerateUMThunkPrestub();
-#endif
+#endif // _TARGET_X86_
//-------------------------------------------------------------------------
// NExport stub
MethodDesc* method = GetFunction();
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
if (GetVTablePtr() == UMThkCallFrame::GetMethodFrameVPtr())
method = ((UMThkCallFrame*) this)->GetUMEntryThunk()->GetMethod();
#endif
const char* frameType;
if (GetVTablePtr() == PrestubMethodFrame::GetMethodFrameVPtr())
frameType = "PreStub";
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
else if (GetVTablePtr() == UMThkCallFrame::GetMethodFrameVPtr())
frameType = "UMThkCallFrame";
#endif
#endif // FEATURE_COMINTEROP
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
PTR_UMEntryThunk UMThkCallFrame::GetUMEntryThunk()
{
}
#endif
-#endif // _TARGET_X86_ && !FEATURE_PAL
+#endif // _TARGET_X86_
#ifndef DACCESS_COMPILE
// | +-ComPrestubMethodFrame - prestub frame for calls from COM to CLR
// |
#endif //FEATURE_COMINTEROP
-#if defined(_TARGET_X86_)
+#ifdef _TARGET_X86_
// | +-UMThkCallFrame - this frame represents an unmanaged->managed
// | transition through N/Direct
#endif
FRAME_TYPE_NAME(DebuggerSecurityCodeMarkFrame)
FRAME_TYPE_NAME(DebuggerExitFrame)
FRAME_TYPE_NAME(DebuggerU2MCatchHandlerFrame)
-#if defined(_TARGET_X86_)
+#ifdef _TARGET_X86_
FRAME_TYPE_NAME(UMThkCallFrame)
#endif
#if defined(FEATURE_INCLUDE_ALL_INTERFACES) && defined(_TARGET_X86_)
#ifndef DACCESS_COMPILE
-#if !defined(FEATURE_PAL)
//-------------------------------------------------------------------------
// One-time creation of special prestub to initialize UMEntryThunks.
//-------------------------------------------------------------------------
RETURN psl->Link(SystemDomain::GetGlobalLoaderAllocator()->GetExecutableHeap());
}
-#endif // !FEATURE_PAL
Stub *GenerateInitPInvokeFrameHelper()
{
#endif // FEATURE_IMPLICIT_TLS
}
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#if defined(_TARGET_X86_)
#ifdef PROFILING_SUPPORTED
VOID StubLinkerCPU::EmitProfilerComCallProlog(TADDR pFrameVptr, X86Reg regFrame)
{
STANDARD_VM_CONTRACT;
+#ifndef FEATURE_PAL
#ifdef FEATURE_IMPLICIT_TLS
DWORD idx = 0;
TLSACCESSMODE mode = TLSACCESS_GENERIC;
X86EmitDebugTrashReg(kEDX);
#endif
+#else // FEATURE_PAL
+ PORTABILITY_ASSERT("StubLinkerCPU::EmitSetup");
+#endif // FEATURE_PAL
}
VOID StubLinkerCPU::EmitRareSetup(CodeLabel *pRejoinPoint, BOOL fThrow)
}
//========================================================================
-#endif // _TARGET_X86_ && !FEATURE_PAL
+#endif // _TARGET_X86_
//========================================================================
#if defined(FEATURE_COMINTEROP) && defined(_TARGET_X86_)
//========================================================================
// use the prestub.
//==========================================================================
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
static PCODE g_UMThunkPreStub;
-#endif
+#endif // _TARGET_X86_
#ifndef DACCESS_COMPILE
return;
}
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
g_UMThunkPreStub = GenerateUMThunkPrestub()->GetEntryPoint();
-#endif
+#endif // _TARGET_X86_
ThePreStubManager::Init();
}
{
LIMITED_METHOD_CONTRACT;
-#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
+#ifdef _TARGET_X86_
return g_UMThunkPreStub;
-#else
+#else // _TARGET_X86_
return GetEEFuncEntryPoint(TheUMEntryPrestub);
-#endif
+#endif // _TARGET_X86_
}
PCODE TheVarargNDirectStub(BOOL hasRetBuffArg)