From 0fdee70cbf7915356a17da295be80f224ebbd1b0 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Mon, 29 Sep 2014 05:25:35 +0530 Subject: [PATCH] Remove Untraceable from workerglobalscope.rs --- components/script/dom/bindings/trace.rs | 2 ++ components/script/dom/workerglobalscope.rs | 25 +++++++++++----------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index e404f17588d..c2aff926c08 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -44,6 +44,7 @@ use style::PropertyDeclarationBlock; use std::comm::{Receiver, Sender}; use hubbub::hubbub::QuirksMode; use string_cache::{Atom, Namespace}; +use js::rust::Cx; impl JSTraceable for JS { fn trace(&self, trc: *mut JSTracer) { @@ -233,6 +234,7 @@ untraceable!(PropertyDeclarationBlock) // in one of these make sure it is propagated properly to containing structs untraceable!(SubpageId, WindowSizeData, PipelineId) untraceable!(QuirksMode) +untraceable!(Cx) impl<'a> JSTraceable for &'a str { #[inline] diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 15751620172..355fb3f2cc3 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -4,7 +4,6 @@ use dom::bindings::codegen::Bindings::WorkerGlobalScopeBinding::WorkerGlobalScopeMethods; use dom::bindings::error::{ErrorResult, Fallible, Syntax, Network, FailureUnknown}; -use dom::bindings::trace::Untraceable; use dom::bindings::global; use dom::bindings::js::{MutNullableJS, JSRef, Temporary, OptionalSettable}; use dom::bindings::utils::{Reflectable, Reflector}; @@ -35,9 +34,9 @@ pub enum WorkerGlobalScopeId { #[must_root] pub struct WorkerGlobalScope { pub eventtarget: EventTarget, - worker_url: Untraceable, - js_context: Untraceable>, - resource_task: Untraceable, + worker_url: Url, + js_context: Rc, + resource_task: ResourceTask, script_chan: ScriptChan, location: MutNullableJS, navigator: MutNullableJS, @@ -52,9 +51,9 @@ impl WorkerGlobalScope { script_chan: ScriptChan) -> WorkerGlobalScope { WorkerGlobalScope { eventtarget: EventTarget::new_inherited(WorkerGlobalScopeTypeId(type_id)), - worker_url: Untraceable::new(worker_url), - js_context: Untraceable::new(cx), - resource_task: Untraceable::new(resource_task), + worker_url: worker_url, + js_context: cx, + resource_task: resource_task, script_chan: script_chan, location: Default::default(), navigator: Default::default(), @@ -67,11 +66,11 @@ impl WorkerGlobalScope { } pub fn resource_task<'a>(&'a self) -> &'a ResourceTask { - &*self.resource_task + & self.resource_task } pub fn get_url<'a>(&'a self) -> &'a Url { - &*self.worker_url + &self.worker_url } pub fn script_chan<'a>(&'a self) -> &'a ScriptChan { @@ -86,7 +85,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> { fn Location(self) -> Temporary { if self.location.get().is_none() { - let location = WorkerLocation::new(self, self.worker_url.deref().clone()); + let location = WorkerLocation::new(self, self.worker_url.clone()); self.location.assign(Some(location)); } self.location.get().unwrap() @@ -95,7 +94,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> { fn ImportScripts(self, url_strings: Vec) -> ErrorResult { let mut urls = Vec::with_capacity(url_strings.len()); for url in url_strings.into_iter() { - let url = UrlParser::new().base_url(&*self.worker_url) + let url = UrlParser::new().base_url(&self.worker_url) .parse(url.as_slice()); match url { Ok(url) => urls.push(url), @@ -104,14 +103,14 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> { } for url in urls.into_iter() { - let (url, source) = match load_whole_resource(&*self.resource_task, url) { + let (url, source) = match load_whole_resource(&self.resource_task, url) { Err(_) => return Err(Network), Ok((metadata, bytes)) => { (metadata.final_url, String::from_utf8(bytes).unwrap()) } }; - match self.js_context.deref().evaluate_script( + match self.js_context.evaluate_script( self.reflector().get_jsobject(), source, url.serialize(), 1) { Ok(_) => (), Err(_) => {