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

Unified Diff: third_party/WebKit/Source/wtf/ThreadingPthreads.cpp

Issue 2627153004: Use TLS storage for thread ids in wtf/ThreadingPThreads (Closed)
Patch Set: const Created 3 years, 11 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
Index: third_party/WebKit/Source/wtf/ThreadingPthreads.cpp
diff --git a/third_party/WebKit/Source/wtf/ThreadingPthreads.cpp b/third_party/WebKit/Source/wtf/ThreadingPthreads.cpp
index 49a35eb33906c2ab6863979184258aeec1721f92..ad9b520ac9f44add1284c67ea911ffe9aed00030 100644
--- a/third_party/WebKit/Source/wtf/ThreadingPthreads.cpp
+++ b/third_party/WebKit/Source/wtf/ThreadingPthreads.cpp
@@ -59,6 +59,22 @@
namespace WTF {
+namespace internal {
+
+ThreadIdentifier currentThreadSyscall() {
+#if OS(MACOSX)
+ return pthread_mach_thread_np(pthread_self());
+#elif OS(LINUX)
+ return syscall(__NR_gettid);
+#elif OS(ANDROID)
+ return gettid();
+#else
+ return reinterpret_cast<uintptr_t>(pthread_self());
+#endif
+}
+
+} // namespace internal
+
static Mutex* atomicallyInitializedStaticMutex;
void initializeThreading() {
@@ -87,14 +103,14 @@ void unlockAtomicallyInitializedStaticMutex() {
}
ThreadIdentifier currentThread() {
-#if OS(MACOSX)
- return pthread_mach_thread_np(pthread_self());
-#elif OS(LINUX)
- return syscall(__NR_gettid);
-#elif OS(ANDROID)
- return gettid();
+// TLS lookup is fast on these platforms.
+#if defined(__GLIBC__) || OS(ANDROID) || OS(FREEBSD)
+ return wtfThreadData().threadId();
#else
- return reinterpret_cast<uintptr_t>(pthread_self());
+ // TODO(csharrison): For platforms where TLS lookup is slow, use the hack that
+ // oilpan uses in ThreadState::current() to check if this is the main thread
+ // via stack address.
+ return internal::currentThreadSyscall();
#endif
}

Powered by Google App Engine
This is Rietveld 408576698