ASSERT(result.isNewEntry);
// FIXME: Stop handling this case once duplicate wrappers are guaranteed not to be created.
if (!result.isNewEntry)
- result.iterator->value.dispose();
- result.iterator->value = UnsafePersistent<v8::Object>(persistent);
+ result.storedValue->value.dispose();
+ result.storedValue->value = UnsafePersistent<v8::Object>(persistent);
}
void clear()
{
+ v8::HandleScope scope(m_isolate);
while (!m_map.isEmpty()) {
// Swap out m_map on each iteration to ensure any wrappers added due to side effects of the loop are cleared.
MapType map;
map.swap(m_map);
for (typename MapType::iterator it = map.begin(); it != map.end(); ++it) {
- toWrapperTypeInfo(*(it->value.persistent()))->derefObject(it->key);
+ releaseObject(it->value.newLocal(m_isolate));
it->value.dispose();
}
}
template<>
inline void DOMWrapperMap<void>::setWeakCallback(const v8::WeakCallbackData<v8::Object, DOMWrapperMap<void> >& data)
{
- const WrapperTypeInfo* type = toWrapperTypeInfo(data.GetValue());
- ASSERT(type->derefObjectFunction);
void* key = static_cast<void*>(toNative(data.GetValue()));
- ASSERT(*(data.GetParameter()->m_map.get(key).persistent()) == data.GetValue());
+ ASSERT(*data.GetParameter()->m_map.get(key).persistent() == data.GetValue());
data.GetParameter()->removeAndDispose(key);
- type->derefObject(key);
+ releaseObject(data.GetValue());
}
} // namespace WebCore