From 6fbf40988faf757a3bfa9b60be0dd131379c27c6 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Wed, 10 Apr 2013 10:53:26 -0400 Subject: [PATCH] Remove all traces of owned DOM objects. This DOM is all about sharing. --- src/servo/dom/bindings/clientrect.rs | 4 --- src/servo/dom/bindings/clientrectlist.rs | 4 --- src/servo/dom/bindings/codegen/CodegenRust.py | 9 +++-- src/servo/dom/bindings/document.rs | 4 --- src/servo/dom/bindings/domparser.rs | 4 --- src/servo/dom/bindings/htmlcollection.rs | 4 --- src/servo/dom/bindings/node.rs | 4 --- src/servo/dom/bindings/utils.rs | 36 ------------------- src/servo/dom/bindings/window.rs | 4 --- 9 files changed, 4 insertions(+), 69 deletions(-) diff --git a/src/servo/dom/bindings/clientrect.rs b/src/servo/dom/bindings/clientrect.rs index af65ca60c27..06c5be0cf5b 100644 --- a/src/servo/dom/bindings/clientrect.rs +++ b/src/servo/dom/bindings/clientrect.rs @@ -25,10 +25,6 @@ impl CacheableWrapper for ClientRect { unsafe { cast::transmute(&self.wrapper) } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"nyi") - } - fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; ClientRectBinding::Wrap(cx, scope, self, &mut unused) diff --git a/src/servo/dom/bindings/clientrectlist.rs b/src/servo/dom/bindings/clientrectlist.rs index a04eadf4165..bc684b8c8b7 100644 --- a/src/servo/dom/bindings/clientrectlist.rs +++ b/src/servo/dom/bindings/clientrectlist.rs @@ -24,10 +24,6 @@ impl CacheableWrapper for ClientRectList { unsafe { cast::transmute(&self.wrapper) } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"nyi") - } - fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; ClientRectListBinding::Wrap(cx, scope, self, &mut unused) diff --git a/src/servo/dom/bindings/codegen/CodegenRust.py b/src/servo/dom/bindings/codegen/CodegenRust.py index b828b80a0bc..55694abf746 100644 --- a/src/servo/dom/bindings/codegen/CodegenRust.py +++ b/src/servo/dom/bindings/codegen/CodegenRust.py @@ -2439,7 +2439,7 @@ def CreateBindingJSObject(descriptor, parent): let handler = (*content).dom_static.proxy_handlers.get(&(prototypes::id::%s as uint)); """ % descriptor.name create = handler + """ let obj = NewProxyObject(aCx, *handler, - ptr::addr_of(&RUST_PRIVATE_TO_JSVAL(squirrel_away_ref(aObject) as *libc::c_void)), + ptr::addr_of(&RUST_PRIVATE_TO_JSVAL(squirrel_away(aObject) as *libc::c_void)), proto, %s, ptr::null(), ptr::null()); if obj.is_null() { @@ -2454,7 +2454,7 @@ def CreateBindingJSObject(descriptor, parent): } JS_SetReservedSlot(obj, DOM_OBJECT_SLOT as u32, - RUST_PRIVATE_TO_JSVAL(squirrel_away_ref(aObject) as *libc::c_void)); + RUST_PRIVATE_TO_JSVAL(squirrel_away(aObject) as *libc::c_void)); """ return create % parent @@ -2462,7 +2462,7 @@ class CGWrapWithCacheMethod(CGAbstractMethod): def __init__(self, descriptor): assert descriptor.interface.hasInterfacePrototypeObject() args = [Argument('*JSContext', 'aCx'), Argument('*JSObject', 'aScope'), - Argument('&mut BindingReference<' + descriptor.nativeType + '>', 'aObject'), + Argument('@mut ' + descriptor.nativeType, 'aObject'), Argument('*mut bool', 'aTriedToWrap')] CGAbstractMethod.__init__(self, descriptor, 'Wrap_', '*JSObject', args) @@ -2505,8 +2505,7 @@ class CGWrapMethod(CGAbstractMethod): CGAbstractMethod.__init__(self, descriptor, 'Wrap', '*JSObject', args, inline=True, pub=True) def definition_body(self): - return " let mut binding = BindingReference(Right(aObject)); \ - return Wrap_(aCx, aScope, &mut binding, aTriedToWrap);" + return "return Wrap_(aCx, aScope, aObject, aTriedToWrap);" class CGWrapNonWrapperCacheMethod(CGAbstractMethod): def __init__(self, descriptor): diff --git a/src/servo/dom/bindings/document.rs b/src/servo/dom/bindings/document.rs index 992b574ed95..807b84c78a5 100644 --- a/src/servo/dom/bindings/document.rs +++ b/src/servo/dom/bindings/document.rs @@ -145,10 +145,6 @@ impl CacheableWrapper for Document { unsafe { cast::transmute(&self.wrapper) } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"need to implement wrapping"); - } - fn wrap_object_shared(@mut self, cx: *JSContext, _scope: *JSObject) -> *JSObject { let content = task_from_context(cx); unsafe { create((*content).compartment.get(), self) } diff --git a/src/servo/dom/bindings/domparser.rs b/src/servo/dom/bindings/domparser.rs index 61c80044871..bada542d91b 100644 --- a/src/servo/dom/bindings/domparser.rs +++ b/src/servo/dom/bindings/domparser.rs @@ -11,10 +11,6 @@ impl CacheableWrapper for DOMParser { unsafe { cast::transmute(&self.wrapper) } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"need to implement wrapping"); - } - fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; DOMParserBinding::Wrap(cx, scope, self, &mut unused) diff --git a/src/servo/dom/bindings/htmlcollection.rs b/src/servo/dom/bindings/htmlcollection.rs index 4e2ac722b5f..175f0524b4c 100644 --- a/src/servo/dom/bindings/htmlcollection.rs +++ b/src/servo/dom/bindings/htmlcollection.rs @@ -31,10 +31,6 @@ impl CacheableWrapper for HTMLCollection { unsafe { cast::transmute(&self.wrapper) } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"nyi") - } - fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject { let mut unused = false; HTMLCollectionBinding::Wrap(cx, scope, self, &mut unused) diff --git a/src/servo/dom/bindings/node.rs b/src/servo/dom/bindings/node.rs index 41a14b93507..fa0e2c6f3d3 100644 --- a/src/servo/dom/bindings/node.rs +++ b/src/servo/dom/bindings/node.rs @@ -167,10 +167,6 @@ impl CacheableWrapper for AbstractNode { } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"need to implement wrapping"); - } - fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!(~"need to implement wrapping"); } diff --git a/src/servo/dom/bindings/utils.rs b/src/servo/dom/bindings/utils.rs index 85ac2bf23c0..94620eed5f2 100644 --- a/src/servo/dom/bindings/utils.rs +++ b/src/servo/dom/bindings/utils.rs @@ -130,12 +130,6 @@ pub unsafe fn squirrel_away(x: @mut T) -> *rust_box { y } -pub unsafe fn squirrel_away_unique(x: ~T) -> *rust_box { - let y: *rust_box = cast::reinterpret_cast(&x); - cast::forget(x); - y -} - //XXX very incomplete pub fn jsval_to_str(cx: *JSContext, v: JSVal) -> Result<~str, ()> { let jsstr; @@ -561,7 +555,6 @@ pub fn initialize_global(global: *JSObject) { pub trait CacheableWrapper { fn get_wrappercache(&mut self) -> &mut WrapperCache; - fn wrap_object_unique(~self, cx: *JSContext, scope: *JSObject) -> *JSObject; fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject; } @@ -623,39 +616,10 @@ pub fn WrapNativeParent(cx: *JSContext, scope: *JSObject, mut p: @mut CacheableW wrapper } -pub struct BindingReference(Either<~T, @mut T>); - pub trait BindingObject { fn GetParentObject(&self, cx: *JSContext) -> @mut CacheableWrapper; } -pub impl BindingReference { - fn GetParentObject(&self, cx: *JSContext) -> @mut CacheableWrapper { - match **self { - Left(ref obj) => obj.GetParentObject(cx), - Right(ref obj) => obj.GetParentObject(cx) - } - } - - fn get_wrappercache(&mut self) -> &mut WrapperCache { - match **self { - Left(ref mut obj) => obj.get_wrappercache(), - Right(ref mut obj) => obj.get_wrappercache() - } - } -} - -pub fn squirrel_away_ref(obj: &mut BindingReference) -> *rust_box { - let mut tmp: BindingReference = unstable::intrinsics::init(); - tmp <-> *obj; - unsafe { - match tmp { - BindingReference(Left(obj)) => squirrel_away_unique(obj), - BindingReference(Right(obj)) => squirrel_away(obj) - } - } -} - pub fn GetPropertyOnPrototype(cx: *JSContext, proxy: *JSObject, id: jsid, found: *mut bool, vp: *JSVal) -> bool { unsafe { diff --git a/src/servo/dom/bindings/window.rs b/src/servo/dom/bindings/window.rs index 0bd710516e1..92910a029f6 100644 --- a/src/servo/dom/bindings/window.rs +++ b/src/servo/dom/bindings/window.rs @@ -159,10 +159,6 @@ impl CacheableWrapper for Window { unsafe { cast::transmute(&self.wrapper) } } - fn wrap_object_unique(~self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { - fail!(~"should this be called?"); - } - fn wrap_object_shared(@mut self, _cx: *JSContext, _scope: *JSObject) -> *JSObject { fail!(~"should this be called?"); }