[webkit-dev] Breaking cycles in mutation observers in JSC

Elliott Sprehn esprehn at chromium.org
Thu Aug 23 12:39:09 PDT 2012


I'm trying to fix the memory leaks in MutationObservers (
http://www.w3.org/TR/dom/#mutation-observers),
https://bugs.webkit.org/show_bug.cgi?id=93661

This is easy in V8 where I've put a hidden property on the MutationObserver
wrapper, and the V8MutationCallback object accesses this hidden property.
The MutationObserver is then an ActiveDOMObject which keeps the wrapper
alive as long as the observer has DOM nodes it's listening on, even if it's
unreachable from JS.

In the JSC side I'm not sure how to handle the cycle problem. Do I need to
use a JSC::Weak in JSMutationCallback and then use visitChildren on the
JSMutationObserver to call
addOpaqueRoot(thisObject->impl()->callback->jsValue) ?

In general if someone could explain visitChildren and
isReachableFromOpaqueRoots and when I want slotVistor.append or
addOpaqueRoot etc. it would be very helpful.

- E
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20120823/5a877b8d/attachment.html>


More information about the webkit-dev mailing list