#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();
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<Unknown>::wrapSlot(&const_cast<JSValue&>(weakImpl->jsValue())), weakImpl->context());
+}
+
} // namespace JSC
#endif // WeakSetInlines_h