Avoid memmoving the large smallvec in Parallel.rs.

MozReview-Commit-ID: 7nzjMwOmszZ
This commit is contained in:
Bobby Holley 2017-07-15 14:07:02 -07:00
parent 9d78008acb
commit 2a58c0768b

View file

@ -29,7 +29,6 @@ use rayon;
use scoped_tls::ScopedTLS; use scoped_tls::ScopedTLS;
use smallvec::SmallVec; use smallvec::SmallVec;
use std::borrow::Borrow; use std::borrow::Borrow;
use std::mem;
use time; use time;
use traversal::{DomTraversal, PerLevelTraversalData, PreTraverseToken}; use traversal::{DomTraversal, PerLevelTraversalData, PreTraverseToken};
@ -187,10 +186,9 @@ fn top_down_dom<'a, 'scope, E, D>(nodes: &'a [SendNode<E::ConcreteNode>],
// //
// Which are not at all uncommon. // Which are not at all uncommon.
if !discovered_child_nodes.is_empty() { if !discovered_child_nodes.is_empty() {
let children = mem::replace(&mut discovered_child_nodes, Default::default());
let mut traversal_data_copy = traversal_data.clone(); let mut traversal_data_copy = traversal_data.clone();
traversal_data_copy.current_dom_depth += 1; traversal_data_copy.current_dom_depth += 1;
traverse_nodes(&*children, traverse_nodes(&*discovered_child_nodes,
DispatchMode::NotTailCall, DispatchMode::NotTailCall,
recursion_depth, recursion_depth,
root, root,
@ -199,6 +197,7 @@ fn top_down_dom<'a, 'scope, E, D>(nodes: &'a [SendNode<E::ConcreteNode>],
pool, pool,
traversal, traversal,
tls); tls);
discovered_child_nodes.clear();
} }
let node = **n; let node = **n;