From a6c23d3db59ebbf415d974893073ca507fa057ad Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 19 Mar 2024 10:33:32 +0100 Subject: [PATCH] LibWeb: Make Element::has_class() an inline function This is extremely hot when running CSS selectors, so let's make it easier for it to be inlined. --- Userland/Libraries/LibWeb/DOM/Element.cpp | 13 ------------- Userland/Libraries/LibWeb/DOM/Element.h | 12 ++++++++++++ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index a6cc5269d7a..fdff9890f13 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -374,19 +374,6 @@ Vector Element::get_attribute_names() const return names; } -bool Element::has_class(FlyString const& class_name, CaseSensitivity case_sensitivity) const -{ - if (case_sensitivity == CaseSensitivity::CaseSensitive) { - return any_of(m_classes, [&](auto& it) { - return it == class_name; - }); - } else { - return any_of(m_classes, [&](auto& it) { - return it.equals_ignoring_ascii_case(class_name); - }); - } -} - JS::GCPtr Element::create_layout_node(NonnullRefPtr style) { if (local_name() == "noscript" && document().is_scripting_enabled()) diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index 5911c1b3651..abb8a0df991 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -470,6 +470,18 @@ inline Element const* Node::parent_element() const return static_cast(parent); } +inline bool Element::has_class(FlyString const& class_name, CaseSensitivity case_sensitivity) const +{ + if (case_sensitivity == CaseSensitivity::CaseSensitive) { + return any_of(m_classes, [&](auto& it) { + return it == class_name; + }); + } + return any_of(m_classes, [&](auto& it) { + return it.equals_ignoring_ascii_case(class_name); + }); +} + WebIDL::ExceptionOr validate_and_extract(JS::Realm&, Optional namespace_, FlyString const& qualified_name); }