diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 5345d08ee9e..e50bf68e478 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -88,6 +88,12 @@ impl JS { } } +impl JSTraceable for JS { + fn trace(&self, trc: *mut JSTracer) { + trace_reflector(trc, "", unsafe { (**self.ptr).reflector() }); + } +} + /// An unrooted reference to a DOM object for use in layout. `Layout*Helpers` /// traits must be implemented on this. #[allow_unrooted_interior] @@ -148,13 +154,6 @@ impl LayoutJS { } } -impl Reflectable for JS { - fn reflector(&self) -> &Reflector { - unsafe { - (**self.ptr).reflector() - } - } -} /// A trait to be implemented for JS-managed types that can be stored in /// mutable member fields. diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index e514e180486..5a9aa5b2abb 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -88,12 +88,6 @@ pub trait JSTraceable { fn trace(&self, trc: *mut JSTracer); } -impl JSTraceable for JS { - fn trace(&self, trc: *mut JSTracer) { - trace_reflector(trc, "", self.reflector()); - } -} - no_jsmanaged_fields!(EncodingRef); no_jsmanaged_fields!(Reflector); @@ -455,19 +449,17 @@ impl<'a, T: JSTraceable> Drop for RootedTraceable<'a, T> { } } -/// A vector of items that are rooted for the lifetime -/// of this struct. -/// Must be a reflectable +/// A vector of items that are rooted for the lifetime of this struct. #[allow(unrooted_must_root)] #[no_move] #[derive(JSTraceable)] #[allow_unrooted_interior] -pub struct RootedVec { +pub struct RootedVec { v: Vec } -impl RootedVec { +impl RootedVec { /// Create a vector of items of type T that is rooted for /// the lifetime of this struct pub fn new() -> RootedVec { @@ -495,20 +487,20 @@ impl RootedVec> { } } -impl Drop for RootedVec { +impl Drop for RootedVec { fn drop(&mut self) { RootedTraceableSet::remove(self); } } -impl Deref for RootedVec { +impl Deref for RootedVec { type Target = Vec; fn deref(&self) -> &Vec { &self.v } } -impl DerefMut for RootedVec { +impl DerefMut for RootedVec { fn deref_mut(&mut self) -> &mut Vec { &mut self.v }