mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Pass new method in CollectServoSizes for accurate DOM heap use reporting
This commit is contained in:
parent
97c12bd392
commit
7f7fc91758
7 changed files with 47 additions and 53 deletions
|
@ -4,24 +4,9 @@
|
|||
|
||||
//! Routines for handling measuring the memory usage of arbitrary DOM nodes.
|
||||
|
||||
use dom::bindings::conversions::get_dom_class;
|
||||
use dom::bindings::reflector::DomObject;
|
||||
use malloc_size_of::{MallocSizeOf, MallocSizeOfOps};
|
||||
use std::os::raw::c_void;
|
||||
|
||||
// This is equivalent to measuring a Box<T>, except that DOM objects lose their
|
||||
// associated box in order to stash their pointers in a reserved slot of their
|
||||
// JS reflector.
|
||||
#[allow(unsafe_code)]
|
||||
pub fn malloc_size_of_including_self<T: DomObject + MallocSizeOf>(
|
||||
ops: &mut MallocSizeOfOps, obj: &T) -> usize
|
||||
{
|
||||
unsafe {
|
||||
let class = get_dom_class(obj.reflector().get_jsobject().get()).unwrap();
|
||||
(class.malloc_size_of)(ops, obj as *const T as *const c_void)
|
||||
}
|
||||
}
|
||||
|
||||
/// Used by codegen to include the pointer to the `MallocSizeOf` implementation of each
|
||||
/// IDL interface. This way we don't have to find the most-derived interface of DOM
|
||||
/// objects by hand in code.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue