During non-GC marking, we visit keys and values in a WeakMap. Visiting values is nice because it means that the reachability relation implied by JS_TraceChildren is a strict subset of the real reachability relation, without the overhead of actually marking keys to get the true reachability relation. However, I can't really see any justification for visiting keys, as there's never any path from a WeakMap to the key that it contains, so let's get rid of that. See Bug 681104 for a list of non-GCmarking clients that use this. It looks to me like they should all be okay with this change.
Try run of this came back looking okay.
Try run for 59444eacb69a is complete. Detailed breakdown of the results available here: http://tbpl.allizom.org/?tree=Try&usebuildbot=1&rev=59444eacb69a Results (out of 152 total builds): exception: 1 success: 143 warnings: 7 failure: 1 Builds available at http://email@example.com
Comment on attachment 558160 [details] [diff] [review] don't visit keys in markEntry OK, looks good. While you're in here, would you please fix the comment about markEntryIfLive, just above the part you modified? It says: // A typical definition of markIteratively would be: but the method name has changed; it's not markIteratively anymore.
Will do, thanks!
For the post-verifier, we really need the keys to be visited as well. Bug 772229
In the interest of completeness, I should say that I have no idea why I decided we should not visit keys. But I was quite convinced of it at the time...