зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1696981 [wpt PR 27892] - [Element Reflection] explicitly set attr-element should not prevent GC., a=testonly
Automatic update from web-platform-tests [Element Reflection] explicitly set attr-element should not prevent GC. An explicitly set attr-element is an internal reference from one element to other element(s). This internal reference is then only exposed if that reference relationship is considered valid, otherwise the accessors will "lie" and pretend that the underlying reference is not set by returning appropriate default values. A relationship can only be valid if the referenced element is inserted into the DOM, in which case the reference from its DOM parent will keep it alive. If a referenced element is not inserted into the DOM, the only way it can later become a valid and exposed reference is if there is another valid reference somewhere (e.g. inside Javascript) which will be used to insert the referenced element into the DOM at a later point. If a referenced element is not currently within the DOM, then the only way it can later become valid and exposed is by being inserted into the DOM, which requires another reference somewhere (e.g. within Javascript) to be used to insert into the DOM. This means that if no other references exist, then the referenced element(s) can be safely garbage collected as this reference is in an invalid state (referenced element not in DOM), and we can never reach a valid state (no other references). Updating internal maps to store WeakMember(s) rather than Member(s). This necessitated a move from HeapVector to HeapLinkedHashSet, as HeapVector does not support WeakMember(s) as elements. The array setters/getters perform conversion between HeapVector and HeapLinkedHashSet to keep the V8 bindings happy. Change-Id: If9733a8affaf9b0b74b705115909627c1dd8e173 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2695010 Reviewed-by: Kent Tamura <tkent@chromium.org> Reviewed-by: Alice Boxhall <aboxhall@chromium.org> Reviewed-by: Meredith Lane <meredithl@chromium.org> Commit-Queue: Chris Hall <chrishall@chromium.org> Cr-Commit-Position: refs/heads/master@{#860058} -- wpt-commits: 166fdd4a0a8db278e825763791055c8d0b1cf6ef wpt-pr: 27892
This commit is contained in:
Родитель
3fa68581cb
Коммит
14c656dbfb
|
@ -708,4 +708,17 @@
|
|||
}, "Cross-document references and moves.");
|
||||
</script>
|
||||
|
||||
<!-- TODO(chrishall): add additional GC test covering:
|
||||
if an element is in an invalid scope but attached to the document, it's
|
||||
not GC'd;
|
||||
-->
|
||||
|
||||
<!-- TODO(chrishall): add additional GC test covering:
|
||||
if an element is not attached to the document, but is in a tree fragment
|
||||
which is not GC'd because there is a script reference to another element
|
||||
in the tree fragment, and the relationship is valid because it is between
|
||||
two elements in that tree fragment, the relationship is exposed *and* the
|
||||
element is not GC'd
|
||||
-->
|
||||
|
||||
</html>
|
||||
|
|
Загрузка…
Ссылка в новой задаче