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) |
{ |