- 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;