[FragmentItem] Make NGFragmentItem not a DisplayItemClient
Making |NGFragmentItem| not a |DisplayItemClient| has two benefits: 1. Give a persistent |DisplayItemClientId| across multiple layout cycles. 2. Allow making |Vector<NGFragmentItem>| instead of |Vector<scoped_refptr<NGFragmentItem>>|, because a |Vector| of |DisplayItemClient| is not allowed. This change is expected to reduce the memory allocation cost, which is high for text-heavy pages. This patch is only for 1. The work for 2 will be in following patches. Still, this patch improves `blink_perf.paint/ paint-offset-changes` microbenchmark by ~10%: https://pinpoint-dot-chromeperf.appspot.com/job/15b8f60a120000 https://pinpoint-dot-chromeperf.appspot.com/job/14e61bb6120000 and slight positive changes to blink_perf.layout, probably due to simpler paint invalidations: https://pinpoint-dot-chromeperf.appspot.com/job/17d3126c120000 This patch is on top of following foudnation patches: * r770260 <crrev.com/c/2207948> supported |wtf_size_t| for fragment id. * r770637 <crrev.com/c/2209774> added |NGFragment:: FragmentId()|. Bug: 982194 Change-Id: I1cb5e2633bd591723632f1acb0cbb09ab4d77f83 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2208586Reviewed-by:Xianzhu Wang <wangxianzhu@chromium.org> Reviewed-by:
Yoshifumi Inoue <yosin@chromium.org> Reviewed-by:
Morten Stenshorne <mstensho@chromium.org> Commit-Queue: Koji Ishii <kojii@chromium.org> Cr-Commit-Position: refs/heads/master@{#771601}
Showing
Please register or sign in to comment