aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorMaurice Kalinowski <maurice.kalinowski@theqtcompany.com>2015-12-21 09:17:29 +0100
committerSimon Hausmann <simon.hausmann@theqtcompany.com>2016-01-16 10:33:06 +0000
commit9e980750c6647ffcf2cb95e95e63fa8335924866 (patch)
tree72f5519a6c871028e0461535a1993996b5eb1422 /src/qml
parentf2dc1ef7390c4dd05a54958da1942399e26e3fde (diff)
WinRT: Enable JIT for x86/x64 target platforms
This only works for Windows 10 and later. Setting the "Code Generation" capability in the manifest, WinRT applications can use JIT for Windows 10 Desktop. Update the Allocator in regards to this and also update the VirtualProtectFromApp section. When the engine gets initialized, check for marking an area as executable. If it fails, fallback to interpreter mode. This does not affect ARM platforms, as we do not have calling conventions yet. It is implicitly disabled as V4_ENABLE_JIT is not defined. [ChangeLog][WinRT] Enable JIT for x86/x64 targets on Windows 10 and later. Change-Id: Ie05add5263f71387c5ce98456b9bec86c6c07ceb Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp3
-rw-r--r--src/qml/jsruntime/qv4global_p.h2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
index 4c525b453f..11c8d5ef06 100644
--- a/src/qml/jsruntime/qv4engine.cpp
+++ b/src/qml/jsruntime/qv4engine.cpp
@@ -219,7 +219,8 @@ ExecutionEngine::ExecutionEngine(EvalISelFactory *factory)
bool jitDisabled = true;
#ifdef V4_ENABLE_JIT
- static const bool forceMoth = !qEnvironmentVariableIsEmpty("QV4_FORCE_INTERPRETER");
+ static const bool forceMoth = !qEnvironmentVariableIsEmpty("QV4_FORCE_INTERPRETER") ||
+ !OSAllocator::canAllocateExecutableMemory();
if (forceMoth) {
factory = new Moth::ISelFactory;
} else {
diff --git a/src/qml/jsruntime/qv4global_p.h b/src/qml/jsruntime/qv4global_p.h
index 0fc5af8380..b47cf3cab4 100644
--- a/src/qml/jsruntime/qv4global_p.h
+++ b/src/qml/jsruntime/qv4global_p.h
@@ -105,7 +105,7 @@ inline double trunc(double d) { return d > 0 ? floor(d) : ceil(d); }
// Black list some platforms
#if defined(V4_ENABLE_JIT)
-#if defined(Q_OS_IOS) || defined(Q_OS_WINRT) || defined(Q_OS_TVOS)
+#if defined(Q_OS_IOS) || defined(Q_OS_TVOS)
# undef V4_ENABLE_JIT
#endif
#endif