From 0d8c9024eec12d57270cca1cf6bfc7d03c0ca229 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 18 Mar 2021 21:50:52 +0100 Subject: [PATCH] LibWeb: Add fast_is for CSSRule subclasses Since we already have a type enum for these, let's use it to make is bypass dynamic_cast for CSS rules. These were often near the top of random browser profiles. --- Userland/Libraries/LibWeb/CSS/CSSImportRule.h | 3 +++ Userland/Libraries/LibWeb/CSS/CSSRule.h | 3 +++ Userland/Libraries/LibWeb/CSS/CSSStyleRule.h | 3 +++ 3 files changed, 9 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/CSSImportRule.h b/Userland/Libraries/LibWeb/CSS/CSSImportRule.h index 2c752daab7..e097f80888 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSImportRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSImportRule.h @@ -60,4 +60,7 @@ private: RefPtr m_style_sheet; }; +template<> +inline bool CSSRule::fast_is() const { return type() == CSSRule::Type::Import; } + } diff --git a/Userland/Libraries/LibWeb/CSS/CSSRule.h b/Userland/Libraries/LibWeb/CSS/CSSRule.h index 63fa5c1868..d7f3b51eeb 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSRule.h @@ -47,6 +47,9 @@ public: virtual StringView class_name() const = 0; virtual Type type() const = 0; + template + bool fast_is() const = delete; + private: }; diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h b/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h index e8db816f6c..abee9ce941 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h @@ -59,4 +59,7 @@ private: NonnullRefPtr m_declaration; }; +template<> +inline bool CSSRule::fast_is() const { return type() == CSSRule::Type::Style; } + }