Skip to content

Commit

Permalink
[x86/Linux] Revert UMThkCallFrame-related changes (dotnet/coreclr#8434)
Browse files Browse the repository at this point in the history
* [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 dotnet/coreclr@6ed21c5
  • Loading branch information
parjong authored and jkotas committed Dec 5, 2016
1 parent 077b552 commit dad8f49
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 19 deletions.
4 changes: 2 additions & 2 deletions src/coreclr/src/vm/dllimportcallback.h
Original file line number Diff line number Diff line change
Expand Up @@ -569,12 +569,12 @@ class UMEntryThunkCache
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
Expand Down
8 changes: 4 additions & 4 deletions src/coreclr/src/vm/frames.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ void Frame::Log() {

MethodDesc* method = GetFunction();

#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
#ifdef _TARGET_X86_
if (GetVTablePtr() == UMThkCallFrame::GetMethodFrameVPtr())
method = ((UMThkCallFrame*) this)->GetUMEntryThunk()->GetMethod();
#endif
Expand All @@ -85,7 +85,7 @@ void Frame::Log() {
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
Expand Down Expand Up @@ -1671,7 +1671,7 @@ void ComMethodFrame::DoSecondPassHandlerCleanup(Frame * pCurFrame)
#endif // FEATURE_COMINTEROP


#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
#ifdef _TARGET_X86_

PTR_UMEntryThunk UMThkCallFrame::GetUMEntryThunk()
{
Expand All @@ -1694,7 +1694,7 @@ void UMThkCallFrame::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
}
#endif

#endif // _TARGET_X86_ && !FEATURE_PAL
#endif // _TARGET_X86_

#ifndef DACCESS_COMPILE

Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/src/vm/frames.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@
// | +-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
Expand Down Expand Up @@ -268,7 +268,7 @@ FRAME_TYPE_NAME(DebuggerClassInitMarkFrame)
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_)
Expand Down
2 changes: 0 additions & 2 deletions src/coreclr/src/vm/i386/cgenx86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,6 @@ WORD GetUnpatchedCodeData(LPCBYTE pAddr)

#ifndef DACCESS_COMPILE

#if !defined(FEATURE_PAL)
//-------------------------------------------------------------------------
// One-time creation of special prestub to initialize UMEntryThunks.
//-------------------------------------------------------------------------
Expand Down Expand Up @@ -810,7 +809,6 @@ Stub *GenerateUMThunkPrestub()

RETURN psl->Link(SystemDomain::GetGlobalLoaderAllocator()->GetExecutableHeap());
}
#endif // !FEATURE_PAL

Stub *GenerateInitPInvokeFrameHelper()
{
Expand Down
8 changes: 6 additions & 2 deletions src/coreclr/src/vm/i386/stublinkerx86.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2535,7 +2535,7 @@ VOID StubLinkerCPU::X86EmitCurrentAppDomainFetch(X86Reg dstreg, unsigned preserv
#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)
Expand Down Expand Up @@ -2860,6 +2860,7 @@ VOID StubLinkerCPU::EmitSetup(CodeLabel *pForwardRef)
{
STANDARD_VM_CONTRACT;

#ifndef FEATURE_PAL
#ifdef FEATURE_IMPLICIT_TLS
DWORD idx = 0;
TLSACCESSMODE mode = TLSACCESS_GENERIC;
Expand Down Expand Up @@ -2920,6 +2921,9 @@ VOID StubLinkerCPU::EmitSetup(CodeLabel *pForwardRef)
X86EmitDebugTrashReg(kEDX);
#endif

#else // FEATURE_PAL
PORTABILITY_ASSERT("StubLinkerCPU::EmitSetup");
#endif // FEATURE_PAL
}

VOID StubLinkerCPU::EmitRareSetup(CodeLabel *pRejoinPoint, BOOL fThrow)
Expand All @@ -2946,7 +2950,7 @@ VOID StubLinkerCPU::EmitRareSetup(CodeLabel *pRejoinPoint, BOOL fThrow)
}

//========================================================================
#endif // _TARGET_X86_ && !FEATURE_PAL
#endif // _TARGET_X86_
//========================================================================
#if defined(FEATURE_COMINTEROP) && defined(_TARGET_X86_)
//========================================================================
Expand Down
14 changes: 7 additions & 7 deletions src/coreclr/src/vm/prestub.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1647,9 +1647,9 @@ PCODE MethodDesc::DoPrestub(MethodTable *pDispatchingMT)
// use the prestub.
//==========================================================================

#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
#ifdef _TARGET_X86_
static PCODE g_UMThunkPreStub;
#endif
#endif // _TARGET_X86_

#ifndef DACCESS_COMPILE

Expand All @@ -1676,9 +1676,9 @@ void InitPreStubManager(void)
return;
}

#if defined(_TARGET_X86_) && !defined(FEATURE_PAL)
#ifdef _TARGET_X86_
g_UMThunkPreStub = GenerateUMThunkPrestub()->GetEntryPoint();
#endif
#endif // _TARGET_X86_

ThePreStubManager::Init();
}
Expand All @@ -1687,11 +1687,11 @@ PCODE TheUMThunkPreStub()
{
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)
Expand Down

0 comments on commit dad8f49

Please sign in to comment.