diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs
index 35ffad67859..0f063c348b8 100644
--- a/components/script/dom/servohtmlparser.rs
+++ b/components/script/dom/servohtmlparser.rs
@@ -12,7 +12,7 @@ use dom::bindings::global::GlobalRef;
use dom::bindings::trace::JSTraceable;
use dom::bindings::js::{JS, Root};
use dom::bindings::refcounted::Trusted;
-use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::document::{Document, DocumentHelpers};
use dom::node::{window_from_node, Node};
use dom::window::Window;
@@ -28,7 +28,7 @@ use encoding::types::{Encoding, DecoderTrap};
use std::cell::{Cell, RefCell};
use std::default::Default;
use url::Url;
-use js::jsapi::{JSTracer, JSObject};
+use js::jsapi::JSTracer;
use html5ever::tokenizer;
use html5ever::tree_builder;
use html5ever::tree_builder::{TreeBuilder, TreeBuilderOpts};
@@ -156,10 +156,7 @@ impl AsyncResponseListener for ParserContext {
impl PreInvoke for ParserContext {
}
-// NB: JSTraceable is *not* auto-derived.
-// You must edit the impl below if you add fields!
-#[must_root]
-#[privatize]
+#[dom_struct]
pub struct ServoHTMLParser {
reflector_: Reflector,
tokenizer: DOMRefCell,
@@ -274,15 +271,6 @@ impl ServoHTMLParser {
}
}
-impl Reflectable for ServoHTMLParser {
- fn reflector<'a>(&'a self) -> &'a Reflector {
- &self.reflector_
- }
- fn init_reflector(&mut self, obj: *mut JSObject) {
- self.reflector_.set_jsobject(obj);
- }
-}
-
trait PrivateServoHTMLParserHelpers {
/// Synchronously run the tokenizer parse loop until explicitly suspended or
/// the tokenizer runs out of input.
@@ -365,21 +353,15 @@ impl tree_builder::Tracer for Tracer {
}
}
-impl JSTraceable for ServoHTMLParser {
- #[allow(unsafe_code)]
+impl JSTraceable for Tokenizer {
fn trace(&self, trc: *mut JSTracer) {
- self.reflector_.trace(trc);
-
let tracer = Tracer {
trc: trc,
};
let tracer = &tracer as &tree_builder::Tracer>;
- unsafe {
- let tokenizer = self.tokenizer.borrow_for_gc_trace();
- let tree_builder = tokenizer.sink();
- tree_builder.trace_handles(tracer);
- tree_builder.sink().trace(trc);
- }
+ let tree_builder = self.sink();
+ tree_builder.trace_handles(tracer);
+ tree_builder.sink().trace(trc);
}
}