From cfe240d11787b911837b87984c2853bb1f64f53f Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sun, 10 May 2015 17:02:32 +0200 Subject: [PATCH] Remove reference counting from the Runtime implementation. --- components/script/dom/dedicatedworkerglobalscope.rs | 11 ++++++----- components/script/dom/window.rs | 4 ++-- components/script/dom/workerglobalscope.rs | 7 ++++--- components/script/script_task.rs | 4 ++-- components/servo/Cargo.lock | 2 +- ports/cef/Cargo.lock | 2 +- ports/gonk/Cargo.lock | 2 +- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index ebf993c60d8..d4411a811fa 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -36,10 +36,11 @@ use util::task_state::{SCRIPT, IN_WORKER}; use js::jsapi::JSContext; use js::jsval::JSVal; use js::rust::Runtime; - -use std::sync::mpsc::{Sender, Receiver, channel}; use url::Url; +use std::rc::Rc; +use std::sync::mpsc::{Sender, Receiver, channel}; + /// A ScriptChan that can be cloned freely and will silently send a TrustedWorkerAddress with /// every message. While this SendableWorkerScriptChan is alive, the associated Worker object /// will remain alive. @@ -105,7 +106,7 @@ impl DedicatedWorkerGlobalScope { fn new_inherited(worker_url: Url, id: PipelineId, devtools_chan: Option, - runtime: Runtime, + runtime: Rc, resource_task: ResourceTask, parent_sender: Box, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, @@ -126,7 +127,7 @@ impl DedicatedWorkerGlobalScope { pub fn new(worker_url: Url, id: PipelineId, devtools_chan: Option, - runtime: Runtime, + runtime: Rc, resource_task: ResourceTask, parent_sender: Box, own_sender: Sender<(TrustedWorkerAddress, ScriptMsg)>, @@ -166,7 +167,7 @@ impl DedicatedWorkerGlobalScope { } }; - let runtime = ScriptTask::new_rt_and_cx(); + let runtime = Rc::new(ScriptTask::new_rt_and_cx()); let global = DedicatedWorkerGlobalScope::new( worker_url, id, devtools_chan, runtime.clone(), resource_task, parent_sender, own_sender, receiver).root(); diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 43112882b94..dd4a7ea67c1 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -134,7 +134,7 @@ pub struct Window { dom_static: GlobalStaticData, /// The JavaScript runtime. - js_runtime: DOMRefCell>, + js_runtime: DOMRefCell>>, /// A handle for communicating messages to the layout task. layout_chan: LayoutChan, @@ -883,7 +883,7 @@ impl<'a> WindowHelpers for JSRef<'a, Window> { } impl Window { - pub fn new(runtime: Runtime, + pub fn new(runtime: Rc, page: Rc, script_chan: Box, image_cache_chan: ImageCacheChan, diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index e1690776ff9..0ae6e569875 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -28,10 +28,11 @@ use util::str::DOMString; use js::jsapi::JSContext; use js::jsval::JSVal; use js::rust::Runtime; +use url::{Url, UrlParser}; use std::default::Default; use std::cell::Cell; -use url::{Url, UrlParser}; +use std::rc::Rc; #[derive(Copy, Clone, PartialEq)] #[jstraceable] @@ -44,7 +45,7 @@ pub enum WorkerGlobalScopeTypeId { pub struct WorkerGlobalScope { eventtarget: EventTarget, worker_url: Url, - runtime: Runtime, + runtime: Rc, next_worker_id: Cell, resource_task: ResourceTask, location: MutNullableHeap>, @@ -57,7 +58,7 @@ pub struct WorkerGlobalScope { impl WorkerGlobalScope { pub fn new_inherited(type_id: WorkerGlobalScopeTypeId, worker_url: Url, - runtime: Runtime, + runtime: Rc, resource_task: ResourceTask, devtools_chan: Option) -> WorkerGlobalScope { WorkerGlobalScope { diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 89dcb5e6a61..47c793b2c22 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -312,7 +312,7 @@ pub struct ScriptTask { devtools_marker_sender: RefCell>>, /// The JavaScript runtime. - js_runtime: Runtime, + js_runtime: Rc, mouse_over_targets: DOMRefCell>> } @@ -491,7 +491,7 @@ impl ScriptTask { devtools_markers: RefCell::new(HashSet::new()), devtools_marker_sender: RefCell::new(None), - js_runtime: runtime, + js_runtime: Rc::new(runtime), mouse_over_targets: DOMRefCell::new(vec!()) } } diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 1ec434f09bb..4b88b7f257c 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -579,7 +579,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.0" -source = "git+https://github.com/servo/rust-mozjs#774a764770b196ed64e4973744f9d2ff247412b1" +source = "git+https://github.com/servo/rust-mozjs#18f507903856a814f12cce2ffda8065695d8f485" dependencies = [ "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 241db01a3cf..3fe4eb2fcd0 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -581,7 +581,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.0" -source = "git+https://github.com/servo/rust-mozjs#774a764770b196ed64e4973744f9d2ff247412b1" +source = "git+https://github.com/servo/rust-mozjs#18f507903856a814f12cce2ffda8065695d8f485" dependencies = [ "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index 24ef08def57..fa5c601ece4 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "js" version = "0.1.0" -source = "git+https://github.com/servo/rust-mozjs#774a764770b196ed64e4973744f9d2ff247412b1" +source = "git+https://github.com/servo/rust-mozjs#18f507903856a814f12cce2ffda8065695d8f485" dependencies = [ "libc 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",