Reviewed by Maciej.
authorap@webkit.org <ap@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 12 May 2008 07:36:05 +0000 (07:36 +0000)
committerap@webkit.org <ap@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 12 May 2008 07:36:05 +0000 (07:36 +0000)
        https://bugs.webkit.org/show_bug.cgi?id=18828
        Reproducible crash with PAC file

        Naively moving JavaScriptCore into thread-specific data was inappropriate in the face of
        exiting JavaScriptCore API clients, which expect a different therading model. Temporarily
        disabling ThreadSpecific implementation until this can be sorted out.

        * wtf/ThreadSpecific.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@33039 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/wtf/ThreadSpecific.h

index 9bd4dd3..f3b8a52 100644 (file)
@@ -1,5 +1,22 @@
 2008-05-12  Alexey Proskuryakov  <ap@webkit.org>
 
+        Reviewed by Maciej.
+
+        https://bugs.webkit.org/show_bug.cgi?id=18828
+        Reproducible crash with PAC file
+
+        Naively moving JavaScriptCore into thread-specific data was inappropriate in the face of
+        exiting JavaScriptCore API clients, which expect a different therading model. Temporarily
+        disabling ThreadSpecific implementation until this can be sorted out.
+
+        * wtf/ThreadSpecific.h:
+        (WTF::::ThreadSpecific):
+        (WTF::::~ThreadSpecific):
+        (WTF::::get):
+        (WTF::::set):
+
+2008-05-12  Alexey Proskuryakov  <ap@webkit.org>
+
         Roll out recent  threading changes (r32807, r32810, r32819, r32822) to simplify
         SquirrelFish merging.
 
index 605ffbd..c82d6d1 100644 (file)
@@ -52,6 +52,7 @@ private:
     void set(T*);
     void static destroy(void* ptr);
 
+#if 0 // FIXME: Temporary disabled until the rest of multithreading support is in.
 #if USE(PTHREADS) || PLATFORM(WIN)
     struct Data : Noncopyable {
         Data(T* value, ThreadSpecific<T>* owner) : value(value), owner(owner) {}
@@ -62,8 +63,14 @@ private:
 
     pthread_key_t m_key;
 #endif
+
+#else // Temporary stub implementation.
+    T m_data;
+#endif
 };
 
+#if 0 // FIXME: Temporary disabled until the rest of multithreading support is in.
+
 #if USE(PTHREADS) || PLATFORM(WIN)
 template<typename T>
 inline ThreadSpecific<T>::ThreadSpecific()
@@ -104,6 +111,31 @@ inline void ThreadSpecific<T>::destroy(void* ptr)
 #error ThreadSpecific is not implemented for this platform.
 #endif
 
+#else // Temporary stub implementation.
+
+template<typename T>
+inline ThreadSpecific<T>::ThreadSpecific()
+{
+}
+
+template<typename T>
+inline ThreadSpecific<T>::~ThreadSpecific()
+{
+}
+
+template<typename T>
+inline T* ThreadSpecific<T>::get()
+{
+    return &m_data;
+}
+
+template<typename T>
+inline void ThreadSpecific<T>::set(T*)
+{
+}
+
+#endif
+
 template<typename T>
 inline ThreadSpecific<T>::operator T*()
 {