[webkit-dev] about hashmap staticDOMObjects

Maciej Stachowiak mjs at apple.com
Wed Apr 22 14:26:49 PDT 2009


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



More information about the webkit-dev mailing list