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