[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.22-985-g3c00f00
eric at webkit.org
eric at webkit.org
Wed Mar 17 17:59:15 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit fd33e45b304843e5b46fa478577955e289a6527f
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Thu Feb 25 14:49:12 2010 +0000
2010-02-25 Jochen Eisinger <jochen at chromium.org>
Reviewed by Jeremy Orlow.
Make the context that was passed to the ThreadFunction accessible.
https://bugs.webkit.org/show_bug.cgi?id=35379
* wtf/Threading.h:
* wtf/ThreadingNone.cpp:
(WTF::threadContext):
* wtf/ThreadingPthreads.cpp:
(WTF::):
(WTF::identifierByPthreadHandle):
(WTF::establishIdentifierForPthreadHandle):
(WTF::pthreadHandleForIdentifier):
(WTF::contextForIdentifier):
(WTF::createThreadInternal):
(WTF::currentThread):
(WTF::threadContext):
* wtf/ThreadingWin.cpp:
(WTF::):
(WTF::threadMap):
(WTF::storeThreadHandleByIdentifier):
(WTF::threadHandleForIdentifier):
(WTF::contextForIdentifier):
(WTF::createThreadInternal):
(WTF::threadContext):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@55234 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 4a136db..f049f3e 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,31 @@
+2010-02-25 Jochen Eisinger <jochen at chromium.org>
+
+ Reviewed by Jeremy Orlow.
+
+ Make the context that was passed to the ThreadFunction accessible.
+ https://bugs.webkit.org/show_bug.cgi?id=35379
+
+ * wtf/Threading.h:
+ * wtf/ThreadingNone.cpp:
+ (WTF::threadContext):
+ * wtf/ThreadingPthreads.cpp:
+ (WTF::):
+ (WTF::identifierByPthreadHandle):
+ (WTF::establishIdentifierForPthreadHandle):
+ (WTF::pthreadHandleForIdentifier):
+ (WTF::contextForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::currentThread):
+ (WTF::threadContext):
+ * wtf/ThreadingWin.cpp:
+ (WTF::):
+ (WTF::threadMap):
+ (WTF::storeThreadHandleByIdentifier):
+ (WTF::threadHandleForIdentifier):
+ (WTF::contextForIdentifier):
+ (WTF::createThreadInternal):
+ (WTF::threadContext):
+
2010-02-24 Oliver Hunt <oliver at apple.com>
Reviewed by Geoffrey Garen.
diff --git a/JavaScriptCore/wtf/Threading.h b/JavaScriptCore/wtf/Threading.h
index b7a2f08..b522915 100644
--- a/JavaScriptCore/wtf/Threading.h
+++ b/JavaScriptCore/wtf/Threading.h
@@ -127,6 +127,7 @@ ThreadIdentifier currentThread();
bool isMainThread();
int waitForThreadCompletion(ThreadIdentifier, void**);
void detachThread(ThreadIdentifier);
+void* threadContext(ThreadIdentifier);
#if USE(PTHREADS)
typedef pthread_mutex_t PlatformMutex;
diff --git a/JavaScriptCore/wtf/ThreadingNone.cpp b/JavaScriptCore/wtf/ThreadingNone.cpp
index 2e8a259..cfc9d31 100644
--- a/JavaScriptCore/wtf/ThreadingNone.cpp
+++ b/JavaScriptCore/wtf/ThreadingNone.cpp
@@ -41,6 +41,7 @@ int waitForThreadCompletion(ThreadIdentifier, void**) { return 0; }
void detachThread(ThreadIdentifier) { }
ThreadIdentifier currentThread() { return ThreadIdentifier(); }
bool isMainThread() { return true; }
+void* threadContext(ThreadIdentifier) { return 0; }
Mutex::Mutex() { }
Mutex::~Mutex() { }
diff --git a/JavaScriptCore/wtf/ThreadingPthreads.cpp b/JavaScriptCore/wtf/ThreadingPthreads.cpp
index 2feb808..e841f62 100644
--- a/JavaScriptCore/wtf/ThreadingPthreads.cpp
+++ b/JavaScriptCore/wtf/ThreadingPthreads.cpp
@@ -53,7 +53,12 @@
namespace WTF {
-typedef HashMap<ThreadIdentifier, pthread_t> ThreadMap;
+typedef struct {
+ pthread_t handle;
+ void* context;
+} ThreadInfo;
+
+typedef HashMap<ThreadIdentifier, ThreadInfo> ThreadMap;
static Mutex* atomicallyInitializedStaticMutex;
@@ -105,14 +110,14 @@ static ThreadIdentifier identifierByPthreadHandle(const pthread_t& pthreadHandle
ThreadMap::iterator i = threadMap().begin();
for (; i != threadMap().end(); ++i) {
- if (pthread_equal(i->second, pthreadHandle))
+ if (pthread_equal(i->second.handle, pthreadHandle))
return i->first;
}
return 0;
}
-static ThreadIdentifier establishIdentifierForPthreadHandle(const pthread_t& pthreadHandle)
+static ThreadIdentifier establishIdentifierForPthreadHandle(const pthread_t& pthreadHandle, void* context)
{
ASSERT(!identifierByPthreadHandle(pthreadHandle));
@@ -120,7 +125,10 @@ static ThreadIdentifier establishIdentifierForPthreadHandle(const pthread_t& pth
static ThreadIdentifier identifierCount = 1;
- threadMap().add(identifierCount, pthreadHandle);
+ ThreadInfo info;
+ info.handle = pthreadHandle;
+ info.context = context;
+ threadMap().add(identifierCount, info);
return identifierCount++;
}
@@ -129,9 +137,17 @@ static pthread_t pthreadHandleForIdentifier(ThreadIdentifier id)
{
MutexLocker locker(threadMapMutex());
- return threadMap().get(id);
+ return threadMap().get(id).handle;
+}
+
+static void* contextForIdentifier(ThreadIdentifier id)
+{
+ MutexLocker locker(threadMapMutex());
+
+ return threadMap().get(id).context;
}
+
void clearPthreadHandleForIdentifier(ThreadIdentifier id)
{
MutexLocker locker(threadMapMutex());
@@ -174,7 +190,7 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con
delete threadData;
return 0;
}
- return establishIdentifierForPthreadHandle(threadHandle);
+ return establishIdentifierForPthreadHandle(threadHandle, data);
}
#else
ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, const char*)
@@ -185,7 +201,7 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con
return 0;
}
- return establishIdentifierForPthreadHandle(threadHandle);
+ return establishIdentifierForPthreadHandle(threadHandle, data);
}
#endif
@@ -235,7 +251,7 @@ ThreadIdentifier currentThread()
return id;
// Not a WTF-created thread, ThreadIdentifier is not established yet.
- id = establishIdentifierForPthreadHandle(pthread_self());
+ id = establishIdentifierForPthreadHandle(pthread_self(), 0);
ThreadIdentifierData::initialize(id);
return id;
}
@@ -249,6 +265,11 @@ bool isMainThread()
#endif
}
+void* threadContext(ThreadIdentifier id)
+{
+ return contextForIdentifier(id);
+}
+
Mutex::Mutex()
{
pthread_mutex_init(&m_mutex, NULL);
diff --git a/JavaScriptCore/wtf/ThreadingWin.cpp b/JavaScriptCore/wtf/ThreadingWin.cpp
index 73c3f0c..75da7b4 100644
--- a/JavaScriptCore/wtf/ThreadingWin.cpp
+++ b/JavaScriptCore/wtf/ThreadingWin.cpp
@@ -118,6 +118,11 @@ typedef struct tagTHREADNAME_INFO {
} THREADNAME_INFO;
#pragma pack(pop)
+typedef struct {
+ HANDLE handle;
+ void* context;
+} ThreadInfo;
+
void initializeCurrentThreadInternal(const char* szThreadName)
{
THREADNAME_INFO info;
@@ -165,23 +170,32 @@ void initializeThreading()
}
}
-static HashMap<DWORD, HANDLE>& threadMap()
+static HashMap<DWORD, ThreadInfo>& threadMap()
{
- static HashMap<DWORD, HANDLE> map;
+ static HashMap<DWORD, ThreadInfo> map;
return map;
}
-static void storeThreadHandleByIdentifier(DWORD threadID, HANDLE threadHandle)
+static void storeThreadHandleByIdentifier(DWORD threadID, HANDLE threadHandle, void* context)
{
MutexLocker locker(threadMapMutex());
ASSERT(!threadMap().contains(threadID));
- threadMap().add(threadID, threadHandle);
+ ThreadInfo info;
+ info.handle = threadHandle;
+ info.context = context;
+ threadMap().add(threadID, info);
}
static HANDLE threadHandleForIdentifier(ThreadIdentifier id)
{
MutexLocker locker(threadMapMutex());
- return threadMap().get(id);
+ return threadMap().get(id).handle;
+}
+
+static void* contextForIdentifier(ThreadIdentifier id)
+{
+ MutexLocker locker(threadMapMutex());
+ return threadMap().get(id).context;
}
static void clearThreadHandleForIdentifier(ThreadIdentifier id)
@@ -237,7 +251,7 @@ ThreadIdentifier createThreadInternal(ThreadFunction entryPoint, void* data, con
}
threadID = static_cast<ThreadIdentifier>(threadIdentifier);
- storeThreadHandleByIdentifier(threadIdentifier, threadHandle);
+ storeThreadHandleByIdentifier(threadIdentifier, threadHandle, data);
return threadID;
}
@@ -280,6 +294,11 @@ bool isMainThread()
return currentThread() == mainThreadIdentifier;
}
+void* threadContext(ThreadIdentifier threadID)
+{
+ return contextForIdentifier(threadID);
+}
+
Mutex::Mutex()
{
m_mutex.m_recursionCount = 0;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list