On Apr 22, 2009, at 12:27 AM, ZHOU Xiao-bo wrote:

hi all:
     I still don't understand the purpose of the HashMap:

static DOMObjectMap& domObjects()
{
// Don't use malloc here. Calling malloc from a mark function can deadlock.
    static DOMObjectMap staticDOMObjects;
    return staticDOMObjects;
}

what kind of DOMObjects should be stored in it? And why?
I searched the source codes and I found that these classes below will do that:

Document, Event, HTMLCollection, XMLHttpRequest, CanvasGradient, CanvasPattern, CanvasRenderingContext2D, DOMCoreException, DOMImplementation, DOMParser, EventException, History, NamedNodeMap, NodeFilter, NodeIterator, NodeList, Range, RangeException, TreeWalker, XMLHttpRequestException, XMLSerializer, Clipboard

but what's the reason? Is it because these classes are essentially simple and just acting as a tool?

The hash map is to ensure that DOM wrappers are unique but created on demand, without consuming a pointer in the underlying C++ object. For DOM Nodes, we use a hash table in the Node's owner document, but in the case of non-Node objects and the Document itself (which has no owner document), we need this global hash table.

Regards,
Maciej

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to