auto merge of #2654 : Ms2ger/servo/reflector-cell, r=jdm

This commit is contained in:
bors-servo 2014-06-13 13:29:39 -04:00
commit 65e5896894
37 changed files with 16 additions and 160 deletions

View file

@ -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 {

View file

@ -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_
}
}

View file

@ -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)

View file

@ -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()
}
}
)
)

View file

@ -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()
}
}

View file

@ -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()),
}
}
}

View file

@ -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_
}
}

View file

@ -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()
}
}

View file

@ -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_
}
}

View file

@ -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_
}
}

View file

@ -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_
}
}

View file

@ -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()
}
}

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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_
}
}

View file

@ -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 {

View file

@ -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)]

View file

@ -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_
}
}

View file

@ -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> {

View file

@ -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_
}
}

View file

@ -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_
}
}

View file

@ -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_
}
}

View file

@ -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()
}
}

View file

@ -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_
}
}

View file

@ -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> {

View file

@ -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_
}
}

View file

@ -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_
}
}

View file

@ -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_
}
}

View file

@ -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()
}
}

View file

@ -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
}
}

View file

@ -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()
}
}

View file

@ -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_
}
}

View file

@ -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 {

View file

@ -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;
}

View file

@ -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 {

View file

@ -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 {