Auto merge of #6712 - Ms2ger:traversal, r=pcwalton

Cleanup ParallelPostorderFlowTraversal.



<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6712)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2015-07-24 20:50:55 -06:00
commit 886c08c393

View file

@ -98,8 +98,7 @@ pub type DomTraversalFunction =
pub type ChunkedFlowTraversalFunction = pub type ChunkedFlowTraversalFunction =
extern "Rust" fn(UnsafeFlowList, &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>); extern "Rust" fn(UnsafeFlowList, &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>);
pub type FlowTraversalFunction = pub type FlowTraversalFunction = extern "Rust" fn(UnsafeFlow, &SharedLayoutContext);
extern "Rust" fn(UnsafeFlow, &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>);
/// A parallel top-down DOM traversal. /// A parallel top-down DOM traversal.
pub trait ParallelPreorderDomTraversal : PreorderDomTraversal { pub trait ParallelPreorderDomTraversal : PreorderDomTraversal {
@ -238,9 +237,7 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal {
/// ///
/// The only communication between siblings is that they both /// The only communication between siblings is that they both
/// fetch-and-subtract the parent's children count. /// fetch-and-subtract the parent's children count.
fn run_parallel(&self, fn run_parallel(&self, mut unsafe_flow: UnsafeFlow) {
mut unsafe_flow: UnsafeFlow,
_: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) {
loop { loop {
// Get a real flow. // Get a real flow.
let flow: &mut FlowRef = unsafe { let flow: &mut FlowRef = unsafe {
@ -323,7 +320,7 @@ trait ParallelPreorderFlowTraversal : PreorderFlowTraversal {
// If there were no more children, start assigning block-sizes. // If there were no more children, start assigning block-sizes.
if !had_children { if !had_children {
bottom_up_func(unsafe_flow, proxy) bottom_up_func(unsafe_flow, proxy.user_data())
} }
} }
@ -336,8 +333,6 @@ trait ParallelPreorderFlowTraversal : PreorderFlowTraversal {
} }
} }
impl<'a> ParallelPostorderFlowTraversal for BubbleISizes<'a> {}
impl<'a> ParallelPreorderFlowTraversal for AssignISizes<'a> { impl<'a> ParallelPreorderFlowTraversal for AssignISizes<'a> {
fn run_parallel(&self, fn run_parallel(&self,
unsafe_flows: UnsafeFlowList, unsafe_flows: UnsafeFlowList,
@ -414,13 +409,12 @@ fn assign_inline_sizes(unsafe_flows: UnsafeFlowList,
fn assign_block_sizes_and_store_overflow( fn assign_block_sizes_and_store_overflow(
unsafe_flow: UnsafeFlow, unsafe_flow: UnsafeFlow,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { shared_layout_context: &SharedLayoutContext) {
let shared_layout_context = proxy.user_data();
let layout_context = LayoutContext::new(shared_layout_context); let layout_context = LayoutContext::new(shared_layout_context);
let assign_block_sizes_traversal = AssignBSizesAndStoreOverflow { let assign_block_sizes_traversal = AssignBSizesAndStoreOverflow {
layout_context: &layout_context, layout_context: &layout_context,
}; };
assign_block_sizes_traversal.run_parallel(unsafe_flow, proxy) assign_block_sizes_traversal.run_parallel(unsafe_flow)
} }
fn compute_absolute_positions( fn compute_absolute_positions(
@ -435,15 +429,14 @@ fn compute_absolute_positions(
} }
fn build_display_list(unsafe_flow: UnsafeFlow, fn build_display_list(unsafe_flow: UnsafeFlow,
proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>) { shared_layout_context: &SharedLayoutContext) {
let shared_layout_context = proxy.user_data();
let layout_context = LayoutContext::new(shared_layout_context); let layout_context = LayoutContext::new(shared_layout_context);
let build_display_list_traversal = BuildDisplayList { let build_display_list_traversal = BuildDisplayList {
layout_context: &layout_context, layout_context: &layout_context,
}; };
build_display_list_traversal.run_parallel(unsafe_flow, proxy); build_display_list_traversal.run_parallel(unsafe_flow);
} }
fn run_queue_with_custom_work_data_type<To,F>( fn run_queue_with_custom_work_data_type<To,F>(