aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/macros.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-23 11:36:06 +0200
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 12:00:26 +0200
commit9b2eb775302b84542ab8fea921ab441342fe79c3 (patch)
tree6d92c728a0e303e4cfcf012531ae9eefd301f8fa /components/script/dom/macros.rs
parentd0b2e826ef4a79a0c4b0b33d4a66f0ab5c3c9d61 (diff)
downloadservo-9b2eb775302b84542ab8fea921ab441342fe79c3.tar.gz
servo-9b2eb775302b84542ab8fea921ab441342fe79c3.zip
Do not lazy initialize RareData on its getters
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r--components/script/dom/macros.rs23
1 files changed, 8 insertions, 15 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs
index 0fb51c7d8fd..de531f0c53f 100644
--- a/components/script/dom/macros.rs
+++ b/components/script/dom/macros.rs
@@ -635,29 +635,22 @@ macro_rules! handle_potential_webgl_error {
macro_rules! impl_rare_data (
($type:ty) => (
- fn init_rare_data(&self) {
- let mut rare_data = self.rare_data.borrow_mut();
- if rare_data.is_none() {
- *rare_data = Some(Default::default());
- }
- }
-
fn rare_data(&self) -> Ref<Option<Box<$type>>> {
- self.init_rare_data();
self.rare_data.borrow()
}
- fn rare_data_mut(&self) -> RefMut<Option<Box<$type>>> {
- self.init_rare_data();
- self.rare_data.borrow_mut()
+ fn ensure_rare_data(&self) -> RefMut<Box<$type>> {
+ let mut rare_data = self.rare_data.borrow_mut();
+ if rare_data.is_none() {
+ *rare_data = Some(Default::default());
+ }
+ RefMut::map(rare_data, |rare_data| {
+ rare_data.as_mut().unwrap()
+ })
}
#[allow(unsafe_code)]
fn rare_data_for_layout(&self) -> &Option<Box<$type>> {
- let mut rare_data = self.rare_data.borrow_mut_for_layout();
- if rare_data.is_none() {
- *rare_data = Some(Default::default());
- }
unsafe { self.rare_data.borrow_for_layout() }
}
);