diff options
author | Igor Matuszewski <Xanewok@gmail.com> | 2018-03-23 14:28:25 +0100 |
---|---|---|
committer | Igor Matuszewski <Xanewok@gmail.com> | 2018-03-23 17:31:34 +0100 |
commit | ed0091f86f92f84442508b380ff9334511670c54 (patch) | |
tree | af9c76470c0340d0cf6cc1f080a2baf273e25621 /components/script/dom/bindings/trace.rs | |
parent | 8aa2ebef0c167db298b58af1bbbe0e07f40d2e2b (diff) | |
download | servo-ed0091f86f92f84442508b380ff9334511670c54.tar.gz servo-ed0091f86f92f84442508b380ff9334511670c54.zip |
Add safe `handle` function for rooted heap values
Diffstat (limited to 'components/script/dom/bindings/trace.rs')
-rw-r--r-- | components/script/dom/bindings/trace.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 423b053cbbf..be38b14a540 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -59,9 +59,9 @@ use hyper::mime::Mime; use hyper::status::StatusCode; use ipc_channel::ipc::{IpcReceiver, IpcSender}; use js::glue::{CallObjectTracer, CallValueTracer}; -use js::jsapi::{GCTraceKindToAscii, Heap, JSObject, JSTracer, TraceKind}; +use js::jsapi::{GCTraceKindToAscii, Heap, Handle, JSObject, JSTracer, TraceKind}; use js::jsval::JSVal; -use js::rust::Runtime; +use js::rust::{GCMethods, Runtime}; use js::typedarray::TypedArray; use js::typedarray::TypedArrayElement; use metrics::{InteractiveMetrics, InteractiveWindow}; @@ -788,6 +788,16 @@ impl<T: JSTraceable + 'static> RootedTraceableBox<T> { } } +impl<T> RootedTraceableBox<Heap<T>> + where + Heap<T>: JSTraceable + 'static, + T: GCMethods + Copy, +{ + pub fn handle(&self) -> Handle<T> { + unsafe { (*self.ptr).handle() } + } +} + impl<T: JSTraceable + Default> Default for RootedTraceableBox<T> { fn default() -> RootedTraceableBox<T> { RootedTraceableBox::new(T::default()) |