AK: Remove virtual destructors from non-virtual classes
Problem: - Some classes have `virtual` destructors despite not having any virtual functions. This causes the classes to have a v-table and perform extra jumps at destruction time when there is no need. Solution: - Remove `virtual` keyword from destructors where there are no other virtual functions. - Remove the destructor completely when the default destructor can be used.
This commit is contained in:
parent
fcd3b9a0df
commit
4378d36f67
Notes:
sideshowbarker
2024-07-18 19:13:39 +09:00
Author: https://github.com/ldm5180 Commit: https://github.com/SerenityOS/serenity/commit/4378d36f670 Pull-request: https://github.com/SerenityOS/serenity/pull/6573 Reviewed-by: https://github.com/bgianfo ✅
2 changed files with 2 additions and 4 deletions
|
@ -17,7 +17,7 @@ template<Integral K, typename V, IntrusiveRedBlackTreeNode<K> V::*member>
|
|||
class IntrusiveRedBlackTree : public BaseRedBlackTree<K> {
|
||||
public:
|
||||
IntrusiveRedBlackTree() = default;
|
||||
virtual ~IntrusiveRedBlackTree() override
|
||||
~IntrusiveRedBlackTree()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
|
|
@ -33,12 +33,10 @@ public:
|
|||
: key(key)
|
||||
{
|
||||
}
|
||||
virtual ~Node() {};
|
||||
};
|
||||
|
||||
protected:
|
||||
BaseRedBlackTree() = default; // These are protected to ensure no one instantiates the leaky base red black tree directly
|
||||
virtual ~BaseRedBlackTree() {};
|
||||
|
||||
void rotate_left(Node* subtree_root)
|
||||
{
|
||||
|
@ -418,7 +416,7 @@ template<Integral K, typename V>
|
|||
class RedBlackTree : public BaseRedBlackTree<K> {
|
||||
public:
|
||||
RedBlackTree() = default;
|
||||
virtual ~RedBlackTree() override
|
||||
~RedBlackTree()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue