mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Reduce the amount of code in the unsafe block in ParallelPostorderFlowTraversal::run_parallel.
This commit is contained in:
parent
46b36242a3
commit
5d36fbca29
1 changed files with 31 additions and 29 deletions
|
@ -242,9 +242,10 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal {
|
|||
mut unsafe_flow: UnsafeFlow,
|
||||
_: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) {
|
||||
loop {
|
||||
unsafe {
|
||||
// Get a real flow.
|
||||
let flow: &mut FlowRef = mem::transmute(&mut unsafe_flow);
|
||||
let flow: &mut FlowRef = unsafe {
|
||||
mem::transmute(&mut unsafe_flow)
|
||||
};
|
||||
|
||||
// Perform the appropriate traversal.
|
||||
if self.should_process(&mut **flow) {
|
||||
|
@ -268,7 +269,9 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal {
|
|||
// No, we're not at the root yet. Then are we the last child
|
||||
// of our parent to finish processing? If so, we can continue
|
||||
// on with our parent; otherwise, we've gotta wait.
|
||||
let parent: &mut FlowRef = mem::transmute(&mut unsafe_parent);
|
||||
let parent: &mut FlowRef = unsafe {
|
||||
mem::transmute(&mut unsafe_parent)
|
||||
};
|
||||
let parent_base = flow::mut_base(&mut **parent);
|
||||
if parent_base.parallel.children_count.fetch_sub(1, Ordering::Relaxed) == 1 {
|
||||
// We were the last child of our parent. Reflow our parent.
|
||||
|
@ -280,7 +283,6 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A parallel top-down flow traversal.
|
||||
trait ParallelPreorderFlowTraversal : PreorderFlowTraversal {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue