diff options
Diffstat (limited to 'components/script/script_thread.rs')
-rw-r--r-- | components/script/script_thread.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 1413a0c40dc..e5a9a0401aa 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -73,7 +73,8 @@ use js::jsapi::{JSAutoCompartment, JSContext, JS_SetWrapObjectCallbacks}; use js::jsapi::{JSTracer, SetWindowProxyClass}; use js::jsval::UndefinedValue; use js::rust::Runtime; -use mem::heap_size_of_self_and_children; +use malloc_size_of::{malloc_size_of, MallocSizeOfOps}; +use mem::malloc_size_of_including_self; use metrics::PaintTimeMetrics; use microtask::{MicrotaskQueue, Microtask}; use msg::constellation_msg::{BrowsingContextId, FrameType, PipelineId, PipelineNamespace, TopLevelBrowsingContextId}; @@ -1503,14 +1504,17 @@ impl ScriptThread { let mut path_seg = String::from("url("); let mut dom_tree_size = 0; let mut reports = vec![]; + // Servo uses vanilla jemalloc, which doesn't have a + // malloc_enclosing_size_of function. + let mut ops = MallocSizeOfOps::new(malloc_size_of, None, None); for (_, document) in self.documents.borrow().iter() { let current_url = document.url(); for child in document.upcast::<Node>().traverse_preorder() { - dom_tree_size += heap_size_of_self_and_children(&*child); + dom_tree_size += malloc_size_of_including_self(&mut ops, &*child); } - dom_tree_size += heap_size_of_self_and_children(document.window()); + dom_tree_size += malloc_size_of_including_self(&mut ops, document.window()); if reports.len() > 0 { path_seg.push_str(", "); |