For the new proxy DOM list bindings we store expandos on a separate object. The proxy holds the expando object, and the wrapper cache holds the proxy. When the proxy gets collected we make the wrapper cache store the expando object. If a new proxy is created it is stored in the cache again and holds the expando object. Since the proxy stores no state it can be collected and recreated without losing expandos. This does complicate the wrapper cache quite a bit, and makes it hard to store the new (Paris) DOM bindings in the wrapper cache. So I'd like to make the wrapper cache always hold the proxy when it has expandos. This means that we have to make the hashtable that stores the expando objects (so XPConnect can mark them) store the proxy instead.
Comment on attachment 606337 [details] [diff] [review] v1 Looks good!