aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlobjectcreator_p.h
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@qt.io>2018-01-17 15:54:02 +0100
committerErik Verbruggen <erik.verbruggen@qt.io>2018-01-18 08:53:01 +0000
commit95892bd7b20a881c9a50791d9c1a9309f2f01d28 (patch)
tree7b7163c7193923adc4ce13ca9347bb00b0eaa5d2 /src/qml/qml/qqmlobjectcreator_p.h
parent15a81d9689cad5c957aed09161fdab253b27c130 (diff)
Allow for currentQmlContext to be inlined
Change-Id: Ic2a98a3a4b4362036222df05a92c0bed633c1d1c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlobjectcreator_p.h')
-rw-r--r--src/qml/qml/qqmlobjectcreator_p.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlobjectcreator_p.h b/src/qml/qml/qqmlobjectcreator_p.h
index 4536b2e1af..82fe22af72 100644
--- a/src/qml/qml/qqmlobjectcreator_p.h
+++ b/src/qml/qml/qqmlobjectcreator_p.h
@@ -123,7 +123,8 @@ private:
void registerObjectWithContextById(const QV4::CompiledData::Object *object, QObject *instance) const;
- QV4::Heap::QmlContext *currentQmlContext();
+ inline QV4::Heap::QmlContext *currentQmlContext();
+ Q_NEVER_INLINE void createQmlContext();
enum Phase {
Startup,
@@ -173,6 +174,14 @@ private:
QRecursionWatcher<QQmlObjectCreatorSharedState, &QQmlObjectCreatorSharedState::recursionNode> watcher;
};
+QV4::Heap::QmlContext *QQmlObjectCreator::currentQmlContext()
+{
+ if (Q_UNLIKELY(!_qmlContext->isManaged()))
+ createQmlContext(); // less common slow path
+
+ return _qmlContext->d();
+}
+
QT_END_NAMESPACE
#endif // QQMLOBJECTCREATOR_P_H