mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Refactor common infrastructure for creating memory reports. (#36579)
This removes a bunch of duplicated code needed to support ConditionalMallocSizeOf correctly, and fixes multiple places where that code was subtly wrong (the seen pointers hashset was never cleared). Testing: Measuring https://www.nist.gov/image-gallery lots of times. Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
2a81987590
commit
5e2d42e944
11 changed files with 68 additions and 57 deletions
|
@ -21,7 +21,6 @@ use embedder_traits::EmbedderProxy;
|
|||
use hyper_serde::Serde;
|
||||
use ipc_channel::ipc::{self, IpcReceiver, IpcReceiverSet, IpcSender};
|
||||
use log::{debug, trace, warn};
|
||||
use malloc_size_of::MallocSizeOfOps;
|
||||
use net_traits::blob_url_store::parse_blob_url;
|
||||
use net_traits::filemanager_thread::FileTokenCheck;
|
||||
use net_traits::request::{Destination, RequestBuilder, RequestId};
|
||||
|
@ -32,7 +31,9 @@ use net_traits::{
|
|||
FetchChannels, FetchTaskTarget, ResourceFetchTiming, ResourceThreads, ResourceTimingType,
|
||||
WebSocketDomAction, WebSocketNetworkEvent,
|
||||
};
|
||||
use profile_traits::mem::{ProcessReports, ProfilerChan as MemProfilerChan, ReportsChan};
|
||||
use profile_traits::mem::{
|
||||
ProcessReports, ProfilerChan as MemProfilerChan, ReportsChan, perform_memory_report,
|
||||
};
|
||||
use profile_traits::time::ProfilerChan;
|
||||
use rustls::RootCertStore;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
@ -280,10 +281,11 @@ impl ResourceChannelManager {
|
|||
public_http_state: &Arc<HttpState>,
|
||||
private_http_state: &Arc<HttpState>,
|
||||
) {
|
||||
let mut ops = MallocSizeOfOps::new(servo_allocator::usable_size, None, None);
|
||||
let mut reports = public_http_state.memory_reports("public", &mut ops);
|
||||
reports.extend(private_http_state.memory_reports("private", &mut ops));
|
||||
msg.send(ProcessReports::new(reports));
|
||||
perform_memory_report(|ops| {
|
||||
let mut reports = public_http_state.memory_reports("public", ops);
|
||||
reports.extend(private_http_state.memory_reports("private", ops));
|
||||
msg.send(ProcessReports::new(reports));
|
||||
})
|
||||
}
|
||||
|
||||
fn cancellation_listener(&self, request_id: RequestId) -> Option<Arc<CancellationListener>> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue