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); }
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); }