diff options
author | Eduard Burtescu <edy.burt@gmail.com> | 2016-07-04 20:24:06 +0300 |
---|---|---|
committer | Eduard Burtescu <edy.burt@gmail.com> | 2016-07-04 20:59:06 +0300 |
commit | b79a7d468e99f335dce49cc48342f0cd447eb855 (patch) | |
tree | a98f95839eb04fcda6bf5ea8f4d1ee0e53423fdb /components/script/dom/macros.rs | |
parent | 0db1faf87651c99223683faafc836353f016ffb3 (diff) | |
download | servo-b79a7d468e99f335dce49cc48342f0cd447eb855.tar.gz servo-b79a7d468e99f335dce49cc48342f0cd447eb855.zip |
Use a stack guard and a macro for RootedVec instead of return_address.
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r-- | components/script/dom/macros.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index 3ad9713fb70..58af2b28ac6 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -503,3 +503,18 @@ macro_rules! document_and_element_event_handlers( event_handler!(paste, GetOnpaste, SetOnpaste); ) ); + +#[macro_export] +macro_rules! rooted_vec { + (let mut $name:ident) => { + rooted_vec!(let mut $name <- ::std::iter::empty()) + }; + (let $name:ident <- $iter:expr) => { + let mut __root = $crate::dom::bindings::trace::RootableVec::new_unrooted(); + let $name = $crate::dom::bindings::trace::RootedVec::new(&mut __root, $iter); + }; + (let mut $name:ident <- $iter:expr) => { + let mut __root = $crate::dom::bindings::trace::RootableVec::new_unrooted(); + let mut $name = $crate::dom::bindings::trace::RootedVec::new(&mut __root, $iter); + } +} |