style: Simplify the rule tree GC code a bit.

This commit is contained in:
Emilio Cobos Álvarez 2017-05-21 02:50:16 +02:00
parent e448c4a27e
commit cf6b3a0fcb
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C

View file

@ -855,21 +855,16 @@ impl StrongRuleNode {
debug_assert!(me.is_root(), "Can't call GC on a non-root node!"); debug_assert!(me.is_root(), "Can't call GC on a non-root node!");
while let Some(weak) = self.pop_from_free_list() { while let Some(weak) = self.pop_from_free_list() {
let needs_drop = {
let node = &*weak.ptr(); let node = &*weak.ptr();
if node.refcount.load(Ordering::Relaxed) == 0 { if node.refcount.load(Ordering::Relaxed) != 0 {
node.remove_from_child_list(); // Nothing to do, the node is still alive.
true continue;
} else {
false
} }
};
debug!("GC'ing {:?}: {}", weak.ptr(), needs_drop); debug!("GC'ing {:?}", weak.ptr());
if needs_drop { node.remove_from_child_list();
let _ = Box::from_raw(weak.ptr()); let _ = Box::from_raw(weak.ptr());
} }
}
me.free_count.store(0, Ordering::Relaxed); me.free_count.store(0, Ordering::Relaxed);