From bb39ca9b4a113925a84067fe367ff6af6c8fbf55 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 3 Aug 2023 13:26:29 +0200 Subject: [PATCH] LibWeb: Add fast_is() This dynamic_cast was ~6% of runtime when mousing around on Discord. --- Userland/Libraries/LibWeb/DOM/Node.h | 1 + Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.h | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/Userland/Libraries/LibWeb/DOM/Node.h b/Userland/Libraries/LibWeb/DOM/Node.h index ca817cb9d0..3cf1da2e9c 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.h +++ b/Userland/Libraries/LibWeb/DOM/Node.h @@ -74,6 +74,7 @@ public: virtual bool requires_svg_container() const { return false; } virtual bool is_svg_container() const { return false; } virtual bool is_svg_element() const { return false; } + virtual bool is_svg_graphics_element() const { return false; } virtual bool is_svg_svg_element() const { return false; } virtual bool is_svg_use_element() const { return false; } diff --git a/Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.h b/Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.h index 060c05dc98..a44e093590 100644 --- a/Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.h +++ b/Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.h @@ -56,8 +56,18 @@ protected: Optional svg_paint_computed_value_to_gfx_paint_style(SVGPaintContext const& paint_context, Optional const& paint_value) const; Gfx::AffineTransform m_transform = {}; + +private: + virtual bool is_svg_graphics_element() const final { return true; } }; Gfx::AffineTransform transform_from_transform_list(ReadonlySpan transform_list); } + +namespace Web::DOM { + +template<> +inline bool Node::fast_is() const { return is_svg_graphics_element(); } + +}