diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2015-12-16 23:18:30 +0530 |
---|---|---|
committer | bors-servo <lbergstrom+bors@mozilla.com> | 2015-12-16 23:18:30 +0530 |
commit | bc7158310ce8abf6605840f1c23013640703e285 (patch) | |
tree | 788e1134def020d1406ef3f9f098edb4fd863f99 /components/layout/layout_task.rs | |
parent | 39b205daccb96ebfcc5b396fc828381fa2a8c252 (diff) | |
parent | 2ee446de5d987c911f91dafa499d8a9f7df61995 (diff) | |
download | servo-bc7158310ce8abf6605840f1c23013640703e285.tar.gz servo-bc7158310ce8abf6605840f1c23013640703e285.zip |
Auto merge of #8903 - KiChjang:layout-reporter-redirect, r=nox
fix for Layout memory reporter uses pre-redirect url
Rebase of #7612.
Fixes #6872.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8903)
<!-- Reviewable:end -->
Diffstat (limited to 'components/layout/layout_task.rs')
-rw-r--r-- | components/layout/layout_task.rs | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/components/layout/layout_task.rs b/components/layout/layout_task.rs index 35a78594034..4f93a147e95 100644 --- a/components/layout/layout_task.rs +++ b/components/layout/layout_task.rs @@ -55,6 +55,7 @@ use script_traits::{ConstellationControlMsg, LayoutControlMsg, OpaqueScriptLayou use sequential; use serde_json; use std::borrow::ToOwned; +use std::cell::RefCell; use std::collections::HashMap; use std::collections::hash_state::DefaultState; use std::mem::transmute; @@ -119,7 +120,7 @@ pub struct LayoutTask { id: PipelineId, /// The URL of the pipeline that we belong to. - url: Url, + url: RefCell<Url>, /// Is the current reflow of an iframe, as opposed to a root window? is_iframe: bool, @@ -404,7 +405,7 @@ impl LayoutTask { LayoutTask { id: id, - url: url, + url: RefCell::new(url), is_iframe: is_iframe, port: port, pipeline_port: pipeline_receiver, @@ -567,7 +568,7 @@ impl LayoutTask { }; let mut layout_context = self.build_shared_layout_context(&*rw_data, false, - &self.url, + &self.url.borrow(), reflow_info.goal); self.perform_post_style_recalc_layout_passes(&reflow_info, @@ -625,6 +626,9 @@ impl LayoutTask { Msg::CreateLayoutTask(info) => { self.create_layout_task(info) } + Msg::SetFinalUrl(final_url) => { + *self.url.borrow_mut() = final_url; + }, Msg::PrepareToExit(response_chan) => { self.prepare_to_exit(response_chan); return false @@ -647,15 +651,16 @@ impl LayoutTask { // FIXME(njn): Just measuring the display tree for now. let rw_data = possibly_locked_rw_data.lock(); let stacking_context = rw_data.stacking_context.as_ref(); + let ref formatted_url = format!("url({})", *self.url.borrow()); reports.push(Report { - path: path![format!("url({})", self.url), "layout-task", "display-list"], + path: path![formatted_url, "layout-task", "display-list"], kind: ReportKind::ExplicitJemallocHeapSize, size: stacking_context.map_or(0, |sc| sc.heap_size_of_children()), }); // The LayoutTask has a context in TLS... reports.push(Report { - path: path![format!("url({})", self.url), "layout-task", "local-context"], + path: path![formatted_url, "layout-task", "local-context"], kind: ReportKind::ExplicitJemallocHeapSize, size: heap_size_of_local_context(), }); @@ -665,7 +670,7 @@ impl LayoutTask { let sizes = traversal.heap_size_of_tls(heap_size_of_local_context); for (i, size) in sizes.iter().enumerate() { reports.push(Report { - path: path![format!("url({})", self.url), + path: path![formatted_url, format!("layout-worker-{}-local-context", i)], kind: ReportKind::ExplicitJemallocHeapSize, size: *size, @@ -912,7 +917,7 @@ impl LayoutTask { let document = unsafe { ServoLayoutNode::new(&data.document) }; let document = document.as_document().unwrap(); - debug!("layout: received layout request for: {}", self.url.serialize()); + debug!("layout: received layout request for: {}", self.url.borrow().serialize()); let mut rw_data = possibly_locked_rw_data.lock(); @@ -943,6 +948,8 @@ impl LayoutTask { Some(x) => x, }; + debug!("layout: received layout request for: {}", + self.url.borrow().serialize()); if log_enabled!(log::LogLevel::Debug) { node.dump(); } @@ -1007,7 +1014,7 @@ impl LayoutTask { // Create a layout context for use throughout the following passes. let mut shared_layout_context = self.build_shared_layout_context(&*rw_data, viewport_size_changed, - &self.url, + &self.url.borrow(), data.reflow_info.goal); if node.is_dirty() || node.has_dirty_descendants() { @@ -1120,7 +1127,7 @@ impl LayoutTask { let mut layout_context = self.build_shared_layout_context(&*rw_data, false, - &self.url, + &self.url.borrow(), reflow_info.goal); self.perform_post_main_layout_passes(&reflow_info, &mut *rw_data, &mut layout_context); @@ -1144,7 +1151,7 @@ impl LayoutTask { let mut layout_context = self.build_shared_layout_context(&*rw_data, false, - &self.url, + &self.url.borrow(), reflow_info.goal); if let Some(mut root_flow) = self.root_flow.clone() { @@ -1175,7 +1182,7 @@ impl LayoutTask { let mut layout_context = self.build_shared_layout_context(&*rw_data, false, - &self.url, + &self.url.borrow(), reflow_info.goal); // No need to do a style recalc here. @@ -1299,7 +1306,7 @@ impl LayoutTask { /// Returns profiling information which is passed to the time profiler. fn profiler_metadata(&self) -> Option<TimerMetadata> { Some(TimerMetadata { - url: self.url.serialize(), + url: self.url.borrow().serialize(), iframe: if self.is_iframe { TimerMetadataFrameType::IFrame } else { |