Fix testkjs in 64-bit.
authormrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Dec 2007 21:16:19 +0000 (21:16 +0000)
committermrowe@apple.com <mrowe@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Dec 2007 21:16:19 +0000 (21:16 +0000)
When built for 64-bit the TCMalloc spin lock uses pthread mutexes rather than a custom spin lock
implemented in assembly.  If we fail to initialize the pthread mutex, attempts to lock or unlock
it will fail and trigger a call to abort.

Reviewed by Darin.

* wtf/FastMalloc.cpp: Initialize the spin lock so that we can later lock and unlock it.
* wtf/TCSpinLock.h: Add an Init method to the optimised spin lock.

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

JavaScriptCore/ChangeLog
JavaScriptCore/wtf/FastMalloc.cpp
JavaScriptCore/wtf/TCSpinLock.h

index 42997c7..9e44520 100644 (file)
@@ -1,3 +1,16 @@
+2007-12-05  Mark Rowe  <mrowe@apple.com>
+
+        Reviewed by Darin.
+
+        Fix testkjs in 64-bit.
+
+        When built for 64-bit the TCMalloc spin lock uses pthread mutexes rather than a custom spin lock
+        implemented in assembly.  If we fail to initialize the pthread mutex, attempts to lock or unlock
+        it will fail and trigger a call to abort.
+
+        * wtf/FastMalloc.cpp: Initialize the spin lock so that we can later lock and unlock it.
+        * wtf/TCSpinLock.h: Add an Init method to the optimised spin lock.
+
 2007-12-04  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by NOBODY (Build fix).
 2007-12-04  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by NOBODY (Build fix).
index 21ac44d..af2e760 100644 (file)
@@ -1889,6 +1889,7 @@ static volatile size_t per_thread_cache_size = kMaxThreadCacheSize;
 //-------------------------------------------------------------------
 
 void TCMalloc_Central_FreeList::Init(size_t cl) {
 //-------------------------------------------------------------------
 
 void TCMalloc_Central_FreeList::Init(size_t cl) {
+  lock_.Init();
   size_class_ = cl;
   DLL_Init(&empty_);
   DLL_Init(&nonempty_);
   size_class_ = cl;
   DLL_Init(&empty_);
   DLL_Init(&nonempty_);
index 72c5cf5..ef6474e 100644 (file)
@@ -121,6 +121,8 @@ struct TCMalloc_SpinLock {
         return lockword_ != 0;
     }
 
         return lockword_ != 0;
     }
 
+    inline void Init() { lockword_ = 0; }
+
     volatile unsigned int lockword_;
 };
 
     volatile unsigned int lockword_;
 };