mirror of
https://github.com/servo/servo.git
synced 2025-08-04 13:10:20 +01:00
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:
commit
886c08c393
1 changed files with 7 additions and 14 deletions
|
@ -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>(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue