Auto merge of #14181 - frewsxcv:opt-clone, r=nox

Don't unnecessarily clone entire `opts::Opt` structure.

`opts::Opt` is a pretty big structure, so cloning everything is
excessive when we only need a few items.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14181)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-11-12 05:56:59 -06:00 committed by GitHub
commit 2d0c7166f1
2 changed files with 14 additions and 7 deletions

View file

@ -87,9 +87,12 @@ use profile::time as profile_time;
use profile_traits::mem;
use profile_traits::time;
use script_traits::{ConstellationMsg, SWManagerSenders, ScriptMsg};
use std::borrow::Cow;
use std::cmp::max;
use std::path::PathBuf;
use std::rc::Rc;
use std::sync::mpsc::Sender;
use url::Url;
use util::opts;
use util::prefs::PREFS;
use util::resource_files::resources_dir_path;
@ -177,7 +180,9 @@ impl<Window> Browser<Window> where Window: WindowMethods + 'static {
// Create the constellation, which maintains the engine
// pipelines, including the script and layout threads, as well
// as the navigation context.
let (constellation_chan, sw_senders) = create_constellation(opts.clone(),
let (constellation_chan, sw_senders) = create_constellation(opts.user_agent.clone(),
opts.config_dir.clone(),
opts.url.clone(),
compositor_proxy.clone_compositor_proxy(),
time_profiler_chan.clone(),
mem_profiler_chan.clone(),
@ -242,7 +247,9 @@ impl<Window> Browser<Window> where Window: WindowMethods + 'static {
}
}
fn create_constellation(opts: opts::Opts,
fn create_constellation(user_agent: Cow<'static, str>,
config_dir: Option<PathBuf>,
url: Option<Url>,
compositor_proxy: Box<CompositorProxy + Send>,
time_profiler_chan: time::ProfilerChan,
mem_profiler_chan: mem::ProfilerChan,
@ -254,10 +261,10 @@ fn create_constellation(opts: opts::Opts,
let bluetooth_thread: IpcSender<BluetoothRequest> = BluetoothThreadFactory::new();
let (public_resource_threads, private_resource_threads) =
new_resource_threads(opts.user_agent,
new_resource_threads(user_agent,
devtools_chan.clone(),
time_profiler_chan.clone(),
opts.config_dir.map(Into::into));
config_dir);
let image_cache_thread = new_image_cache_thread(public_resource_threads.sender(),
webrender_api_sender.create_api());
let font_cache_thread = FontCacheThread::new(public_resource_threads.sender(),
@ -284,7 +291,7 @@ fn create_constellation(opts: opts::Opts,
layout_thread::LayoutThread,
script::script_thread::ScriptThread>::start(initial_state);
if let Some(url) = opts.url {
if let Some(url) = url {
constellation_chan.send(ConstellationMsg::InitLoadUrl(url)).unwrap();
};