aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4engine_p.h
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@qt.io>2018-02-16 14:19:25 +0100
committerOliver Wolff <oliver.wolff@qt.io>2018-02-22 06:30:29 +0000
commitab03ee7b7e12ae64556513e4791b0d4d55ea26c4 (patch)
tree936f18188bf52ce75bbc50e4428cd3953feb00f3 /src/qml/jsruntime/qv4engine_p.h
parentc9398266d804d570f305590df9481028c9880175 (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.h8
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