| Index: third_party/WebKit/Source/platform/heap/CallbackStack.cpp
|
| diff --git a/third_party/WebKit/Source/platform/heap/CallbackStack.cpp b/third_party/WebKit/Source/platform/heap/CallbackStack.cpp
|
| index 48823846abdabb8d8e30471327d1629f12560ac8..ad04cd74563d1eac6403ed8b8eed319ad53a5da7 100644
|
| --- a/third_party/WebKit/Source/platform/heap/CallbackStack.cpp
|
| +++ b/third_party/WebKit/Source/platform/heap/CallbackStack.cpp
|
| @@ -3,9 +3,29 @@
|
| // found in the LICENSE file.
|
|
|
| #include "platform/heap/CallbackStack.h"
|
| +#include "wtf/Partitions.h"
|
|
|
| namespace blink {
|
|
|
| +CallbackStack::Block::Block(Block* next, size_t blockSize)
|
| + : m_blockSize(blockSize)
|
| +{
|
| + m_buffer = static_cast<Item*>(WTF::Partitions::fastMalloc(blockSize * sizeof(Item), "CallbackStack::Block"));
|
| + m_limit = &(m_buffer[m_blockSize]);
|
| + m_current = &(m_buffer[0]);
|
| + m_next = next;
|
| + clearUnused();
|
| +}
|
| +
|
| +CallbackStack::Block::~Block()
|
| +{
|
| + clearUnused();
|
| + m_limit = nullptr;
|
| + m_current = nullptr;
|
| + m_next = nullptr;
|
| + WTF::Partitions::fastFree(m_buffer);
|
| +}
|
| +
|
| void CallbackStack::Block::clear()
|
| {
|
| m_current = &m_buffer[0];
|
| @@ -38,12 +58,14 @@ bool CallbackStack::Block::hasCallbackForObject(const void* object)
|
| void CallbackStack::Block::clearUnused()
|
| {
|
| #if ENABLE(ASSERT)
|
| - for (size_t i = 0; i < blockSize; i++)
|
| + for (size_t 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(size_t reservedStackSize)
|
| + : m_first(new Block(nullptr, reservedStackSize))
|
| + , m_last(m_first)
|
| {
|
| }
|
|
|
| @@ -74,7 +96,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_first->blockSize() * 2);
|
| return m_first->allocateEntry();
|
| }
|
|
|
|
|