Commit e8060c10 authored by Olga Gerchikov's avatar Olga Gerchikov Committed by Commit Bot

Reduce memory regression introduced by fixing lifetime of scroll

animations change

https://chromium-review.googlesource.com/c/chromium/src/+/2223998 change
introduced memory regression as a result of adding HeapHashSet data
member to NodeRareData. This change replaces HeapHashSet with
Member<HeapHashSet...>, thus reducing additional memory from 24 to
16 bytes on windows per NodeRareData.

Bug: 1093776
Change-Id: Iaaecd9fc7d2221313f3949a790408a2c88a64b0b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2241190Reviewed-by: default avatarRobert Flack <flackr@chromium.org>
Reviewed-by: default avatarMajid Valipour <majidvp@chromium.org>
Commit-Queue: Olga Gerchikov <gerchiko@microsoft.com>
Cr-Commit-Position: refs/heads/master@{#779060}
parent e6fa0a02
......@@ -44,9 +44,8 @@
namespace blink {
struct SameSizeAsNodeRareData {
Member<void*> willbe_member_[4];
Member<void*> willbe_member_[5];
unsigned bitfields_;
HeapHashSet<Member<void*>> scroll_timelines_;
};
static_assert(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData),
......@@ -111,10 +110,14 @@ NodeRenderingData& NodeRenderingData::SharedEmptyData() {
}
void NodeRareData::RegisterScrollTimeline(ScrollTimeline* timeline) {
scroll_timelines_.insert(timeline);
if (!scroll_timelines_) {
scroll_timelines_ =
MakeGarbageCollected<HeapHashSet<Member<ScrollTimeline>>>();
}
scroll_timelines_->insert(timeline);
}
void NodeRareData::UnregisterScrollTimeline(ScrollTimeline* timeline) {
scroll_timelines_.erase(timeline);
scroll_timelines_->erase(timeline);
}
void NodeRareData::TraceAfterDispatch(blink::Visitor* visitor) const {
......
......@@ -222,7 +222,7 @@ class GC_PLUGIN_IGNORE("Manual dispatch implemented in NodeData.") NodeRareData
Member<FlatTreeNodeData> flat_tree_node_data_;
// Keeps strong scroll timeline pointers linked to this node to ensure
// the timelines are alive as long as the node is alive.
HeapHashSet<Member<ScrollTimeline>> scroll_timelines_;
Member<HeapHashSet<Member<ScrollTimeline>>> scroll_timelines_;
DISALLOW_COPY_AND_ASSIGN(NodeRareData);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment