diff options
Diffstat (limited to 'Source/JavaScriptCore/heap/WeakSet.cpp')
-rw-r--r-- | Source/JavaScriptCore/heap/WeakSet.cpp | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/Source/JavaScriptCore/heap/WeakSet.cpp b/Source/JavaScriptCore/heap/WeakSet.cpp index 8624993ca..e62e66eae 100644 --- a/Source/JavaScriptCore/heap/WeakSet.cpp +++ b/Source/JavaScriptCore/heap/WeakSet.cpp @@ -27,37 +27,24 @@ #include "WeakSet.h" #include "Heap.h" -#include "JSCInlines.h" #include "VM.h" namespace JSC { WeakSet::~WeakSet() { - Heap& heap = *this->heap(); WeakBlock* next = 0; for (WeakBlock* block = m_blocks.head(); block; block = next) { next = block->next(); - WeakBlock::destroy(heap, block); + heap()->blockAllocator().deallocate(WeakBlock::destroy(block)); } m_blocks.clear(); } void WeakSet::sweep() { - for (WeakBlock* block = m_blocks.head(); block;) { - WeakBlock* nextBlock = block->next(); + for (WeakBlock* block = m_blocks.head(); block; block = block->next()) block->sweep(); - if (block->isLogicallyEmptyButNotFree()) { - // If this WeakBlock is logically empty, but still has Weaks pointing into it, - // we can't destroy it just yet. Detach it from the WeakSet and hand ownership - // to the Heap so we don't pin down the entire 64kB MarkedBlock. - m_blocks.remove(block); - heap()->addLogicallyEmptyWeakBlock(block); - block->disconnectMarkedBlock(); - } - block = nextBlock; - } resetAllocator(); } @@ -86,7 +73,7 @@ WeakBlock::FreeCell* WeakSet::tryFindAllocator() WeakBlock::FreeCell* WeakSet::addAllocator() { - WeakBlock* block = WeakBlock::create(*heap(), m_markedBlock); + WeakBlock* block = WeakBlock::create(heap()->blockAllocator().allocate<WeakBlock>()); heap()->didAllocate(WeakBlock::blockSize); m_blocks.append(block); WeakBlock::SweepResult sweepResult = block->takeSweepResult(); @@ -97,7 +84,7 @@ WeakBlock::FreeCell* WeakSet::addAllocator() void WeakSet::removeAllocator(WeakBlock* block) { m_blocks.remove(block); - WeakBlock::destroy(*heap(), block); + heap()->blockAllocator().deallocate(WeakBlock::destroy(block)); } } // namespace JSC |