diff options
author | Oliver Wolff <oliver.wolff@qt.io> | 2018-02-16 14:19:25 +0100 |
---|---|---|
committer | Oliver Wolff <oliver.wolff@qt.io> | 2018-02-22 06:30:29 +0000 |
commit | ab03ee7b7e12ae64556513e4791b0d4d55ea26c4 (patch) | |
tree | 936f18188bf52ce75bbc50e4428cd3953feb00f3 /src/qml/jsruntime/qv4engine_p.h | |
parent | c9398266d804d570f305590df9481028c9880175 (diff) |
WinRT: Do not call canAllocateExecutableMemory from static initializer
When the code generation capability is not set, the first call of
canAllocateExecutableMemory will cause a warning about suboptimal
performance. The qWarning code checks, which thread caused the message
and QThread::current sets QCoreApplicationPrivate;s theMainThread when
it is called for the first time on Windows.
If we call that function inside a static initializer, it will be called
before QCoreApplication is created and thus set the main thread to the
one that called the function. This will cause a warning about QApplication
not being created inside the main() thread, but more importantly,
delivering of events will not work in WinRT applications afterwards.
Task-number: QTBUG-66418
Change-Id: I3b6bf804983644b5ae5fe2288a587dc95fab2c8b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4engine_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4engine_p.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h index 930ad8fed1..a37c640431 100644 --- a/src/qml/jsruntime/qv4engine_p.h +++ b/src/qml/jsruntime/qv4engine_p.h @@ -368,6 +368,9 @@ public: // but any time a QObject is wrapped a second time in another engine, we have to do // bookkeeping. MultiplyWrappedQObjectMap *m_multiplyWrappedQObjects; +#if defined(V4_ENABLE_JIT) && !defined(V4_BOOTSTRAP) + const bool m_canAllocateExecutableMemory; +#endif int internalClassIdCount = 0; @@ -487,7 +490,7 @@ public: bool canJIT(Function *f = nullptr) { #if defined(V4_ENABLE_JIT) && !defined(V4_BOOTSTRAP) - if (!canAllocateExecutableMemory) + if (!m_canAllocateExecutableMemory) return false; if (f) return f->interpreterCallCount >= jitCallCountThreshold; @@ -506,9 +509,6 @@ private: QScopedPointer<QV4::Profiling::Profiler> m_profiler; #endif int jitCallCountThreshold; -#if defined(V4_ENABLE_JIT) && !defined(V4_BOOTSTRAP) - static const bool canAllocateExecutableMemory; -#endif }; // This is a trick to tell the code generators that functions taking a NoThrowContext won't |