diff options
author | Jonghyun Park <parjong@gmail.com> | 2017-02-03 16:15:56 +0900 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2017-02-02 23:15:56 -0800 |
commit | 53e62b4e3ca7792b1c4966823832de56f88db0b6 (patch) | |
tree | 5ade4d3a595b37f382fc48e1461d43ae607aec9d | |
parent | 29ce2010b38e73ea8effa412f9cc6bc7afa882e8 (diff) | |
download | coreclr-53e62b4e3ca7792b1c4966823832de56f88db0b6.tar.gz coreclr-53e62b4e3ca7792b1c4966823832de56f88db0b6.tar.bz2 coreclr-53e62b4e3ca7792b1c4966823832de56f88db0b6.zip |
[x86/Linux] Do NOT use QuickUnwindStackFrame (#9299)
* [x86/Linux] Do NOT use QuickUnwindStackFrame
* Fix x64 build error
-rw-r--r-- | src/inc/eetwain.h | 5 | ||||
-rw-r--r-- | src/vm/eetwain.cpp | 4 | ||||
-rw-r--r-- | src/vm/stackwalk.cpp | 4 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/inc/eetwain.h b/src/inc/eetwain.h index 8ff76589ca..126317eb94 100644 --- a/src/inc/eetwain.h +++ b/src/inc/eetwain.h @@ -36,6 +36,9 @@ #define USE_GC_INFO_DECODER #endif +#if (defined(_TARGET_X86_) && !defined(FEATURE_PAL)) || defined(_TARGET_AMD64_) +#define HAS_QUICKUNWIND +#endif #if CHECK_APP_DOMAIN_LEAKS #define CHECK_APP_DOMAIN GC_CALL_CHECK_APP_DOMAIN @@ -434,6 +437,7 @@ bool UnwindStackFrame( StackwalkCacheUnwindInfo *pUnwindInfo); #endif // CROSSGEN_COMPILE +#ifdef HAS_QUICKUNWIND enum QuickUnwindFlag { UnwindCurrentStackFrame, @@ -450,6 +454,7 @@ void QuickUnwindStackFrame( PREGDISPLAY pRD, StackwalkCacheEntry *pCacheEntry, QuickUnwindFlag flag); +#endif // HAS_QUICKUNWIND /* Is the function currently at a "GC safe point" ? diff --git a/src/vm/eetwain.cpp b/src/vm/eetwain.cpp index eea54a8d3d..132e54d479 100644 --- a/src/vm/eetwain.cpp +++ b/src/vm/eetwain.cpp @@ -3063,7 +3063,7 @@ void EECodeManager::EnsureCallerContextIsValid( PREGDISPLAY pRD, StackwalkCache if( !pRD->IsCallerContextValid ) { -#if !defined(DACCESS_COMPILE) +#if !defined(DACCESS_COMPILE) && defined(HAS_QUICKUNWIND) if (pCacheEntry != NULL) { // lightened schema: take stack unwind info from stackwalk cache @@ -3104,6 +3104,7 @@ size_t EECodeManager::GetCallerSp( PREGDISPLAY pRD ) #endif // WIN64EXCEPTIONS && !CROSSGEN_COMPILE +#ifdef HAS_QUICKUNWIND /* * Light unwind the current stack frame, using provided cache entry. * pPC, Esp and pEbp of pContext are updated. @@ -3194,6 +3195,7 @@ void EECodeManager::QuickUnwindStackFrame(PREGDISPLAY pRD, StackwalkCacheEntry * PORTABILITY_ASSERT("EECodeManager::QuickUnwindStackFrame is not implemented on this platform."); #endif // !_TARGET_X86_ && !_TARGET_AMD64_ } +#endif // HAS_QUICKUNWIND /*****************************************************************************/ #ifdef _TARGET_X86_ // UnwindStackFrame diff --git a/src/vm/stackwalk.cpp b/src/vm/stackwalk.cpp index 9e7f9fc49b..3ab38c31bd 100644 --- a/src/vm/stackwalk.cpp +++ b/src/vm/stackwalk.cpp @@ -2464,7 +2464,7 @@ StackWalkAction StackFrameIterator::NextRaw(void) DBG_ADDR(GetRegdisplaySP(m_crawl.pRD)), DBG_ADDR(GetControlPC(m_crawl.pRD)))); -#if !defined(DACCESS_COMPILE) +#if !defined(DACCESS_COMPILE) && defined(HAS_QUICKUNWIND) StackwalkCacheEntry *pCacheEntry = m_crawl.GetStackwalkCacheEntry(); if (pCacheEntry != NULL) { @@ -2474,7 +2474,7 @@ StackWalkAction StackFrameIterator::NextRaw(void) EECodeManager::QuickUnwindStackFrame(m_crawl.pRD, pCacheEntry, EECodeManager::UnwindCurrentStackFrame); } else -#endif // !DACCESS_COMPILE +#endif // !DACCESS_COMPILE && HAS_QUICKUNWIND { #if !defined(DACCESS_COMPILE) // non-optimized stack unwind schema, doesn't use StackwalkCache |