Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use internal mutability for Reflector. #2654

Merged
merged 2 commits into from Jun 13, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 0 additions & 4 deletions src/components/script/dom/attr.rs
Expand Up @@ -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 {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/attrlist.rs
Expand Up @@ -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_
}
}
4 changes: 2 additions & 2 deletions src/components/script/dom/bindings/codegen/CodegenRust.py
Expand Up @@ -1838,7 +1838,7 @@ def definition_body(self):

%s

raw.mut_reflector().set_jsobject(obj);
raw.reflector().set_jsobject(obj);

return raw;""" % CreateBindingJSObject(self.descriptor, "scope")
else:
Expand All @@ -1848,7 +1848,7 @@ def definition_body(self):
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)


Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/bindings/element.rs
Expand Up @@ -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()
}
}
)
)
Expand Down
10 changes: 0 additions & 10 deletions src/components/script/dom/bindings/js.rs
Expand Up @@ -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> {
Expand Down Expand Up @@ -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()
}
}
22 changes: 12 additions & 10 deletions src/components/script/dom/bindings/utils.rs
Expand Up @@ -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;
Expand Down Expand Up @@ -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>
Expand All @@ -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()),
}
}
}
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/blob.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/characterdata.rs
Expand Up @@ -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()
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/clientrect.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/clientrectlist.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/console.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/customevent.rs
Expand Up @@ -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()
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/document.rs
Expand Up @@ -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 {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/domexception.rs
Expand Up @@ -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 {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/domimplementation.rs
Expand Up @@ -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 {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/domparser.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/domtokenlist.rs
Expand Up @@ -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 {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/element.rs
Expand Up @@ -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)]
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/event.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/eventtarget.rs
Expand Up @@ -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> {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/formdata.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/htmlcollection.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/location.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/mouseevent.rs
Expand Up @@ -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()
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/navigator.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/node.rs
Expand Up @@ -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> {
Expand Down
4 changes: 0 additions & 4 deletions src/components/script/dom/nodelist.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/performance.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/performancetiming.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/progressevent.rs
Expand Up @@ -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()
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/testbinding.rs
Expand Up @@ -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
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/uievent.rs
Expand Up @@ -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()
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/validitystate.rs
Expand Up @@ -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_
}
}
4 changes: 0 additions & 4 deletions src/components/script/dom/window.rs
Expand Up @@ -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 {
Expand Down