diff options
author | Josh Matthews <josh@joshmatthews.net> | 2025-04-18 16:05:15 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-18 20:05:15 +0000 |
commit | c787688afc873e78d9526809cf7d2cde689c0ae4 (patch) | |
tree | bf852fcac1370e251e5282c331227c13c7fbd3dd /components/layout_2020/flow/inline/mod.rs | |
parent | add8c51f4728fbafe56781670f9ae4b1a754e094 (diff) | |
download | servo-c787688afc873e78d9526809cf7d2cde689c0ae4.tar.gz servo-c787688afc873e78d9526809cf7d2cde689c0ae4.zip |
layout: Report memory usage for fragment and box trees. (#36553)
Add memory reporter integration for the fragment and box trees that are
persisted in the layout thread.
Testing: Looked at the numbers for https://servo.org and
https://html.spec.whatwg.org/. The former was very small, but the latter
was 700mb.
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
Diffstat (limited to 'components/layout_2020/flow/inline/mod.rs')
-rw-r--r-- | components/layout_2020/flow/inline/mod.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/components/layout_2020/flow/inline/mod.rs b/components/layout_2020/flow/inline/mod.rs index 7564b5004c6..490917d95a3 100644 --- a/components/layout_2020/flow/inline/mod.rs +++ b/components/layout_2020/flow/inline/mod.rs @@ -88,6 +88,7 @@ use line::{ TextRunLineItem, }; use line_breaker::LineBreaker; +use malloc_size_of_derive::MallocSizeOf; use range::Range; use servo_arc::Arc; use style::Zero; @@ -136,7 +137,7 @@ use crate::{ConstraintSpace, ContainingBlock, PropagatedBoxTreeData}; static FONT_SUBSCRIPT_OFFSET_RATIO: f32 = 0.20; static FONT_SUPERSCRIPT_OFFSET_RATIO: f32 = 0.34; -#[derive(Debug)] +#[derive(Debug, MallocSizeOf)] pub(crate) struct InlineFormattingContext { /// All [`InlineItem`]s in this [`InlineFormattingContext`] stored in a flat array. /// [`InlineItem::StartInlineBox`] and [`InlineItem::EndInlineBox`] allow representing @@ -173,14 +174,14 @@ pub(crate) struct InlineFormattingContext { } /// A collection of data used to cache [`FontMetrics`] in the [`InlineFormattingContext`] -#[derive(Debug)] +#[derive(Debug, MallocSizeOf)] pub(crate) struct FontKeyAndMetrics { pub key: FontInstanceKey, pub pt_size: Au, pub metrics: FontMetrics, } -#[derive(Debug)] +#[derive(Debug, MallocSizeOf)] pub(crate) enum InlineItem { StartInlineBox(ArcRefCell<InlineBox>), EndInlineBox, @@ -189,9 +190,9 @@ pub(crate) enum InlineItem { ArcRefCell<AbsolutelyPositionedBox>, usize, /* offset_in_text */ ), - OutOfFlowFloatBox(Arc<FloatBox>), + OutOfFlowFloatBox(#[conditional_malloc_size_of] Arc<FloatBox>), Atomic( - Arc<IndependentFormattingContext>, + #[conditional_malloc_size_of] Arc<IndependentFormattingContext>, usize, /* offset_in_text */ Level, /* bidi_level */ ), |