From a6131634f1055257f9e7079f3f9384b641c3cd54 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 23 Sep 2023 13:03:59 +0200 Subject: [PATCH] LibWeb: Add fast_is() for HTMLSlotElement 2.4x speed-up on StyleBench :^) --- Userland/Libraries/LibWeb/DOM/Node.h | 1 + Userland/Libraries/LibWeb/HTML/HTMLSlotElement.h | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/Userland/Libraries/LibWeb/DOM/Node.h b/Userland/Libraries/LibWeb/DOM/Node.h index 5bd932328f..f1be385128 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.h +++ b/Userland/Libraries/LibWeb/DOM/Node.h @@ -103,6 +103,7 @@ public: virtual bool is_html_table_cell_element() const { return false; } virtual bool is_html_br_element() const { return false; } virtual bool is_html_button_element() const { return false; } + virtual bool is_html_slot_element() const { return false; } virtual bool is_navigable_container() const { return false; } WebIDL::ExceptionOr> pre_insert(JS::NonnullGCPtr, JS::GCPtr); diff --git a/Userland/Libraries/LibWeb/HTML/HTMLSlotElement.h b/Userland/Libraries/LibWeb/HTML/HTMLSlotElement.h index cef72057ff..d468c86a67 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLSlotElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLSlotElement.h @@ -39,6 +39,8 @@ public: private: HTMLSlotElement(DOM::Document&, DOM::QualifiedName); + virtual bool is_html_slot_element() const override { return true; } + virtual void initialize(JS::Realm&) override; virtual void visit_edges(JS::Cell::Visitor&) override; @@ -47,3 +49,10 @@ private: }; } + +namespace Web::DOM { + +template<> +inline bool Node::fast_is() const { return is_html_slot_element(); } + +}