LibWeb: Add fast_is<HTMLElement>()

This avoids slow RTTI lookups in selector matching.
This commit is contained in:
Andreas Kling 2022-07-27 16:04:31 +02:00
parent 9f32da1dbc
commit 2ad98fdf80
2 changed files with 8 additions and 0 deletions

View file

@ -87,6 +87,7 @@ public:
virtual bool is_editable() const;
virtual bool is_html_element() const { return false; }
virtual bool is_html_html_element() const { return false; }
virtual bool is_html_anchor_element() const { return false; }
virtual bool is_html_base_element() const { return false; }

View file

@ -53,6 +53,8 @@ protected:
virtual void parse_attribute(FlyString const& name, String const& value) override;
private:
virtual bool is_html_element() const final { return true; }
// ^HTML::GlobalEventHandlers
virtual DOM::EventTarget& global_event_handlers_to_event_target(FlyString const&) override { return *this; }
@ -73,3 +75,8 @@ private:
};
}
namespace Web::DOM {
template<>
inline bool Node::fast_is<HTML::HTMLElement>() const { return is_html_element(); }
}