From 1576dd4c5b8d986620f8d882cb37485b2a5f1725 Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Tue, 13 Nov 2018 12:51:05 +0000 Subject: [PATCH] style: Store variable references with a boxed slice rather than a PrecomputedHashSet. Once we've parsed the variable references, there is no need to keep an entire HashSet object around, as all we do is iterate over the values. Differential Revision: https://phabricator.services.mozilla.com/D11735 --- components/style/custom_properties.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/components/style/custom_properties.rs b/components/style/custom_properties.rs index 31c3dc207f5..c1d337ac2fa 100644 --- a/components/style/custom_properties.rs +++ b/components/style/custom_properties.rs @@ -109,7 +109,7 @@ pub struct VariableValue { references_environment: bool, /// Custom property names in var() functions. - references: PrecomputedHashSet, + references: Box<[Name]>, } impl ToCss for SpecifiedValue { @@ -278,7 +278,7 @@ impl VariableValue { css: String::new(), last_token_type: TokenSerializationType::nothing(), first_token_type: TokenSerializationType::nothing(), - references: PrecomputedHashSet::default(), + references: Default::default(), references_environment: false, } } @@ -335,11 +335,16 @@ impl VariableValue { let (first_token_type, css, last_token_type) = parse_self_contained_declaration_value(input, Some(&mut references))?; + let custom_property_references = references.custom_property_references + .into_iter() + .collect::>() + .into_boxed_slice(); + Ok(Arc::new(VariableValue { css: css.into_owned(), first_token_type, last_token_type, - references: references.custom_property_references, + references: custom_property_references, references_environment: references.references_environment, })) }