[webkit-dev] JS binding wapper pointers: inline vs. separate hash table

Maciej Stachowiak mjs at apple.com
Wed Oct 1 02:27:55 PDT 2008

On Oct 1, 2008, at 1:46 AM, Geoffrey Garen wrote:

>> In the Chrome tree, every object inheriting from RefCounted incurs  
>> an extra pointer in size, but this is clearly more than necessary  
>> since many RefCounted objects do not have bindings.
> If we believe that JS wrappers are relatively uncommon, we can store  
> them in a Node's "rare data" structure, and bloat only those  
> uncommon nodes that have JS wrappers.

Depending on exactly how common they are, this could be more net  
memory use, if it causes Nodes to have a NodeRareData structure that  
wouldn't otherwise.

> If we believe that JS wrappers are relatively common, we can store  
> them directly in a Node, since putting them in a hashtable is net  
> more memory use.

I think only a minority of nodes have wrappers, but on at least some  
pages it is likely to be a sizable minority. I did not measure though  
- should have.

> Non-Node wrappers are another story. Perhaps they are all uncommon  
> enough to go in a hash table.

I strongly suspect that is the case. On many of these sites, the  
number of CSSOM objects (inheriting from StyleBase) and NamedAttrMaps  
outnumbered the count of Nodes, and it is relatively rare to deal with  
such objects from JS.


More information about the webkit-dev mailing list