diff options
author | Sam Atkins <atkinssj@gmail.com> | 2021-08-20 12:08:53 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-08-25 12:14:34 +0200 |
commit | 6d39f4342d48e0be49f217ab491407123547e99f (patch) | |
tree | 422bbc12b867e7c39107ad922ce30a16e670d26a /Userland | |
parent | d2342caf426cecbeb3c28b77a7fa2e226228d385 (diff) | |
download | serenity-6d39f4342d48e0be49f217ab491407123547e99f.zip |
LibWeb: Use single shared instance of Inherit/InitialStyleValue
These are always the same, so we can avoid allocating them repeatedly
and just use a single instance of each. :^)
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 6 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/CSS/StyleValue.h | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index b901115d80..33fcfdb547 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -1404,9 +1404,9 @@ RefPtr<StyleValue> Parser::parse_builtin_value(ParsingContext const&, StyleCompo if (component_value.is(Token::Type::Ident)) { auto ident = component_value.token().ident(); if (ident.equals_ignoring_case("inherit")) - return InheritStyleValue::create(); + return InheritStyleValue::the(); if (ident.equals_ignoring_case("initial")) - return InitialStyleValue::create(); + return InitialStyleValue::the(); // FIXME: Implement `unset` keyword } @@ -2738,7 +2738,7 @@ RefPtr<StyleValue> Parser::parse_text_decoration_value(ParsingContext const& con decoration_style = IdentifierStyleValue::create(ValueID::Solid); // FIXME: Should default to 'currentcolor' special value: https://www.w3.org/TR/css-color-3/#currentcolor if (!decoration_color) - decoration_color = InitialStyleValue::create(); + decoration_color = InitialStyleValue::the(); return TextDecorationStyleValue::create(decoration_line.release_nonnull(), decoration_style.release_nonnull(), decoration_color.release_nonnull()); } diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index e294b8988e..fb53235286 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -534,7 +534,11 @@ private: class InitialStyleValue final : public StyleValue { public: - static NonnullRefPtr<InitialStyleValue> create() { return adopt_ref(*new InitialStyleValue); } + static NonnullRefPtr<InitialStyleValue> the() + { + static NonnullRefPtr<InitialStyleValue> instance = adopt_ref(*new InitialStyleValue); + return instance; + } virtual ~InitialStyleValue() override { } String to_string() const override { return "initial"; } @@ -548,7 +552,11 @@ private: class InheritStyleValue final : public StyleValue { public: - static NonnullRefPtr<InheritStyleValue> create() { return adopt_ref(*new InheritStyleValue); } + static NonnullRefPtr<InheritStyleValue> the() + { + static NonnullRefPtr<InheritStyleValue> instance = adopt_ref(*new InheritStyleValue); + return instance; + } virtual ~InheritStyleValue() override { } String to_string() const override { return "inherit"; } |