Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1106)

Unified Diff: third_party/WebKit/Source/wtf/StackUtil.h

Issue 2728453006: WTF: Initialize main-thread stack estimates when WTF starts up. (Closed)
Patch Set: comment about why currentThread works this way Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/wtf/StackUtil.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/wtf/StackUtil.h
diff --git a/third_party/WebKit/Source/wtf/StackUtil.h b/third_party/WebKit/Source/wtf/StackUtil.h
index 39b137c58380dab1759aeffd88a87000e5e821f3..c9b9e842b63973e71fdf33ced1df01e81cc8bdc4 100644
--- a/third_party/WebKit/Source/wtf/StackUtil.h
+++ b/third_party/WebKit/Source/wtf/StackUtil.h
@@ -18,37 +18,32 @@ WTF_EXPORT void* getStackStart();
namespace internal {
-WTF_EXPORT uintptr_t mainThreadUnderestimatedStackSize();
+WTF_EXPORT extern uintptr_t s_mainThreadStackStart;
+WTF_EXPORT extern uintptr_t s_mainThreadUnderestimatedStackSize;
+
+WTF_EXPORT void initializeMainThreadStackEstimate();
#if OS(WIN) && COMPILER(MSVC)
size_t threadStackSize();
#endif
+} // namespace internal
+
// Returns true if the function is not called on the main thread. Note carefully
// that this function may have false positives, i.e. it can return true even if
// we are on the main thread. If the function returns false, we are certainly
-// on the main thread. Must be WTF_EXPORT due to template inlining in
-// ThreadSpecific.
-inline WTF_EXPORT bool mayNotBeMainThread() {
- // getStackStart is exclusive, not inclusive (i.e. it points past the last
- // page of the stack in linear order). So, to ensure an inclusive comparison,
- // subtract here and in mainThreadUnderestimatedStackSize().
- static uintptr_t s_mainThreadStackStart =
- reinterpret_cast<uintptr_t>(getStackStart()) - sizeof(void*);
- static uintptr_t s_mainThreadUnderestimatedStackSize =
- mainThreadUnderestimatedStackSize();
+// on the main thread.
+inline bool mayNotBeMainThread() {
uintptr_t dummy;
uintptr_t addressDiff =
- s_mainThreadStackStart - reinterpret_cast<uintptr_t>(&dummy);
+ internal::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.
- return addressDiff >= s_mainThreadUnderestimatedStackSize;
+ return addressDiff >= internal::s_mainThreadUnderestimatedStackSize;
}
-} // namespace internal
-
} // namespace WTF
#endif // StackUtil_h
« no previous file with comments | « no previous file | third_party/WebKit/Source/wtf/StackUtil.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698