diff options
author | Marc Mutz <marc.mutz@qt.io> | 2023-06-23 17:11:35 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2023-06-25 15:28:23 +0000 |
commit | 3f2183ce2c41c5a998fcc1f83ca5ad4adc82b795 (patch) | |
tree | 68d4c39bf3dab05ffc221aeb9c16030d9521dfe0 /src/qml/qml/qqmlboundsignal_p.h | |
parent | f8c9fd6bfa5e6de4ac5d0176ebbc0292dbd031a2 (diff) |
QQmlRefCount: de-virtualize dtor
Now that QQmlRefCounted ensures no-one uses ~QQmlRefCount() directly
anymore, we can make it non-virtual, shrinking the
sizeof(QQmlRefCount) from 8/16 to 4/4 bytes (32/64 bit platforms).
This requires moving the release() function from QQmlRefCount down
into QQmlRefCounted<T>, and static_cast'ing *this to T before calling
delete.
We need to be careful, of course, that no derived class relied on the
implied virtualness of ~QQmlRefCount() making their dtors virtual, so
require that all classes that use QQmlRefCounted are either final or
have a virtual destructor.
Update the toolsupport test and the TypeInformationVersion, as
sizeof(QQmlRefCount) was one the items checked.
Fixes: QTBUG-114817
Change-Id: I69afd36ec5b63313842c1438e0244503603ed96f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlboundsignal_p.h')
-rw-r--r-- | src/qml/qml/qqmlboundsignal_p.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlboundsignal_p.h b/src/qml/qml/qqmlboundsignal_p.h index d33ae82e7b..ebb6c7e532 100644 --- a/src/qml/qml/qqmlboundsignal_p.h +++ b/src/qml/qml/qqmlboundsignal_p.h @@ -24,7 +24,7 @@ QT_BEGIN_NAMESPACE -class Q_QML_PRIVATE_EXPORT QQmlBoundSignalExpression +class Q_QML_PRIVATE_EXPORT QQmlBoundSignalExpression final : public QQmlJavaScriptExpression, public QQmlRefCounted<QQmlBoundSignalExpression> { |