Browse Source

LibWeb: Add fast_is<T>() for SVGUseElement

is<SVGUseElement> quite hot in profiles
Aliaksandr Kalenik 2 years ago
parent
commit
04a5196a5d

+ 1 - 0
Userland/Libraries/LibWeb/DOM/Node.h

@@ -75,6 +75,7 @@ public:
     virtual bool is_svg_container() const { return false; }
     virtual bool is_svg_element() const { return false; }
     virtual bool is_svg_svg_element() const { return false; }
+    virtual bool is_svg_use_element() const { return false; }
 
     bool in_a_document_tree() const;
 

+ 9 - 0
Userland/Libraries/LibWeb/SVG/SVGUseElement.h

@@ -40,6 +40,8 @@ private:
     virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
     virtual void visit_edges(Cell::Visitor&) override;
 
+    virtual bool is_svg_use_element() const override { return true; }
+
     Optional<StringView> parse_id_from_href(DeprecatedString const& href);
 
     JS::GCPtr<DOM::Element> referenced_element();
@@ -56,3 +58,10 @@ private:
 };
 
 }
+
+namespace Web::DOM {
+
+template<>
+inline bool Node::fast_is<SVG::SVGUseElement>() const { return is_svg_use_element(); }
+
+}