bool WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, JSC::SlotVisitor& visitor) { auto& wrapper = *JSC::jsCast<JSC::JSArrayBuffer*>(handle.slot()->asCell()); if (!wrapper.hasCustomProperties()) return false; return visitor.containsOpaqueRoot(wrapper.impl()); }
void JSTestNondeterministicOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestNondeterministic* jsTestNondeterministic = jsCast<JSTestNondeterministic*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestNondeterministic->impl(), jsTestNondeterministic); jsTestNondeterministic->releaseImpl(); }
void WebCoreTypedArrayController::JSArrayBufferOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto& wrapper = *static_cast<JSC::JSArrayBuffer*>(handle.slot()->asCell()); auto& buffer = *wrapper.impl(); uncacheWrapper(*static_cast<DOMWrapperWorld*>(context), &buffer, &wrapper); buffer.deref(); }
void JSTestExceptionOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestException* jsTestException = jsCast<JSTestException*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestException->impl(), jsTestException); jsTestException->releaseImpl(); }
void JSTestTypedefsOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestTypedefs = jsCast<JSTestTypedefs*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestTypedefs->impl(), jsTestTypedefs); jsTestTypedefs->releaseImpl(); }
void JSCSSValueOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSCSSValue* jsCSSValue = jsCast<JSCSSValue*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); world.m_cssValueRoots.remove(&jsCSSValue->wrapped()); uncacheWrapper(world, &jsCSSValue->wrapped(), jsCSSValue); }
void JSTestCustomNamedGetterOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestCustomNamedGetter = jsCast<JSTestCustomNamedGetter*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestCustomNamedGetter->impl(), jsTestCustomNamedGetter); jsTestCustomNamedGetter->releaseImpl(); }
void JSTestActiveDOMObjectOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestActiveDOMObject* jsTestActiveDOMObject = jsCast<JSTestActiveDOMObject*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestActiveDOMObject->impl(), jsTestActiveDOMObject); jsTestActiveDOMObject->releaseImpl(); }
void JSattributeOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSattribute* jsattribute = jsCast<JSattribute*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsattribute->impl(), jsattribute); jsattribute->releaseImpl(); }
void JSreadonlyOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSreadonly* jsreadonly = jsCast<JSreadonly*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsreadonly->impl(), jsreadonly); jsreadonly->releaseImpl(); }
void JSTestEventConstructorOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestEventConstructor* jsTestEventConstructor = jsCast<JSTestEventConstructor*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestEventConstructor->impl(), jsTestEventConstructor); jsTestEventConstructor->releaseImpl(); }
bool JSTestInterfaceOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { auto* jsTestInterface = jsCast<JSTestInterface*>(handle.slot()->asCell()); if (jsTestInterface->wrapped().hasPendingActivity()) return true; UNUSED_PARAM(visitor); return false; }
bool JSTestNamedConstructorOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { JSTestNamedConstructor* jsTestNamedConstructor = jsCast<JSTestNamedConstructor*>(handle.slot()->asCell()); if (jsTestNamedConstructor->impl().hasPendingActivity()) return true; UNUSED_PARAM(visitor); return false; }
bool JSTestEventTargetOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { auto* jsTestEventTarget = jsCast<JSTestEventTarget*>(handle.slot()->asCell()); if (jsTestEventTarget->impl().isFiringEventListeners()) return true; UNUSED_PARAM(visitor); return false; }
void RootObject::finalize(JSC::Handle<JSC::Unknown> handle, void*) { RuntimeObject* object = static_cast<RuntimeObject*>(handle.slot()->asCell()); Ref<RootObject> protectedThis(*this); object->invalidate(); weakRemove(m_runtimeObjects, object, object); }
bool JSMutationObserverOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { for (auto* node : jsCast<JSMutationObserver*>(handle.slot()->asCell())->wrapped().observedNodes()) { if (visitor.containsOpaqueRoot(root(node))) return true; } return false; }
void JSAPIWrapperObjectHandleOwner::finalize(JSC::Handle<JSC::Unknown> handle, void*) { auto* wrapperObject = static_cast<JSC::JSAPIWrapperObject*>(handle.get().asCell()); if (!wrapperObject->wrappedObject()) return; JSC::Heap::heap(wrapperObject)->releaseSoon(std::unique_ptr<JSC::JSCGLibWrapperObject>(static_cast<JSC::JSCGLibWrapperObject*>(wrapperObject->wrappedObject()))); JSC::WeakSet::deallocate(JSC::WeakImpl::asWeakImpl(handle.slot())); }
bool JSCSSValueOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void* context, SlotVisitor& visitor) { JSCSSValue* jsCSSValue = jsCast<JSCSSValue*>(handle.slot()->asCell()); if (!jsCSSValue->hasCustomProperties()) return false; DOMWrapperWorld* world = static_cast<DOMWrapperWorld*>(context); void* root = world->m_cssValueRoots.get(&jsCSSValue->wrapped()); if (!root) return false; return visitor.containsOpaqueRoot(root); }
bool JSMutationObserverOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor, const char**reason) { for (auto* node : jsCast<JSMutationObserver*>(handle.slot()->asCell())->wrapped().observedNodes()) { if (visitor.containsOpaqueRoot(root(node))) { if (UNLIKELY(reason)) *reason = "Reachable from observed nodes"; return true; } } return false; }
bool JSNodeListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { JSNodeList* jsNodeList = jsCast<JSNodeList*>(handle.slot()->asCell()); if (!jsNodeList->hasCustomProperties()) return false; if (jsNodeList->impl().isLiveNodeList()) return visitor.containsOpaqueRoot(root(static_cast<LiveNodeList&>(jsNodeList->impl()).ownerNode())); if (jsNodeList->impl().isChildNodeList()) return visitor.containsOpaqueRoot(root(static_cast<ChildNodeList&>(jsNodeList->impl()).ownerNode())); if (jsNodeList->impl().isEmptyNodeList()) return visitor.containsOpaqueRoot(root(static_cast<EmptyNodeList&>(jsNodeList->impl()).ownerNode())); return false; }
bool JSTextTrackCueOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { JSTextTrackCue* jsTextTrackCue = jsCast<JSTextTrackCue*>(handle.slot()->asCell()); TextTrackCue& textTrackCue = jsTextTrackCue->wrapped(); // If the cue is firing event listeners, its wrapper is reachable because // the wrapper is responsible for marking those event listeners. if (textTrackCue.isFiringEventListeners()) return true; // If the cue is not associated with a track, it is not reachable. if (!textTrackCue.track()) return false; return visitor.containsOpaqueRoot(root(textTrackCue.track())); }
bool JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { auto* jsTestGenerateIsReachable = jsCast<JSTestGenerateIsReachable*>(handle.slot()->asCell()); TestGenerateIsReachable* root = &jsTestGenerateIsReachable->wrapped(); return visitor.containsOpaqueRoot(root); }
void JSattributeOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsattribute = jsCast<JSattribute*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsattribute->wrapped(), jsattribute); }
void JSTestOverloadedConstructorsOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestOverloadedConstructors = jsCast<JSTestOverloadedConstructors*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestOverloadedConstructors->wrapped(), jsTestOverloadedConstructors); }
void JSTestNamedDeleterNoIdentifierOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestNamedDeleterNoIdentifier = static_cast<JSTestNamedDeleterNoIdentifier*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestNamedDeleterNoIdentifier->wrapped(), jsTestNamedDeleterNoIdentifier); }
void JSTestMediaQueryListListenerOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { JSTestMediaQueryListListener* jsTestMediaQueryListListener = jsCast<JSTestMediaQueryListListener*>(handle.slot()->asCell()); DOMWrapperWorld& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestMediaQueryListListener->impl(), jsTestMediaQueryListListener); jsTestMediaQueryListListener->releaseImpl(); }
void JSTestActiveDOMObjectOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestActiveDOMObject = static_cast<JSTestActiveDOMObject*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestActiveDOMObject->wrapped(), jsTestActiveDOMObject); }
void JSTestStringifierNamedOperationOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestStringifierNamedOperation = static_cast<JSTestStringifierNamedOperation*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestStringifierNamedOperation->wrapped(), jsTestStringifierNamedOperation); }
void JSTestGenerateIsReachableOwner::finalize(JSC::Handle<JSC::Unknown> handle, void* context) { auto* jsTestGenerateIsReachable = jsCast<JSTestGenerateIsReachable*>(handle.slot()->asCell()); auto& world = *static_cast<DOMWrapperWorld*>(context); uncacheWrapper(world, &jsTestGenerateIsReachable->wrapped(), jsTestGenerateIsReachable); }
bool JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor) { JSTestGenerateIsReachable* jsTestGenerateIsReachable = jsCast<JSTestGenerateIsReachable*>(handle.slot()->asCell()); if (!isObservable(jsTestGenerateIsReachable)) return false; TestGenerateIsReachable* root = &jsTestGenerateIsReachable->impl(); return visitor.containsOpaqueRoot(root); }