X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/6fe7ccc865dc7d7541b93c5bcaf6368d2c98a174..81345200c95645a1b0d2635520f96ad55dfde63f:/heap/WeakSetInlines.h diff --git a/heap/WeakSetInlines.h b/heap/WeakSetInlines.h index 0515904..f239224 100644 --- a/heap/WeakSetInlines.h +++ b/heap/WeakSetInlines.h @@ -26,13 +26,13 @@ #ifndef WeakSetInlines_h #define WeakSetInlines_h -#include "WeakSet.h" +#include "MarkedBlock.h" namespace JSC { inline WeakImpl* WeakSet::allocate(JSValue jsValue, WeakHandleOwner* weakHandleOwner, void* context) { - WeakSet& weakSet = *Heap::heap(jsValue.asCell())->weakSet(); + WeakSet& weakSet = MarkedBlock::blockFor(jsValue.asCell())->weakSet(); WeakBlock::FreeCell* allocator = weakSet.m_allocator; if (UNLIKELY(!allocator)) allocator = weakSet.findAllocator(); @@ -42,6 +42,16 @@ inline WeakImpl* WeakSet::allocate(JSValue jsValue, WeakHandleOwner* weakHandleO return new (NotNull, weakImpl) WeakImpl(jsValue, weakHandleOwner, context); } +inline void WeakBlock::finalize(WeakImpl* weakImpl) +{ + ASSERT(weakImpl->state() == WeakImpl::Dead); + weakImpl->setState(WeakImpl::Finalized); + WeakHandleOwner* weakHandleOwner = weakImpl->weakHandleOwner(); + if (!weakHandleOwner) + return; + weakHandleOwner->finalize(Handle::wrapSlot(&const_cast(weakImpl->jsValue())), weakImpl->context()); +} + } // namespace JSC #endif // WeakSetInlines_h