From b80fc2609bf2e171a4fa1e8b7ac85fa392437ca0 Mon Sep 17 00:00:00 2001 From: Jonghyun Park Date: Fri, 10 Feb 2017 18:42:56 +0900 Subject: [PATCH] Unify GetControlPC/GetRegdisplaySP/SetRegdisplaySP (dotnet/coreclr#9444) * Unify GetControlPC * Unify GetRegdisplaySP/SetRegdisplaySP Commit migrated from https://github.com/dotnet/coreclr/commit/e62b0f82a9c5bb770ac27ad2616074a32dbf0325 --- src/coreclr/src/inc/regdisp.h | 76 +++++++++++-------------------------------- 1 file changed, 19 insertions(+), 57 deletions(-) diff --git a/src/coreclr/src/inc/regdisp.h b/src/coreclr/src/inc/regdisp.h index cae0609..d08c44c 100644 --- a/src/coreclr/src/inc/regdisp.h +++ b/src/coreclr/src/inc/regdisp.h @@ -44,15 +44,27 @@ struct REGDISPLAY_BASE { Thread *_pThread; #endif // DEBUG_REGDISPLAY -#if defined(_TARGET_X86_) || defined(_TARGET_ARM_) - DWORD SP; // Stack Pointer - PCODE ControlPC; -#else // _TARGET_X86_ || _TARGET_ARM_ - size_t SP; - size_t ControlPC; -#endif // !_TARGET_X86_ && !_TARGET_ARM + TADDR SP; + TADDR ControlPC; }; +inline PCODE GetControlPC(REGDISPLAY_BASE *pRD) { + LIMITED_METHOD_DAC_CONTRACT; + return (PCODE)(pRD->ControlPC); +} + +inline TADDR GetRegdisplaySP(REGDISPLAY_BASE *pRD) { + LIMITED_METHOD_DAC_CONTRACT; + + return pRD->SP; +} + +inline void SetRegdisplaySP(REGDISPLAY_BASE *pRD, LPVOID sp) { + LIMITED_METHOD_DAC_CONTRACT; + + pRD->SP = (TADDR)sp; +} + #if defined(_TARGET_X86_) struct REGDISPLAY : public REGDISPLAY_BASE { @@ -101,18 +113,6 @@ struct REGDISPLAY : public REGDISPLAY_BASE { TADDR PCTAddr; }; -inline TADDR GetRegdisplaySP(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - - return (TADDR)display->SP; -} - -inline void SetRegdisplaySP(REGDISPLAY *display, LPVOID sp ) { - LIMITED_METHOD_DAC_CONTRACT; - - (display->SP) = (DWORD)(size_t)sp; -} - inline TADDR GetRegdisplayFP(REGDISPLAY *display) { LIMITED_METHOD_DAC_CONTRACT; @@ -125,11 +125,6 @@ inline LPVOID GetRegdisplayFPAddress(REGDISPLAY *display) { return (LPVOID)display->GetEbpLocation(); } -inline PCODE GetControlPC(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - - return display->ControlPC; -} // This function tells us if the given stack pointer is in one of the frames of the functions called by the given frame inline BOOL IsInCalleesFrames(REGDISPLAY *display, LPVOID stackPointer) { @@ -195,10 +190,6 @@ struct REGDISPLAY : public REGDISPLAY_BASE { } }; -inline TADDR GetRegdisplaySP(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - return (TADDR)display->SP; -} inline TADDR GetRegdisplayFP(REGDISPLAY *display) { LIMITED_METHOD_CONTRACT; @@ -210,13 +201,6 @@ inline TADDR GetRegdisplayFPAddress(REGDISPLAY *display) { return NULL; } -inline PCODE GetControlPC(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - return (PCODE)(display->ControlPC); -} - - - // This function tells us if the given stack pointer is in one of the frames of the functions called by the given frame inline BOOL IsInCalleesFrames(REGDISPLAY *display, LPVOID stackPointer) { @@ -242,7 +226,6 @@ inline TADDR GetRegdisplayStackMark(REGDISPLAY *display) #endif // _TARGET_AMD64_ } - #elif defined(_TARGET_ARM_) // ResumableFrame is pushed on the stack before @@ -278,17 +261,6 @@ struct REGDISPLAY : public REGDISPLAY_BASE { } }; -inline TADDR GetRegdisplaySP(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - return (TADDR)(size_t)display->SP; -} - -inline PCODE GetControlPC(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - return (PCODE)(display->ControlPC); -} - - // This function tells us if the given stack pointer is in one of the frames of the functions called by the given frame inline BOOL IsInCalleesFrames(REGDISPLAY *display, LPVOID stackPointer) { LIMITED_METHOD_CONTRACT; @@ -311,16 +283,6 @@ struct REGDISPLAY : public REGDISPLAY_BASE { SLOT * pPC; }; -inline PCODE GetControlPC(REGDISPLAY *display) { - LIMITED_METHOD_CONTRACT; - return (PCODE) NULL; -} - -inline LPVOID GetRegdisplaySP(REGDISPLAY *display) { - LIMITED_METHOD_DAC_CONTRACT; - return (LPVOID)display->SP; -} - inline TADDR GetRegdisplayFP(REGDISPLAY *display) { LIMITED_METHOD_CONTRACT; return (TADDR)*(display->FramePtr); -- 2.7.4