Title: [244497] trunk/Source/bmalloc
Revision
244497
Author
ysuz...@apple.com
Date
2019-04-21 23:44:25 -0700 (Sun, 21 Apr 2019)

Log Message

[bmalloc] Use StaticPerProcess' mutex as bmalloc::Heap does with PerProcess
https://bugs.webkit.org/show_bug.cgi?id=197135

Reviewed by Darin Adler.

This patch leverages StaticPerProcess::mutex() for per process instance's lock in various classes,
as Heap does with PerProcess::mutex().

* bmalloc/AllIsoHeaps.cpp:
(bmalloc::AllIsoHeaps::add):
(bmalloc::AllIsoHeaps::head):
* bmalloc/AllIsoHeaps.h:
* bmalloc/CryptoRandom.cpp:
(bmalloc::ARC4RandomNumberGenerator::randomValues):
* bmalloc/DebugHeap.cpp:
(bmalloc::DebugHeap::memalignLarge):
(bmalloc::DebugHeap::freeLarge):
* bmalloc/DebugHeap.h:
* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::run):
(bmalloc::Scavenger::runSoon):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::timeSinceLastFullScavenge):
(bmalloc::Scavenger::scavenge):
(bmalloc::Scavenger::threadRunLoop):
* bmalloc/Scavenger.h:

Modified Paths

Diff

Modified: trunk/Source/bmalloc/ChangeLog (244496 => 244497)


--- trunk/Source/bmalloc/ChangeLog	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/ChangeLog	2019-04-22 06:44:25 UTC (rev 244497)
@@ -1,3 +1,33 @@
+2019-04-21  Yusuke Suzuki  <ysuz...@apple.com>
+
+        [bmalloc] Use StaticPerProcess' mutex as bmalloc::Heap does with PerProcess
+        https://bugs.webkit.org/show_bug.cgi?id=197135
+
+        Reviewed by Darin Adler.
+
+        This patch leverages StaticPerProcess::mutex() for per process instance's lock in various classes,
+        as Heap does with PerProcess::mutex().
+
+        * bmalloc/AllIsoHeaps.cpp:
+        (bmalloc::AllIsoHeaps::add):
+        (bmalloc::AllIsoHeaps::head):
+        * bmalloc/AllIsoHeaps.h:
+        * bmalloc/CryptoRandom.cpp:
+        (bmalloc::ARC4RandomNumberGenerator::randomValues):
+        * bmalloc/DebugHeap.cpp:
+        (bmalloc::DebugHeap::memalignLarge):
+        (bmalloc::DebugHeap::freeLarge):
+        * bmalloc/DebugHeap.h:
+        * bmalloc/Scavenger.cpp:
+        (bmalloc::Scavenger::run):
+        (bmalloc::Scavenger::runSoon):
+        (bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
+        (bmalloc::Scavenger::schedule):
+        (bmalloc::Scavenger::timeSinceLastFullScavenge):
+        (bmalloc::Scavenger::scavenge):
+        (bmalloc::Scavenger::threadRunLoop):
+        * bmalloc/Scavenger.h:
+
 2019-04-19  Yusuke Suzuki  <ysuz...@apple.com>
 
         [bmalloc] IsoHeap should have lower tier using shared IsoPage

Modified: trunk/Source/bmalloc/bmalloc/AllIsoHeaps.cpp (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/AllIsoHeaps.cpp	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/AllIsoHeaps.cpp	2019-04-22 06:44:25 UTC (rev 244497)
@@ -35,7 +35,7 @@
 
 void AllIsoHeaps::add(IsoHeapImplBase* heap)
 {
-    std::lock_guard<Mutex> locker(m_lock);
+    std::lock_guard<Mutex> locker(mutex());
     heap->m_next = m_head;
     m_head = heap;
 }
@@ -42,7 +42,7 @@
 
 IsoHeapImplBase* AllIsoHeaps::head()
 {
-    std::lock_guard<Mutex> locker(m_lock);
+    std::lock_guard<Mutex> locker(mutex());
     return m_head;
 }
 

Modified: trunk/Source/bmalloc/bmalloc/AllIsoHeaps.h (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/AllIsoHeaps.h	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/AllIsoHeaps.h	2019-04-22 06:44:25 UTC (rev 244497)
@@ -42,7 +42,6 @@
     void forEach(const Func&);
     
 private:
-    Mutex m_lock;
     IsoHeapImplBase* m_head { nullptr };
 };
 DECLARE_STATIC_PER_PROCESS_STORAGE(AllIsoHeaps);

Modified: trunk/Source/bmalloc/bmalloc/CryptoRandom.cpp (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/CryptoRandom.cpp	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/CryptoRandom.cpp	2019-04-22 06:44:25 UTC (rev 244497)
@@ -74,7 +74,6 @@
 
     ARC4Stream m_stream;
     int m_count;
-    Mutex m_mutex;
 };
 DECLARE_STATIC_PER_PROCESS_STORAGE(ARC4RandomNumberGenerator);
 DEFINE_STATIC_PER_PROCESS_STORAGE(ARC4RandomNumberGenerator);
@@ -165,7 +164,7 @@
 
 void ARC4RandomNumberGenerator::randomValues(void* buffer, size_t length)
 {
-    std::lock_guard<Mutex> lock(m_mutex);
+    std::lock_guard<Mutex> lock(mutex());
 
     unsigned char* result = reinterpret_cast<unsigned char*>(buffer);
     stirIfNeeded();

Modified: trunk/Source/bmalloc/bmalloc/DebugHeap.cpp (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/DebugHeap.cpp	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/DebugHeap.cpp	2019-04-22 06:44:25 UTC (rev 244497)
@@ -149,7 +149,7 @@
     if (!result)
         return nullptr;
     {
-        std::lock_guard<std::mutex> locker(m_lock);
+        std::lock_guard<Mutex> locker(mutex());
         m_sizeMap[result] = size;
     }
     return result;
@@ -162,7 +162,7 @@
     
     size_t size;
     {
-        std::lock_guard<std::mutex> locker(m_lock);
+        std::lock_guard<Mutex> locker(mutex());
         size = m_sizeMap[base];
         size_t numErased = m_sizeMap.erase(base);
         RELEASE_BASSERT(numErased == 1);

Modified: trunk/Source/bmalloc/bmalloc/DebugHeap.h (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/DebugHeap.h	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/DebugHeap.h	2019-04-22 06:44:25 UTC (rev 244497)
@@ -61,7 +61,6 @@
     
     // This is the debug heap. We can use whatever data structures we like. It doesn't matter.
     size_t m_pageSize { 0 };
-    std::mutex m_lock;
     std::unordered_map<void*, size_t> m_sizeMap;
 };
 DECLARE_STATIC_PER_PROCESS_STORAGE(DebugHeap);

Modified: trunk/Source/bmalloc/bmalloc/Scavenger.cpp (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/Scavenger.cpp	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/Scavenger.cpp	2019-04-22 06:44:25 UTC (rev 244497)
@@ -87,7 +87,7 @@
 
 void Scavenger::run()
 {
-    std::lock_guard<Mutex> lock(m_mutex);
+    std::lock_guard<Mutex> lock(mutex());
     runHoldingLock();
 }
 
@@ -99,7 +99,7 @@
 
 void Scavenger::runSoon()
 {
-    std::lock_guard<Mutex> lock(m_mutex);
+    std::lock_guard<Mutex> lock(mutex());
     runSoonHoldingLock();
 }
 
@@ -119,7 +119,7 @@
 
 void Scavenger::scheduleIfUnderMemoryPressure(size_t bytes)
 {
-    std::lock_guard<Mutex> lock(m_mutex);
+    std::lock_guard<Mutex> lock(mutex());
     scheduleIfUnderMemoryPressureHoldingLock(bytes);
 }
 
@@ -143,7 +143,7 @@
 
 void Scavenger::schedule(size_t bytes)
 {
-    std::lock_guard<Mutex> lock(m_mutex);
+    std::lock_guard<Mutex> lock(mutex());
     scheduleIfUnderMemoryPressureHoldingLock(bytes);
     
     if (willRunSoon())
@@ -174,7 +174,7 @@
 
 std::chrono::milliseconds Scavenger::timeSinceLastFullScavenge()
 {
-    std::unique_lock<Mutex> lock(m_mutex);
+    std::unique_lock<Mutex> lock(mutex());
     return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::steady_clock::now() - m_lastFullScavengeTime);
 }
 
@@ -246,7 +246,7 @@
     }
 
     {
-        std::unique_lock<Mutex> lock(m_mutex);
+        std::unique_lock<Mutex> lock(mutex());
         m_lastFullScavengeTime = std::chrono::steady_clock::now();
     }
 }
@@ -312,12 +312,12 @@
     
     while (true) {
         if (m_state == State::Sleep) {
-            std::unique_lock<Mutex> lock(m_mutex);
+            std::unique_lock<Mutex> lock(mutex());
             m_condition.wait(lock, [&]() { return m_state != State::Sleep; });
         }
         
         if (m_state == State::RunSoon) {
-            std::unique_lock<Mutex> lock(m_mutex);
+            std::unique_lock<Mutex> lock(mutex());
             m_condition.wait_for(lock, m_waitTime, [&]() { return m_state != State::RunSoon; });
         }
         

Modified: trunk/Source/bmalloc/bmalloc/Scavenger.h (244496 => 244497)


--- trunk/Source/bmalloc/bmalloc/Scavenger.h	2019-04-22 06:22:59 UTC (rev 244496)
+++ trunk/Source/bmalloc/bmalloc/Scavenger.h	2019-04-22 06:44:25 UTC (rev 244497)
@@ -96,7 +96,6 @@
     bool m_isProbablyGrowing { false };
     bool m_isInMiniMode { false };
     
-    Mutex m_mutex;
     Mutex m_scavengingMutex;
     std::condition_variable_any m_condition;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to