diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2017-05-21 02:50:16 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2017-05-21 03:06:37 +0200 |
commit | cf6b3a0fcb79f87b1140dc118091ebe9798c0563 (patch) | |
tree | e20b40a15614019707e65a71cd3012c09dec99c5 | |
parent | e448c4a27ea780fd92804f33547c2f5f95abbf89 (diff) | |
download | servo-cf6b3a0fcb79f87b1140dc118091ebe9798c0563.tar.gz servo-cf6b3a0fcb79f87b1140dc118091ebe9798c0563.zip |
style: Simplify the rule tree GC code a bit.
-rw-r--r-- | components/style/rule_tree/mod.rs | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/components/style/rule_tree/mod.rs b/components/style/rule_tree/mod.rs index 5fd963e3d49..8eaae85cb2f 100644 --- a/components/style/rule_tree/mod.rs +++ b/components/style/rule_tree/mod.rs @@ -855,20 +855,15 @@ impl StrongRuleNode { debug_assert!(me.is_root(), "Can't call GC on a non-root node!"); while let Some(weak) = self.pop_from_free_list() { - let needs_drop = { - let node = &*weak.ptr(); - if node.refcount.load(Ordering::Relaxed) == 0 { - node.remove_from_child_list(); - true - } else { - false - } - }; - - debug!("GC'ing {:?}: {}", weak.ptr(), needs_drop); - if needs_drop { - let _ = Box::from_raw(weak.ptr()); + let node = &*weak.ptr(); + if node.refcount.load(Ordering::Relaxed) != 0 { + // Nothing to do, the node is still alive. + continue; } + + debug!("GC'ing {:?}", weak.ptr()); + node.remove_from_child_list(); + let _ = Box::from_raw(weak.ptr()); } me.free_count.store(0, Ordering::Relaxed); |