void markDOMNodeWrapper(MarkStack& markStack, Document* document, Node* node) { if (document) { JSWrapperCacheMap& wrapperCacheMap = document->wrapperCacheMap(); for (JSWrapperCacheMap::iterator iter = wrapperCacheMap.begin(); iter != wrapperCacheMap.end(); ++iter) { if (HandleSlot wrapperSlot = iter->second->getSlot(node)) markStack.deprecatedAppend(wrapperSlot); } return; } for (JSGlobalDataWorldIterator worldIter(JSDOMWindow::commonJSGlobalData()); worldIter; ++worldIter) { if (HandleSlot wrapperSlot = worldIter->m_wrappers.getSlot(node)) markStack.deprecatedAppend(wrapperSlot); } }
void markDOMObjectWrapper(MarkStack& markStack, JSGlobalData& globalData, void* object) { // FIXME: This could be changed to only mark wrappers that are "observable" // as markDOMNodesForDocument does, allowing us to collect more wrappers, // but doing this correctly would be challenging. if (!object) return; for (JSGlobalDataWorldIterator worldIter(&globalData); worldIter; ++worldIter) { if (HandleSlot wrapperSlot = worldIter->m_wrappers.getSlot(object)) markStack.deprecatedAppend(wrapperSlot); } }
void markDOMNodesForDocument(MarkStack& markStack, Document* document) { JSWrapperCacheMap& wrapperCacheMap = document->wrapperCacheMap(); for (JSWrapperCacheMap::iterator wrappersIter = wrapperCacheMap.begin(); wrappersIter != wrapperCacheMap.end(); ++wrappersIter) { DOMWrapperWorld* world = wrappersIter->first; JSWrapperCache* nodeDict = wrappersIter->second; JSWrapperCache::iterator nodeEnd = nodeDict->end(); for (JSWrapperCache::iterator nodeIt = nodeDict->begin(); nodeIt != nodeEnd; ++nodeIt) { if (isObservableThroughDOM(nodeIt.get().second, world)) markStack.deprecatedAppend(nodeIt.getSlot().second); } } }
void JSStaticScopeObject::markChildren(MarkStack& markStack) { JSVariableObject::markChildren(markStack); markStack.deprecatedAppend(&d()->registerStore); }