I'm trying to fix the memory leaks in MutationObservers (<a href="http://www.w3.org/TR/dom/#mutation-observers">http://www.w3.org/TR/dom/#mutation-observers</a>), <a href="https://bugs.webkit.org/show_bug.cgi?id=93661">https://bugs.webkit.org/show_bug.cgi?id=93661</a><div>
<br></div><div>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.</div>
<div><br></div><div>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) ?</div>
<div><br></div><div>In general if someone could explain visitChildren and isReachableFromOpaqueRoots and when I want slotVistor.append or addOpaqueRoot etc. it would be very helpful.</div><div><br></div><div>- E</div>