On Nov 21, 2009, at 10:40 AM, Drew Wilson wrote: > Can anyone explain (or point me at some docs) for how the > gcPrologue/gcEpilogue stuff should work, wrt the state of the underlying > handles (what assumptions does that code make)? I guess I don't really > understand when objects are taken out of the DOMMap.
If you're talking about what happens in V8GCController: the prolog/epilog stuff that it does is, in my understanding, mostly related to temporarily grouping together the handles for objects in the same DOM tree, so that none of them will be collected before the whole tree goes away. I don't think the code there moves stuff in or out of the DOMMap. The DOM map is twiddled at other times. Objects are added to the DOM map when they need to be returned in JS form to V8, and removed when V8 calls back to tell Chrome that a weak handle's been GC'd. Disclaimer: This code is fairly nasty and even though I've messed with it for a month or two I don't feel that I fully understand it, especially the map. (I think the map code needs a redesign at some point: for example, it really frightens me that the line of code that ref()s a DOM object being added to the map is in an entirely different source file from the line that eventually deref()s it when it's removed. This makes me nervous about potential ref leak bugs.) —Jens -- Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev