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

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

Issue 1695653004: Oilpan: Reduce the reserved size of CallbackStacks Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
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();
}

Powered by Google App Engine
This is Rietveld 408576698