mirror of
https://github.com/servo/servo.git
synced 2025-07-31 11:10:22 +01:00
script: Include layout when collecting memory reports (#32204)
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This commit is contained in:
parent
bccbc87db7
commit
6065abcb6b
4 changed files with 13 additions and 12 deletions
|
@ -56,7 +56,7 @@ use metrics::{PaintTimeMetrics, ProfilerMetadataFactory};
|
|||
use msg::constellation_msg::{BrowsingContextId, PipelineId};
|
||||
use net_traits::image_cache::{ImageCache, UsePlaceholder};
|
||||
use parking_lot::RwLock;
|
||||
use profile_traits::mem::{Report, ReportKind, ReportsChan};
|
||||
use profile_traits::mem::{Report, ReportKind};
|
||||
use profile_traits::path;
|
||||
use profile_traits::time::{
|
||||
self as profile_time, profile, TimerMetadata, TimerMetadataFrameType, TimerMetadataReflowType,
|
||||
|
@ -508,8 +508,7 @@ impl Layout for LayoutThread {
|
|||
self.registered_painters.0.insert(name, registered_painter);
|
||||
}
|
||||
|
||||
fn collect_reports(&self, reports_chan: ReportsChan) {
|
||||
let mut reports = vec![];
|
||||
fn collect_reports(&self, reports: &mut Vec<Report>) {
|
||||
// Servo uses vanilla jemalloc, which doesn't have a
|
||||
// malloc_enclosing_size_of function.
|
||||
let mut ops = MallocSizeOfOps::new(servo_allocator::usable_size, None, None);
|
||||
|
@ -536,8 +535,6 @@ impl Layout for LayoutThread {
|
|||
kind: ReportKind::ExplicitJemallocHeapSize,
|
||||
size: malloc_size_of_persistent_local_context(&mut ops),
|
||||
});
|
||||
|
||||
reports_chan.send(reports);
|
||||
}
|
||||
|
||||
fn reflow(&mut self, script_reflow: script_layout_interface::ScriptReflow) {
|
||||
|
|
|
@ -42,7 +42,7 @@ use metrics::{PaintTimeMetrics, ProfilerMetadataFactory};
|
|||
use msg::constellation_msg::{BrowsingContextId, PipelineId};
|
||||
use net_traits::image_cache::{ImageCache, UsePlaceholder};
|
||||
use parking_lot::{ReentrantMutex, RwLock};
|
||||
use profile_traits::mem::{Report, ReportKind, ReportsChan};
|
||||
use profile_traits::mem::{Report, ReportKind};
|
||||
use profile_traits::path;
|
||||
use profile_traits::time::{
|
||||
self as profile_time, profile, TimerMetadata, TimerMetadataFrameType, TimerMetadataReflowType,
|
||||
|
@ -417,8 +417,7 @@ impl Layout for LayoutThread {
|
|||
|
||||
fn exit_now(&mut self) {}
|
||||
|
||||
fn collect_reports(&self, reports_chan: ReportsChan) {
|
||||
let mut reports = vec![];
|
||||
fn collect_reports(&self, reports: &mut Vec<Report>) {
|
||||
// Servo uses vanilla jemalloc, which doesn't have a
|
||||
// malloc_enclosing_size_of function.
|
||||
let mut ops = MallocSizeOfOps::new(servo_allocator::usable_size, None, None);
|
||||
|
@ -436,8 +435,6 @@ impl Layout for LayoutThread {
|
|||
kind: ReportKind::ExplicitJemallocHeapSize,
|
||||
size: self.stylist.size_of(&mut ops),
|
||||
});
|
||||
|
||||
reports_chan.send(reports);
|
||||
}
|
||||
|
||||
fn set_quirks_mode(&mut self, quirks_mode: QuirksMode) {
|
||||
|
|
|
@ -2556,6 +2556,13 @@ impl ScriptThread {
|
|||
|
||||
let mut reports = vec![];
|
||||
reports.extend(unsafe { get_reports(*self.get_cx(), path_seg) });
|
||||
SCRIPT_THREAD_ROOT.with(|root| {
|
||||
let script_thread = unsafe { &*root.get().unwrap() };
|
||||
let layouts = script_thread.layouts.borrow();
|
||||
for layout in layouts.values() {
|
||||
layout.collect_reports(&mut reports);
|
||||
}
|
||||
});
|
||||
reports_chan.send(reports);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ use malloc_size_of_derive::MallocSizeOf;
|
|||
use metrics::PaintTimeMetrics;
|
||||
use msg::constellation_msg::{BrowsingContextId, PipelineId};
|
||||
use net_traits::image_cache::{ImageCache, PendingImageId};
|
||||
use profile_traits::mem::ReportsChan;
|
||||
use profile_traits::mem::Report;
|
||||
use profile_traits::time;
|
||||
use script_traits::{
|
||||
ConstellationControlMsg, InitialScriptState, LayoutControlMsg, LayoutMsg, LoadData, Painter,
|
||||
|
@ -208,7 +208,7 @@ pub trait Layout {
|
|||
|
||||
/// Requests that layout measure its memory usage. The resulting reports are sent back
|
||||
/// via the supplied channel.
|
||||
fn collect_reports(&self, reports_chan: ReportsChan);
|
||||
fn collect_reports(&self, reports: &mut Vec<Report>);
|
||||
|
||||
/// Sets quirks mode for the document, causing the quirks mode stylesheet to be used.
|
||||
fn set_quirks_mode(&mut self, quirks_mode: QuirksMode);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue