Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Unified Diff: Source/platform/heap/CallbackStack.cpp

Issue 1115993003: Try reducing and balance GC callback stack sizes. Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: initialize stacks also before doing thread-terminating GCs Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/platform/heap/CallbackStack.h ('k') | Source/platform/heap/Heap.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/heap/CallbackStack.cpp
diff --git a/Source/platform/heap/CallbackStack.cpp b/Source/platform/heap/CallbackStack.cpp
index d472cbd10a2317ee8e209966951cbd6f94c91579..799af9146c63529985f4b6b859a82e7afbc2ded1 100644
--- a/Source/platform/heap/CallbackStack.cpp
+++ b/Source/platform/heap/CallbackStack.cpp
@@ -9,6 +9,18 @@
namespace blink {
+CallbackStack::Block::Block(Block* next, unsigned blockSize)
+{
+ m_buffer = new Item[blockSize];
+ m_limit = &(m_buffer[blockSize]);
+ m_current = &(m_buffer[0]);
+ m_next = next;
+#if ENABLE(ASSERT)
+ m_blockSize = blockSize;
+#endif
+ clearUnused();
+}
+
void CallbackStack::Block::clear()
{
m_current = &m_buffer[0];
@@ -58,12 +70,15 @@ bool CallbackStack::Block::hasCallbackForObject(const void* object)
void CallbackStack::Block::clearUnused()
{
#if ENABLE(ASSERT)
- for (size_t i = 0; i < blockSize; i++)
+ for (unsigned i = 0; i < m_blockSize; ++i)
m_buffer[i] = Item(0, 0);
#endif
}
-CallbackStack::CallbackStack() : m_first(new Block(0)), m_last(m_first)
+CallbackStack::CallbackStack(unsigned blockSize)
+ : m_first(new Block(nullptr, blockSize))
+ , m_last(m_first)
+ , m_blockSize(blockSize)
{
}
@@ -94,7 +109,7 @@ bool CallbackStack::isEmpty() const
CallbackStack::Item* CallbackStack::allocateEntrySlow()
{
ASSERT(!m_first->allocateEntry());
- m_first = new Block(m_first);
+ m_first = new Block(m_first, m_blockSize);
return m_first->allocateEntry();
}
@@ -150,16 +165,6 @@ bool CallbackStack::hasJustOneBlock() const
return !m_first->next();
}
-void CallbackStack::swap(CallbackStack* other)
-{
- Block* tmp = m_first;
- m_first = other->m_first;
- other->m_first = tmp;
- tmp = m_last;
- m_last = other->m_last;
- other->m_last = tmp;
-}
-
#if ENABLE(ASSERT)
bool CallbackStack::hasCallbackForObject(const void* object)
{
« no previous file with comments | « Source/platform/heap/CallbackStack.h ('k') | Source/platform/heap/Heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698