aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/flow/inline/mod.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2025-04-18 16:05:15 -0400
committerGitHub <noreply@github.com>2025-04-18 20:05:15 +0000
commitc787688afc873e78d9526809cf7d2cde689c0ae4 (patch)
treebf852fcac1370e251e5282c331227c13c7fbd3dd /components/layout_2020/flow/inline/mod.rs
parentadd8c51f4728fbafe56781670f9ae4b1a754e094 (diff)
downloadservo-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.rs11
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 */
),