aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/macros.rs
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2016-07-04 20:24:06 +0300
committerEduard Burtescu <edy.burt@gmail.com>2016-07-04 20:59:06 +0300
commitb79a7d468e99f335dce49cc48342f0cd447eb855 (patch)
treea98f95839eb04fcda6bf5ea8f4d1ee0e53423fdb /components/script/dom/macros.rs
parent0db1faf87651c99223683faafc836353f016ffb3 (diff)
downloadservo-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.rs15
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);
+ }
+}