mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Move Traceable, trace_reflector from utils.rs to trace.rs.(fixes #1748)
This commit is contained in:
parent
98170e67c0
commit
f706123208
3 changed files with 26 additions and 22 deletions
|
@ -3,11 +3,14 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use dom::bindings::js::JS;
|
||||
use dom::bindings::utils::{Reflectable, trace_reflector, Reflector};
|
||||
use dom::bindings::utils::{Reflectable, Reflector};
|
||||
|
||||
use js::jsapi::JSTracer;
|
||||
use js::jsapi::{JSTracer, JS_CallTracer, JSTRACE_OBJECT};
|
||||
|
||||
use std::cast;
|
||||
use std::libc;
|
||||
use std::ptr;
|
||||
use std::ptr::null;
|
||||
use extra::serialize::{Encodable, Encoder};
|
||||
|
||||
// IMPORTANT: We rely on the fact that we never attempt to encode DOM objects using
|
||||
|
@ -26,3 +29,20 @@ impl<S: Encoder> Encodable<S> for Reflector {
|
|||
fn encode(&self, _s: &mut S) {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait Traceable {
|
||||
fn trace(&self, trc: *mut JSTracer);
|
||||
}
|
||||
|
||||
pub fn trace_reflector(tracer: *mut JSTracer, description: &str, reflector: &Reflector) {
|
||||
unsafe {
|
||||
description.to_c_str().with_ref(|name| {
|
||||
(*tracer).debugPrinter = ptr::null();
|
||||
(*tracer).debugPrintIndex = -1;
|
||||
(*tracer).debugPrintArg = name as *libc::c_void;
|
||||
debug!("tracing {:s}", description);
|
||||
JS_CallTracer(tracer as *JSTracer, reflector.get_jsobject(),
|
||||
JSTRACE_OBJECT as u32);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue