diff options
Diffstat (limited to 'components/layout/parallel.rs')
-rw-r--r-- | components/layout/parallel.rs | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/components/layout/parallel.rs b/components/layout/parallel.rs index 65bf7fb0eae..748f84d1a0d 100644 --- a/components/layout/parallel.rs +++ b/components/layout/parallel.rs @@ -8,7 +8,7 @@ #![allow(unsafe_code)] -use context::{LayoutContext, SharedLayoutContextWrapper, SharedLayoutContext}; +use context::{LayoutContext, SharedLayoutContext}; use flow::{Flow, MutableFlowUtils, PreorderFlowTraversal, PostorderFlowTraversal}; use flow; use flow_ref::FlowRef; @@ -88,29 +88,29 @@ pub type UnsafeFlowList = (Box<Vec<UnsafeLayoutNode>>, usize); pub type ChunkedDomTraversalFunction = extern "Rust" fn(UnsafeLayoutNodeList, - &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeLayoutNodeList>); + &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>); pub type DomTraversalFunction = extern "Rust" fn(UnsafeLayoutNode, - &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeLayoutNodeList>); + &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>); pub type ChunkedFlowTraversalFunction = - extern "Rust" fn(UnsafeFlowList, &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>); + extern "Rust" fn(UnsafeFlowList, &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>); pub type FlowTraversalFunction = - extern "Rust" fn(UnsafeFlow, &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>); + extern "Rust" fn(UnsafeFlow, &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>); /// A parallel top-down DOM traversal. pub trait ParallelPreorderDomTraversal : PreorderDomTraversal { fn run_parallel(&self, nodes: UnsafeLayoutNodeList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeLayoutNodeList>); + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>); #[inline(always)] fn run_parallel_helper( &self, unsafe_nodes: UnsafeLayoutNodeList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeLayoutNodeList>, + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>, top_down_func: ChunkedDomTraversalFunction, bottom_up_func: DomTraversalFunction) { let mut discovered_child_nodes = Vec::new(); @@ -169,7 +169,7 @@ trait ParallelPostorderDomTraversal : PostorderDomTraversal { /// fetch-and-subtract the parent's children count. fn run_parallel(&self, mut unsafe_node: UnsafeLayoutNode, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeLayoutNodeList>) { + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>) { loop { // Get a real layout node. let node: LayoutNode = unsafe { @@ -179,7 +179,7 @@ trait ParallelPostorderDomTraversal : PostorderDomTraversal { // Perform the appropriate operation. self.process(node); - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let parent = match node.layout_parent_node(layout_context.shared) { @@ -239,7 +239,7 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal { /// fetch-and-subtract the parent's children count. fn run_parallel(&self, mut unsafe_flow: UnsafeFlow, - _: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>) { + _: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { loop { unsafe { // Get a real flow. @@ -285,14 +285,14 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal { trait ParallelPreorderFlowTraversal : PreorderFlowTraversal { fn run_parallel(&self, unsafe_flows: UnsafeFlowList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>); + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>); fn should_record_thread_ids(&self) -> bool; #[inline(always)] fn run_parallel_helper(&self, unsafe_flows: UnsafeFlowList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>, + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>, top_down_func: ChunkedFlowTraversalFunction, bottom_up_func: FlowTraversalFunction) { let mut discovered_child_flows = Vec::new(); @@ -338,7 +338,7 @@ impl<'a> ParallelPostorderFlowTraversal for BubbleISizes<'a> {} impl<'a> ParallelPreorderFlowTraversal for AssignISizes<'a> { fn run_parallel(&self, unsafe_flows: UnsafeFlowList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>) { + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { self.run_parallel_helper(unsafe_flows, proxy, assign_inline_sizes, @@ -355,7 +355,7 @@ impl<'a> ParallelPostorderFlowTraversal for AssignBSizesAndStoreOverflow<'a> {} impl<'a> ParallelPreorderFlowTraversal for ComputeAbsolutePositions<'a> { fn run_parallel(&self, unsafe_flows: UnsafeFlowList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper, UnsafeFlowList>) { + proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>) { self.run_parallel_helper(unsafe_flows, proxy, compute_absolute_positions, @@ -374,14 +374,14 @@ impl<'a> ParallelPostorderDomTraversal for ConstructFlows<'a> {} impl <'a> ParallelPreorderDomTraversal for RecalcStyleForNode<'a> { fn run_parallel(&self, unsafe_nodes: UnsafeLayoutNodeList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper, UnsafeLayoutNodeList>) { + proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>) { self.run_parallel_helper(unsafe_nodes, proxy, recalc_style, construct_flows) } } fn recalc_style(unsafe_nodes: UnsafeLayoutNodeList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper, UnsafeLayoutNodeList>) { - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>) { + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let recalc_style_for_node_traversal = RecalcStyleForNode { layout_context: &layout_context, @@ -390,8 +390,8 @@ fn recalc_style(unsafe_nodes: UnsafeLayoutNodeList, } fn construct_flows(unsafe_node: UnsafeLayoutNode, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper, UnsafeLayoutNodeList>) { - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>) { + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let construct_flows_traversal = ConstructFlows { layout_context: &layout_context, @@ -400,8 +400,8 @@ fn construct_flows(unsafe_node: UnsafeLayoutNode, } fn assign_inline_sizes(unsafe_flows: UnsafeFlowList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>) { - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let assign_inline_sizes_traversal = AssignISizes { layout_context: &layout_context, @@ -411,8 +411,8 @@ fn assign_inline_sizes(unsafe_flows: UnsafeFlowList, fn assign_block_sizes_and_store_overflow( unsafe_flow: UnsafeFlow, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper,UnsafeFlowList>) { - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let assign_block_sizes_traversal = AssignBSizesAndStoreOverflow { layout_context: &layout_context, @@ -422,8 +422,8 @@ fn assign_block_sizes_and_store_overflow( fn compute_absolute_positions( unsafe_flows: UnsafeFlowList, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper, UnsafeFlowList>) { - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>) { + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let compute_absolute_positions_traversal = ComputeAbsolutePositions { layout_context: &layout_context, @@ -432,8 +432,8 @@ fn compute_absolute_positions( } fn build_display_list(unsafe_flow: UnsafeFlow, - proxy: &mut WorkerProxy<SharedLayoutContextWrapper, UnsafeFlowList>) { - let shared_layout_context = unsafe { &*(proxy.user_data().0) }; + proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>) { + let shared_layout_context = proxy.user_data(); let layout_context = LayoutContext::new(shared_layout_context); let build_display_list_traversal = BuildDisplayList { @@ -444,20 +444,20 @@ fn build_display_list(unsafe_flow: UnsafeFlow, } fn run_queue_with_custom_work_data_type<To,F>( - queue: &mut WorkQueue<SharedLayoutContextWrapper, WorkQueueData>, + queue: &mut WorkQueue<SharedLayoutContext, WorkQueueData>, callback: F, shared_layout_context: &SharedLayoutContext) - where To: 'static + Send, F: FnOnce(&mut WorkQueue<SharedLayoutContextWrapper,To>) { - let queue: &mut WorkQueue<SharedLayoutContextWrapper,To> = unsafe { + where To: 'static + Send, F: FnOnce(&mut WorkQueue<SharedLayoutContext,To>) { + let queue: &mut WorkQueue<SharedLayoutContext,To> = unsafe { mem::transmute(queue) }; callback(queue); - queue.run(SharedLayoutContextWrapper(shared_layout_context as *const _)); + queue.run(shared_layout_context); } pub fn traverse_dom_preorder(root: LayoutNode, shared_layout_context: &SharedLayoutContext, - queue: &mut WorkQueue<SharedLayoutContextWrapper, WorkQueueData>) { + queue: &mut WorkQueue<SharedLayoutContext, WorkQueueData>) { run_queue_with_custom_work_data_type(queue, |queue| { queue.push(WorkUnit { fun: recalc_style, @@ -471,7 +471,7 @@ pub fn traverse_flow_tree_preorder( profiler_metadata: ProfilerMetadata, time_profiler_chan: time::ProfilerChan, shared_layout_context: &SharedLayoutContext, - queue: &mut WorkQueue<SharedLayoutContextWrapper, WorkQueueData>) { + queue: &mut WorkQueue<SharedLayoutContext, WorkQueueData>) { if opts::get().bubble_inline_sizes_separately { let layout_context = LayoutContext::new(shared_layout_context); let bubble_inline_sizes = BubbleISizes { layout_context: &layout_context }; @@ -494,7 +494,7 @@ pub fn build_display_list_for_subtree( profiler_metadata: ProfilerMetadata, time_profiler_chan: time::ProfilerChan, shared_layout_context: &SharedLayoutContext, - queue: &mut WorkQueue<SharedLayoutContextWrapper, WorkQueueData>) { + queue: &mut WorkQueue<SharedLayoutContext, WorkQueueData>) { run_queue_with_custom_work_data_type(queue, |queue| { profile(time::ProfilerCategory::LayoutParallelWarmup, profiler_metadata, time_profiler_chan, || { |