1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 06:37:35 +00:00

LibWeb: Add fast_is<T>() for some DOM and layout node subclasses

The generic is<T>() uses dynamic_cast which is fine in the majority
of cases, but when one of them shows up in profiles, we can make it
faster by answering the is-a question manually.
This commit is contained in:
Andreas Kling 2021-01-17 09:34:01 +01:00
parent 65fa0c2774
commit fd441b954d
7 changed files with 24 additions and 17 deletions

View file

@ -52,8 +52,14 @@ public:
void for_each_fragment(Callback) const;
virtual void split_into_lines(InlineFormattingContext&, LayoutMode) override;
private:
virtual bool is_block_box() const final { return true; }
};
template<>
inline bool Node::fast_is<BlockBox>() const { return is_block_box(); }
template<typename Callback>
void BlockBox::for_each_fragment(Callback callback)
{