Inline the QPropertyBindingPrivatePtr destructor

In many cases, it only derefs and does nothing else. Inline the fast
code path.

Change-Id: Ib605c385c1683f7833f7189c84d6cf4eb5b0e59e
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit eda4c29eb26dab32e22040bdda0b9b9109b1408b)
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
bb10
Lars Knoll 2020-11-25 12:58:11 +01:00 committed by Fabian Kosmale
parent 1181286d43
commit f538ce920e
2 changed files with 8 additions and 4 deletions

View File

@ -47,10 +47,9 @@ QT_BEGIN_NAMESPACE
using namespace QtPrivate;
QPropertyBindingPrivatePtr::~QPropertyBindingPrivatePtr()
void QPropertyBindingPrivatePtr::destroyAndFreeMemory()
{
if (d && (--d->ref == 0))
QPropertyBindingPrivate::destroyAndFreeMemory(static_cast<QPropertyBindingPrivate *>(d));
QPropertyBindingPrivate::destroyAndFreeMemory(static_cast<QPropertyBindingPrivate *>(d));
}
void QPropertyBindingPrivatePtr::reset(QtPrivate::RefCounted *ptr) noexcept

View File

@ -85,7 +85,12 @@ public:
T *take() noexcept { T *x = d; d = nullptr; return x; }
QPropertyBindingPrivatePtr() noexcept : d(nullptr) { }
Q_CORE_EXPORT ~QPropertyBindingPrivatePtr();
~QPropertyBindingPrivatePtr()
{
if (d && (--d->ref == 0))
destroyAndFreeMemory();
}
Q_CORE_EXPORT void destroyAndFreeMemory();
explicit QPropertyBindingPrivatePtr(T *data) noexcept : d(data) { if (d) d->addRef(); }
QPropertyBindingPrivatePtr(const QPropertyBindingPrivatePtr &o) noexcept