diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-12-06 12:40:46 -1000 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-12-06 13:15:18 -1000 |
commit | 535765907d667466636e0fcaa9a7c6a078cf397d (patch) | |
tree | a19db00687e3187a49e4e811f6148cee7ea799c5 /components/script | |
parent | f20361179ddf2bd008e6ba29196a07663434018c (diff) | |
download | servo-535765907d667466636e0fcaa9a7c6a078cf397d.tar.gz servo-535765907d667466636e0fcaa9a7c6a078cf397d.zip |
Introduce jsmanaged_array
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/macros.rs | 25 | ||||
-rw-r--r-- | components/script/dom/webgltexture.rs | 2 |
2 files changed, 17 insertions, 10 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 2eab30d3fd0..99b06bae39d 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -303,15 +303,6 @@ macro_rules! make_nonzero_dimension_setter( /// For use on non-jsmanaged types /// Use #[derive(JSTraceable)] on JS managed types macro_rules! unsafe_no_jsmanaged_fields( - ([$ty:ident; $count:expr]) => ( - #[allow(unsafe_code)] - unsafe impl $crate::dom::bindings::trace::JSTraceable for [$ty; $count] { - #[inline] - unsafe fn trace(&self, _: *mut ::js::jsapi::JSTracer) { - // Do nothing - } - } - ); ($($ty:ident),+) => ( $( #[allow(unsafe_code)] @@ -325,6 +316,22 @@ macro_rules! unsafe_no_jsmanaged_fields( ); ); +macro_rules! jsmanaged_array( + ($count:expr) => ( + #[allow(unsafe_code)] + unsafe impl<T> $crate::dom::bindings::trace::JSTraceable for [T; $count] + where T: $crate::dom::bindings::trace::JSTraceable + { + #[inline] + unsafe fn trace(&self, tracer: *mut ::js::jsapi::JSTracer) { + for v in self.iter() { + v.trace(tracer); + } + } + } + ); +); + /// These are used to generate a event handler which has no special case. macro_rules! define_event_handler( ($handler: ident, $event_type: ident, $getter: ident, $setter: ident, $setter_fn: ident) => ( diff --git a/components/script/dom/webgltexture.rs b/components/script/dom/webgltexture.rs index 71c41a9f165..ad20a127e17 100644 --- a/components/script/dom/webgltexture.rs +++ b/components/script/dom/webgltexture.rs @@ -26,7 +26,7 @@ pub enum TexParameterValue { const MAX_LEVEL_COUNT: usize = 31; const MAX_FACE_COUNT: usize = 6; -unsafe_no_jsmanaged_fields!([ImageInfo; MAX_LEVEL_COUNT * MAX_FACE_COUNT]); +jsmanaged_array!(MAX_LEVEL_COUNT * MAX_FACE_COUNT); #[dom_struct] pub struct WebGLTexture { |