Chromium Code Reviews| Index: third_party/WebKit/Source/platform/heap/ThreadState.h |
| diff --git a/third_party/WebKit/Source/platform/heap/ThreadState.h b/third_party/WebKit/Source/platform/heap/ThreadState.h |
| index 1eb43ff1d3349894f20d17ac8f385744b2593c33..5de90fcbf9d64182a36154fa2ee9b18e8204cc55 100644 |
| --- a/third_party/WebKit/Source/platform/heap/ThreadState.h |
| +++ b/third_party/WebKit/Source/platform/heap/ThreadState.h |
| @@ -45,6 +45,7 @@ |
| #include "wtf/ThreadSpecific.h" |
| #include "wtf/Threading.h" |
| #include "wtf/ThreadingPrimitives.h" |
| +#include "wtf/WTFThreadData.h" |
| #include <memory> |
| namespace v8 { |
| @@ -182,18 +183,10 @@ class PLATFORM_EXPORT ThreadState { |
| static ThreadState* current() { |
| #if defined(__GLIBC__) || OS(ANDROID) || OS(FREEBSD) |
| - // TLS lookup is fast in these platforms. |
| return **s_threadSpecific; |
| #else |
| - uintptr_t dummy; |
| - uintptr_t addressDiff = |
| - s_mainThreadStackStart - reinterpret_cast<uintptr_t>(&dummy); |
| - // This is a fast way to judge if we are in the main thread. |
| - // If |&dummy| is within |s_mainThreadUnderestimatedStackSize| byte from |
| - // the stack start of the main thread, we judge that we are in |
| - // the main thread. |
| - if (LIKELY(addressDiff < s_mainThreadUnderestimatedStackSize)) { |
| - ASSERT(**s_threadSpecific == mainThreadState()); |
| + if (LIKELY(WTF::WTFThreadData::stackBasedIsMainThread())) { |
| + DCHECK_EQ(**s_threadSpecific, mainThreadState()); |
|
haraken
2017/01/16 04:42:30
Ideally s_threadSpecific should be moved into WTFT
Charlie Harrison
2017/01/18 01:49:48
I've just turned this into **s_threadSpecific beca
|
| return mainThreadState(); |
| } |
| // TLS lookup is slow. |
| @@ -655,8 +648,6 @@ class PLATFORM_EXPORT ThreadState { |
| friend class SafePointScope; |
| static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific; |
| - static uintptr_t s_mainThreadStackStart; |
| - static uintptr_t s_mainThreadUnderestimatedStackSize; |
| // We can't create a static member of type ThreadState here |
| // because it will introduce global constructor and destructor. |
| @@ -671,9 +662,6 @@ class PLATFORM_EXPORT ThreadState { |
| ThreadIdentifier m_thread; |
| std::unique_ptr<PersistentRegion> m_persistentRegion; |
| BlinkGC::StackState m_stackState; |
| -#if OS(WIN) && COMPILER(MSVC) |
| - size_t m_threadStackSize; |
| -#endif |
| intptr_t* m_startOfStack; |
| intptr_t* m_endOfStack; |