Since we already have a type enum for these, let's use it to make is<T> bypass dynamic_cast for CSS rules. These were often near the top of random browser profiles.
@@ -60,4 +60,7 @@ private:
RefPtr<CSSStyleSheet> m_style_sheet;
};
+template<>
+inline bool CSSRule::fast_is<CSSImportRule>() const { return type() == CSSRule::Type::Import; }
+
}
@@ -47,6 +47,9 @@ public:
virtual StringView class_name() const = 0;
virtual Type type() const = 0;
+ template<typename T>
+ bool fast_is() const = delete;
private:
@@ -59,4 +59,7 @@ private:
NonnullRefPtr<CSSStyleDeclaration> m_declaration;
+inline bool CSSRule::fast_is<CSSStyleRule>() const { return type() == CSSRule::Type::Style; }