summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-04-05 13:36:42 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-05-06 10:27:18 -0700
commit3b46f07ffa2e471eaf0f3cca5f18952044db32a6 (patch)
tree95cb22844f004ad42effc775892628d46e43c6bf
parent67b9baac52f7078af772f76b15743080282b48ef (diff)
QObjectPrivate: mark inline functions not meant to be used elsewhere
The `inline` keyword does not control inlining, as we all know (use Q_ALWAYS_INLINE to force inlining, if required). However, it does control the emission of the out-of-line copy of an inline function, if the compiler did inline it where it got used: with the keyword, no copy is required, which is our objective here. Furthermore, we compile with -fvisibility-inlines-hidden with GCC-compatible compilers (all but MSVC and Integrity's), which means those functions will never be in the ABI of QtCore: they'll either have been inlined with no out-of-line copy, or that out-of-line emission is hidden. Change-Id: If2e0f4b2190341ebaa31fffd16e31584561669f2 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
-rw-r--r--src/corelib/kernel/qobject.cpp10
-rw-r--r--src/corelib/kernel/qobject_p.h6
2 files changed, 8 insertions, 8 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index af87c7d0e3..0cc5244b65 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -516,7 +516,7 @@ QObjectList QObjectPrivate::senderList() const
return returnValue;
}
-void QObjectPrivate::ensureConnectionData()
+inline void QObjectPrivate::ensureConnectionData()
{
if (connections.loadRelaxed())
return;
@@ -535,7 +535,7 @@ void QObjectPrivate::ensureConnectionData()
Will also add the connection in the sender's list of the receiver.
*/
-void QObjectPrivate::addConnection(int signal, Connection *c)
+inline void QObjectPrivate::addConnection(int signal, Connection *c)
{
Q_ASSERT(c->sender == q_ptr);
ensureConnectionData();
@@ -657,7 +657,7 @@ void QObjectPrivate::ConnectionData::cleanOrphanedConnectionsImpl(QObject *sende
}
}
-void QObjectPrivate::ConnectionData::deleteOrphaned(QObjectPrivate::ConnectionOrSignalVector *o)
+inline void QObjectPrivate::ConnectionData::deleteOrphaned(QObjectPrivate::ConnectionOrSignalVector *o)
{
while (o) {
QObjectPrivate::ConnectionOrSignalVector *next = nullptr;
@@ -1345,7 +1345,7 @@ QObject::~QObject()
d->setParent_helper(nullptr);
}
-QObjectPrivate::Connection::~Connection()
+inline QObjectPrivate::Connection::~Connection()
{
if (ownArgumentTypes) {
const int *v = argumentTypes.loadRelaxed();
@@ -5532,7 +5532,7 @@ bool QObjectPrivate::disconnect(const QObject *sender, int signal_index, const Q
\internal
\threadsafe
*/
-bool QObjectPrivate::disconnect(QObjectPrivate::Connection *c)
+inline bool QObjectPrivate::disconnect(QObjectPrivate::Connection *c)
{
if (!c)
return false;
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index ed32a90497..5de0e53d4b 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -173,7 +173,7 @@ public:
QObjectList receiverList(const char *signal) const;
QObjectList senderList() const;
- void addConnection(int signal, Connection *c);
+ inline void addConnection(int signal, Connection *c);
static QObjectPrivate *get(QObject *o) { return o->d_func(); }
static const QObjectPrivate *get(const QObject *o) { return o->d_func(); }
@@ -211,9 +211,9 @@ public:
static bool disconnect(const QObject *sender, int signal_index, void **slot);
static bool disconnect(const QObject *sender, int signal_index, const QObject *receiver,
void **slot);
- static bool disconnect(Connection *c);
+ static inline bool disconnect(Connection *c);
- void ensureConnectionData();
+ inline void ensureConnectionData();
virtual std::string flagsForDumping() const;