* SUMMARY Not all transitively dominated nodes display their retained size. * TEST <script> class Person { constructor(name) { this.name = name; } } class Group { constructor(...members) { this.members = members; } } let shared = new Person("Parent"); let p1 = new Person("Alpha"); let p2 = new Person("Beta"); let p3 = new Person("Gamma"); p1.parent = p2.parent = p3.parent = shared; shared = null; console.takeHeapSnapshot("before"); window.group = new Group(p1, p2, p3); setTimeout(() => { console.takeHeapSnapshot("after"); }); </script> * STEPS TO REPRODUCE 1. Inspect test page 2. Show timeline tab 3. Show JavaScript allocations Timeline 4. Reload 5. Show snapshot diff of before + after 6. Expand Objects => The Group object should transitively retain the shared "Parent" object, but it doesn't appear to.
<rdar://problem/26528515>
Created attachment 280013 [details] [PATCH] Proposed Fix Oops... I remember experimenting with different depths, but unintentionally it seems a fixed depth of 1-2 is what landed. We should go down as far as possible for the transitive cases.
Comment on attachment 280013 [details] [PATCH] Proposed Fix Clearing flags on attachment: 280013 Committed r201477: <http://trac.webkit.org/changeset/201477>
All reviewed patches have been landed. Closing bug.