зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1542762 - Use an explicit stack to measure rule tree memory usage. r=heycam
A patch of mine that makes us measure the rule tree more often triggers this. Differential Revision: https://phabricator.services.mozilla.com/D26595 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
e2b539cb52
Коммит
24a689246b
|
@ -75,8 +75,15 @@ impl Drop for RuleTree {
|
|||
#[cfg(feature = "gecko")]
|
||||
impl MallocSizeOf for RuleTree {
|
||||
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
|
||||
let mut n = unsafe { ops.malloc_size_of(self.root.ptr()) };
|
||||
n += self.root.get().size_of(ops);
|
||||
let mut n = 0;
|
||||
let mut stack = SmallVec::<[_; 32]>::new();
|
||||
stack.push(self.root.downgrade());
|
||||
|
||||
while let Some(node) = stack.pop() {
|
||||
n += unsafe { ops.malloc_size_of(node.ptr()) };
|
||||
stack.extend(unsafe { (*node.ptr()).iter_children() });
|
||||
}
|
||||
|
||||
n
|
||||
}
|
||||
}
|
||||
|
@ -947,18 +954,6 @@ impl RuleNode {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "gecko")]
|
||||
impl MallocSizeOf for RuleNode {
|
||||
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize {
|
||||
let mut n = 0;
|
||||
for child in self.iter_children() {
|
||||
n += unsafe { ops.malloc_size_of(child.ptr()) };
|
||||
n += unsafe { (*child.ptr()).size_of(ops) };
|
||||
}
|
||||
n
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct WeakRuleNode {
|
||||
p: ptr::NonNull<RuleNode>,
|
||||
|
|
Загрузка…
Ссылка в новой задаче