浏览代码

LibWeb: Add fast_is<T>() for SVGUseElement

is<SVGUseElement> quite hot in profiles
Aliaksandr Kalenik 2 年之前
父节点
当前提交
04a5196a5d
共有 2 个文件被更改,包括 10 次插入0 次删除
  1. 1 0
      Userland/Libraries/LibWeb/DOM/Node.h
  2. 9 0
      Userland/Libraries/LibWeb/SVG/SVGUseElement.h

+ 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(); }
+
+}