diff options
author | bors-servo <release+servo@mozilla.com> | 2014-06-13 13:29:39 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-06-13 13:29:39 -0400 |
commit | 65e5896894afdaf79cb4387f35f78e9037dd2e52 (patch) | |
tree | 6bf07d5fc4fd5737b55c8375645c35e438814daf /src | |
parent | 4c5437c58b278a4a29ac520e9866217496029d79 (diff) | |
parent | e09ed143625e2b8568e927bb0fe19964f41eec58 (diff) | |
download | servo-65e5896894afdaf79cb4387f35f78e9037dd2e52.tar.gz servo-65e5896894afdaf79cb4387f35f78e9037dd2e52.zip |
auto merge of #2654 : Ms2ger/servo/reflector-cell, r=jdm
Diffstat (limited to 'src')
37 files changed, 16 insertions, 160 deletions
diff --git a/src/components/script/dom/attr.rs b/src/components/script/dom/attr.rs index c8e5ad88527..278481484ec 100644 --- a/src/components/script/dom/attr.rs +++ b/src/components/script/dom/attr.rs @@ -71,10 +71,6 @@ impl Reflectable for Attr { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } impl Attr { diff --git a/src/components/script/dom/attrlist.rs b/src/components/script/dom/attrlist.rs index ab4fa979a98..8f4c6ca07c4 100644 --- a/src/components/script/dom/attrlist.rs +++ b/src/components/script/dom/attrlist.rs @@ -57,8 +57,4 @@ impl Reflectable for AttrList { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 3a0f5cddb00..f546f4cdd33 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1838,7 +1838,7 @@ class CGWrapMethod(CGAbstractMethod): %s - raw.mut_reflector().set_jsobject(obj); + raw.reflector().set_jsobject(obj); return raw;""" % CreateBindingJSObject(self.descriptor, "scope") else: @@ -1848,7 +1848,7 @@ class CGWrapMethod(CGAbstractMethod): let proto = GetProtoObject(aCx, obj, obj); JS_SetPrototype(aCx, obj, proto); }); - raw.mut_reflector().set_jsobject(obj); + raw.reflector().set_jsobject(obj); return raw;""" % CreateBindingJSObject(self.descriptor) diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index 545ae499a66..53069b94062 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -48,10 +48,6 @@ macro_rules! generate_cacheable_wrapper_base( fn reflector<'a>(&'a self) -> &'a Reflector { self.$parent.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.$parent.mut_reflector() - } } ) ) diff --git a/src/components/script/dom/bindings/js.rs b/src/components/script/dom/bindings/js.rs index e2b2665c415..b72e8c9e42d 100644 --- a/src/components/script/dom/bindings/js.rs +++ b/src/components/script/dom/bindings/js.rs @@ -171,12 +171,6 @@ impl<T: Reflectable> Reflectable for JS<T> { (*self.unsafe_get()).reflector() } } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - unsafe { - (*self.unsafe_get()).mut_reflector() - } - } } impl<T: Reflectable> JS<T> { @@ -500,8 +494,4 @@ impl<'a, T: Reflectable> Reflectable for JSRef<'a, T> { fn reflector<'a>(&'a self) -> &'a Reflector { self.deref().reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.deref_mut().mut_reflector() - } } diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 5eb3486c20c..ab81ed2c8fc 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -14,8 +14,9 @@ use servo_util::str::DOMString; use collections::hashmap::HashMap; use libc; use libc::c_uint; -use std::mem; +use std::cell::Cell; use std::cmp::Eq; +use std::mem; use std::ptr; use std::ptr::null; use std::slice; @@ -401,7 +402,6 @@ pub fn initialize_global(global: *mut JSObject) { pub trait Reflectable { fn reflector<'a>(&'a self) -> &'a Reflector; - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector; } pub fn reflect_dom_object<T: Reflectable> @@ -415,31 +415,33 @@ pub fn reflect_dom_object<T: Reflectable> #[allow(raw_pointer_deriving)] #[deriving(Eq)] pub struct Reflector { - object: *mut JSObject, + object: Cell<*mut JSObject>, } impl Reflector { #[inline] pub fn get_jsobject(&self) -> *mut JSObject { - self.object + self.object.get() } - pub fn set_jsobject(&mut self, object: *mut JSObject) { - assert!(self.object.is_null()); + pub fn set_jsobject(&self, object: *mut JSObject) { + assert!(self.object.get().is_null()); assert!(object.is_not_null()); - self.object = object; + self.object.set(object); } /// Return a pointer to the memory location at which the JS reflector object is stored. /// Used by Temporary values to root the reflector, as required by the JSAPI rooting /// APIs. - pub fn rootable<'a>(&'a mut self) -> &'a mut *mut JSObject { - &mut self.object + pub fn rootable(&self) -> *mut *mut JSObject { + &self.object as *Cell<*mut JSObject> + as *mut Cell<*mut JSObject> + as *mut *mut JSObject } pub fn new() -> Reflector { Reflector { - object: ptr::mut_null(), + object: Cell::new(ptr::mut_null()), } } } diff --git a/src/components/script/dom/blob.rs b/src/components/script/dom/blob.rs index 8f30bdcf2b0..a6c9b0a7065 100644 --- a/src/components/script/dom/blob.rs +++ b/src/components/script/dom/blob.rs @@ -40,8 +40,4 @@ impl Reflectable for Blob { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/characterdata.rs b/src/components/script/dom/characterdata.rs index 309c4de1cd5..dc83f3b90c9 100644 --- a/src/components/script/dom/characterdata.rs +++ b/src/components/script/dom/characterdata.rs @@ -114,8 +114,4 @@ impl Reflectable for CharacterData { fn reflector<'a>(&'a self) -> &'a Reflector { self.node.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.node.mut_reflector() - } } diff --git a/src/components/script/dom/clientrect.rs b/src/components/script/dom/clientrect.rs index 744682511e1..11731b54daa 100644 --- a/src/components/script/dom/clientrect.rs +++ b/src/components/script/dom/clientrect.rs @@ -79,8 +79,4 @@ impl Reflectable for ClientRect { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/clientrectlist.rs b/src/components/script/dom/clientrectlist.rs index 169fce8ef0a..9a722108d01 100644 --- a/src/components/script/dom/clientrectlist.rs +++ b/src/components/script/dom/clientrectlist.rs @@ -63,8 +63,4 @@ impl Reflectable for ClientRectList { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/console.rs b/src/components/script/dom/console.rs index bb1531d27f3..bd270cc924e 100644 --- a/src/components/script/dom/console.rs +++ b/src/components/script/dom/console.rs @@ -70,8 +70,4 @@ impl Reflectable for Console { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/customevent.rs b/src/components/script/dom/customevent.rs index 9abd64b215e..d3ec1ae3f1c 100644 --- a/src/components/script/dom/customevent.rs +++ b/src/components/script/dom/customevent.rs @@ -81,8 +81,4 @@ impl Reflectable for CustomEvent { fn reflector<'a>(&'a self) -> &'a Reflector { self.event.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.event.mut_reflector() - } } diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 173fa84b5f5..2ff798d0615 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -251,10 +251,6 @@ impl Reflectable for Document { fn reflector<'a>(&'a self) -> &'a Reflector { self.node.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.node.mut_reflector() - } } trait PrivateDocumentHelpers { diff --git a/src/components/script/dom/domexception.rs b/src/components/script/dom/domexception.rs index 262ae5c3fa8..84cfd96ec36 100644 --- a/src/components/script/dom/domexception.rs +++ b/src/components/script/dom/domexception.rs @@ -83,10 +83,6 @@ impl Reflectable for DOMException { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } pub trait DOMExceptionMethods { diff --git a/src/components/script/dom/domimplementation.rs b/src/components/script/dom/domimplementation.rs index 370a233f67d..eb3d22494b8 100644 --- a/src/components/script/dom/domimplementation.rs +++ b/src/components/script/dom/domimplementation.rs @@ -43,10 +43,6 @@ impl Reflectable for DOMImplementation { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } pub trait DOMImplementationMethods { diff --git a/src/components/script/dom/domparser.rs b/src/components/script/dom/domparser.rs index 540de38727a..a5b8ab22fc5 100644 --- a/src/components/script/dom/domparser.rs +++ b/src/components/script/dom/domparser.rs @@ -64,8 +64,4 @@ impl Reflectable for DOMParser { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/domtokenlist.rs b/src/components/script/dom/domtokenlist.rs index b0a6f2c73c2..23ff4a7c788 100644 --- a/src/components/script/dom/domtokenlist.rs +++ b/src/components/script/dom/domtokenlist.rs @@ -41,10 +41,6 @@ impl Reflectable for DOMTokenList { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } trait PrivateDOMTokenListHelpers { diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index d9d498d72eb..2be875e6d40 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -62,10 +62,6 @@ impl Reflectable for Element { fn reflector<'a>(&'a self) -> &'a Reflector { self.node.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.node.mut_reflector() - } } #[deriving(Eq,Encodable)] diff --git a/src/components/script/dom/event.rs b/src/components/script/dom/event.rs index a151aed5026..8d7dadc86b3 100644 --- a/src/components/script/dom/event.rs +++ b/src/components/script/dom/event.rs @@ -199,8 +199,4 @@ impl Reflectable for Event { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/eventtarget.rs b/src/components/script/dom/eventtarget.rs index 7a192d58ab6..e4a62684e15 100644 --- a/src/components/script/dom/eventtarget.rs +++ b/src/components/script/dom/eventtarget.rs @@ -278,10 +278,6 @@ impl Reflectable for EventTarget { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } impl<'a> VirtualMethods for JSRef<'a, EventTarget> { diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index 40dc6935fe6..eeea9cc32f0 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -70,8 +70,4 @@ impl Reflectable for FormData { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/htmlcollection.rs b/src/components/script/dom/htmlcollection.rs index aeb506938f8..e49926e33b0 100644 --- a/src/components/script/dom/htmlcollection.rs +++ b/src/components/script/dom/htmlcollection.rs @@ -221,8 +221,4 @@ impl Reflectable for HTMLCollection { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/location.rs b/src/components/script/dom/location.rs index 64bbeddede7..05e86f5b07d 100644 --- a/src/components/script/dom/location.rs +++ b/src/components/script/dom/location.rs @@ -49,8 +49,4 @@ impl Reflectable for Location { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/mouseevent.rs b/src/components/script/dom/mouseevent.rs index b942909639f..a066cb81c08 100644 --- a/src/components/script/dom/mouseevent.rs +++ b/src/components/script/dom/mouseevent.rs @@ -204,8 +204,4 @@ impl Reflectable for MouseEvent { fn reflector<'a>(&'a self) -> &'a Reflector { self.mouseevent.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.mouseevent.mut_reflector() - } } diff --git a/src/components/script/dom/navigator.rs b/src/components/script/dom/navigator.rs index 3603709971f..dd85a33be0d 100644 --- a/src/components/script/dom/navigator.rs +++ b/src/components/script/dom/navigator.rs @@ -61,8 +61,4 @@ impl Reflectable for Navigator { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/node.rs b/src/components/script/dom/node.rs index 5be262a9003..5d8376dbcd2 100644 --- a/src/components/script/dom/node.rs +++ b/src/components/script/dom/node.rs @@ -1941,10 +1941,6 @@ impl Reflectable for Node { fn reflector<'a>(&'a self) -> &'a Reflector { self.eventtarget.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.eventtarget.mut_reflector() - } } pub fn document_from_node<T: NodeBase>(derived: &JSRef<T>) -> Temporary<Document> { diff --git a/src/components/script/dom/nodelist.rs b/src/components/script/dom/nodelist.rs index eba16d3902a..305c52774d5 100644 --- a/src/components/script/dom/nodelist.rs +++ b/src/components/script/dom/nodelist.rs @@ -86,8 +86,4 @@ impl Reflectable for NodeList { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/performance.rs b/src/components/script/dom/performance.rs index c933494697a..096cabc2de3 100644 --- a/src/components/script/dom/performance.rs +++ b/src/components/script/dom/performance.rs @@ -52,8 +52,4 @@ impl Reflectable for Performance { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/performancetiming.rs b/src/components/script/dom/performancetiming.rs index 5935f55b9f2..a63fe54e68b 100644 --- a/src/components/script/dom/performancetiming.rs +++ b/src/components/script/dom/performancetiming.rs @@ -50,8 +50,4 @@ impl Reflectable for PerformanceTiming { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/progressevent.rs b/src/components/script/dom/progressevent.rs index 7cc06d0a115..08ce3f64060 100644 --- a/src/components/script/dom/progressevent.rs +++ b/src/components/script/dom/progressevent.rs @@ -76,8 +76,4 @@ impl Reflectable for ProgressEvent { fn reflector<'a>(&'a self) -> &'a Reflector { self.event.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.event.mut_reflector() - } } diff --git a/src/components/script/dom/testbinding.rs b/src/components/script/dom/testbinding.rs index 4f0a2081bf7..d4826d881b9 100644 --- a/src/components/script/dom/testbinding.rs +++ b/src/components/script/dom/testbinding.rs @@ -300,8 +300,4 @@ impl Reflectable for TestBinding { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector - } } diff --git a/src/components/script/dom/uievent.rs b/src/components/script/dom/uievent.rs index 91a4cbd24e3..745b05260bc 100644 --- a/src/components/script/dom/uievent.rs +++ b/src/components/script/dom/uievent.rs @@ -101,8 +101,4 @@ impl Reflectable for UIEvent { fn reflector<'a>(&'a self) -> &'a Reflector { self.event.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.event.mut_reflector() - } } diff --git a/src/components/script/dom/validitystate.rs b/src/components/script/dom/validitystate.rs index 5a86c18a27a..72beced0eec 100644 --- a/src/components/script/dom/validitystate.rs +++ b/src/components/script/dom/validitystate.rs @@ -38,8 +38,4 @@ impl Reflectable for ValidityState { fn reflector<'a>(&'a self) -> &'a Reflector { &self.reflector_ } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - &mut self.reflector_ - } } diff --git a/src/components/script/dom/window.rs b/src/components/script/dom/window.rs index 40c553e2f4f..782fcd712d7 100644 --- a/src/components/script/dom/window.rs +++ b/src/components/script/dom/window.rs @@ -275,10 +275,6 @@ impl Reflectable for Window { fn reflector<'a>(&'a self) -> &'a Reflector { self.eventtarget.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.eventtarget.mut_reflector() - } } pub trait WindowHelpers { diff --git a/src/components/script/dom/xmlhttprequest.rs b/src/components/script/dom/xmlhttprequest.rs index f3d76acca39..87b4572ff80 100644 --- a/src/components/script/dom/xmlhttprequest.rs +++ b/src/components/script/dom/xmlhttprequest.rs @@ -579,10 +579,6 @@ impl Reflectable for XMLHttpRequest { fn reflector<'a>(&'a self) -> &'a Reflector { self.eventtarget.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.eventtarget.mut_reflector() - } } impl XMLHttpRequestDerived for EventTarget { @@ -622,14 +618,14 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { unsafe fn to_trusted(&mut self) -> TrustedXHRAddress { assert!(self.pinned == false); self.pinned = true; - JS_AddObjectRoot(self.global.root().get_cx(), self.mut_reflector().rootable()); + JS_AddObjectRoot(self.global.root().get_cx(), self.reflector().rootable()); TrustedXHRAddress(self.deref() as *XMLHttpRequest as *libc::c_void) } fn release(&mut self) { assert!(self.pinned); unsafe { - JS_RemoveObjectRoot(self.global.root().get_cx(), self.mut_reflector().rootable()); + JS_RemoveObjectRoot(self.global.root().get_cx(), self.reflector().rootable()); } self.pinned = false; } diff --git a/src/components/script/dom/xmlhttprequesteventtarget.rs b/src/components/script/dom/xmlhttprequesteventtarget.rs index 29f77c62149..1881a597d76 100644 --- a/src/components/script/dom/xmlhttprequesteventtarget.rs +++ b/src/components/script/dom/xmlhttprequesteventtarget.rs @@ -36,10 +36,6 @@ impl Reflectable for XMLHttpRequestEventTarget { fn reflector<'a>(&'a self) -> &'a Reflector { self.eventtarget.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.eventtarget.mut_reflector() - } } pub trait XMLHttpRequestEventTargetMethods { diff --git a/src/components/script/dom/xmlhttprequestupload.rs b/src/components/script/dom/xmlhttprequestupload.rs index 9d46dd1c98f..9c5b3854eab 100644 --- a/src/components/script/dom/xmlhttprequestupload.rs +++ b/src/components/script/dom/xmlhttprequestupload.rs @@ -32,10 +32,6 @@ impl Reflectable for XMLHttpRequestUpload { fn reflector<'a>(&'a self) -> &'a Reflector { self.eventtarget.reflector() } - - fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector { - self.eventtarget.mut_reflector() - } } impl XMLHttpRequestUploadDerived for EventTarget { |