[SCM] qtdeclarative packaging branch, master, updated. debian/5.7.1-1-3-ge83a52d
Lisandro Damián Nicanor Pérez
lisandro at moszumanska.debian.org
Mon Jan 2 15:10:03 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtdeclarative.git;a=commitdiff;h=e83a52d
The following commit has been merged in the master branch:
commit e83a52d615289267223091bcf7799fd634fb1eea
Author: Lisandro Damián Nicanor Pérez Meyer <perezmeyer at gmail.com>
Date: Mon Jan 2 12:09:45 2017 -0300
Do not make lack of SSE2 support on x86-32 fatal.
Use Guillem's patch.
---
debian/changelog | 4 +
...make-lack-of-SSE2-support-on-x86-32-fatal.patch | 134 +++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 139 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index baa2f89..10d808e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,10 @@ qtdeclarative-opensource-src (5.7.1-2) UNRELEASED; urgency=medium
* Drop obsolete Breaks/Replaces. Qt versions before 5.3.2 were never part
of a stable release (Jessie and Wheezy-backports have 5.3.2).
+ [ Lisandro Damián Nicanor Pérez Meyer ]
+ * Do not make lack of SSE2 support on x86-32 fatal by using Guillem Jover's
+ patch (Closes: #792594). Thanks Guillem!
+
-- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Thu, 29 Dec 2016 00:52:28 +0300
qtdeclarative-opensource-src (5.7.1-1) unstable; urgency=medium
diff --git a/debian/patches/Do-not-make-lack-of-SSE2-support-on-x86-32-fatal.patch b/debian/patches/Do-not-make-lack-of-SSE2-support-on-x86-32-fatal.patch
new file mode 100644
index 0000000..ff0c24e
--- /dev/null
+++ b/debian/patches/Do-not-make-lack-of-SSE2-support-on-x86-32-fatal.patch
@@ -0,0 +1,134 @@
+From 4950c366b12265f1ea390a6feb8dbbd0d850d206 Mon Sep 17 00:00:00 2001
+From: Guillem Jover <guillem at hadrons.org>
+Date: Mon, 12 Oct 2015 01:45:37 +0200
+Subject: [PATCH v2] Do not make lack of SSE2 support on x86-32 fatal
+
+When an x86-32 CPU does not have SSE2 support (which is the case for
+all AMD CPUs, and older Intel CPUs), fallback to use the interpreter,
+otherwise use the JIT engine.
+
+Even then, make the lack of SSE2 support on x86-32 fatal when trying
+to instantiate a JIT engine, which does require it.
+
+Refactor the required CPU support check into a new pair of privately
+exported functions to avoid duplicating the logic, and do so in
+functions instead of class members to avoid changing the class
+signatures.
+
+Version: 5.7.x
+Bug-Debian: https://bugs.debian.org/792594
+---
+ src/qml/jit/qv4isel_masm.cpp | 2 ++
+ src/qml/jit/qv4isel_masm_p.h | 18 ++++++++++++++++++
+ src/qml/jsruntime/qv4engine.cpp | 1 +
+ src/qml/qml/v8/qv8engine.cpp | 7 -------
+ tools/qmljs/qmljs.cpp | 7 +++----
+ 5 files changed, 24 insertions(+), 11 deletions(-)
+
+diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp
+index d047623ac..5c149f9d2 100644
+--- a/src/qml/jit/qv4isel_masm.cpp
++++ b/src/qml/jit/qv4isel_masm.cpp
+@@ -265,6 +265,8 @@ InstructionSelection::InstructionSelection(QQmlEnginePrivate *qmlEngine, QV4::Ex
+ , compilationUnit(new CompilationUnit)
+ , qmlEngine(qmlEngine)
+ {
++ checkRequiredCpuSupport();
++
+ compilationUnit->codeRefs.resize(module->functions.size());
+ }
+
+diff --git a/src/qml/jit/qv4isel_masm_p.h b/src/qml/jit/qv4isel_masm_p.h
+index 1e6ac1f51..d6c1b414f 100644
+--- a/src/qml/jit/qv4isel_masm_p.h
++++ b/src/qml/jit/qv4isel_masm_p.h
+@@ -59,6 +59,7 @@
+
+ #include <QtCore/QHash>
+ #include <QtCore/QStack>
++#include <private/qsimd_p.h>
+ #include <config.h>
+ #include <wtf/Vector.h>
+
+@@ -71,6 +72,23 @@ QT_BEGIN_NAMESPACE
+ namespace QV4 {
+ namespace JIT {
+
++Q_QML_PRIVATE_EXPORT inline bool hasRequiredCpuSupport()
++{
++#ifdef Q_PROCESSOR_X86_32
++ return qCpuHasFeature(SSE2);
++#else
++ return true;
++#endif
++}
++
++Q_QML_PRIVATE_EXPORT inline void checkRequiredCpuSupport()
++{
++#ifdef Q_PROCESSOR_X86_32
++ if (!qCpuHasFeature(SSE2))
++ qFatal("This program requires an X86 processor that supports SSE2 extension, at least a Pentium 4 or newer");
++#endif
++}
++
+ class Q_QML_EXPORT InstructionSelection:
+ protected IR::IRDecoder,
+ public EvalInstructionSelection
+diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp
+index 26f473a7a..5e4100ac0 100644
+--- a/src/qml/jsruntime/qv4engine.cpp
++++ b/src/qml/jsruntime/qv4engine.cpp
+@@ -162,6 +162,7 @@ ExecutionEngine::ExecutionEngine(EvalISelFactory *factory)
+
+ #ifdef V4_ENABLE_JIT
+ static const bool forceMoth = !qEnvironmentVariableIsEmpty("QV4_FORCE_INTERPRETER") ||
++ !JIT::hasRequiredCpuSupport() ||
+ !OSAllocator::canAllocateExecutableMemory();
+ if (forceMoth) {
+ factory = new Moth::ISelFactory;
+diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp
+index 46fd4fbbe..20ed1ddb4 100644
+--- a/src/qml/qml/v8/qv8engine.cpp
++++ b/src/qml/qml/v8/qv8engine.cpp
+@@ -65,7 +65,6 @@
+ #include <QtCore/qjsonvalue.h>
+ #include <QtCore/qdatetime.h>
+ #include <QtCore/qdatastream.h>
+-#include <private/qsimd_p.h>
+
+ #include <private/qv4value_p.h>
+ #include <private/qv4dateobject_p.h>
+@@ -130,12 +129,6 @@ QV8Engine::QV8Engine(QJSEngine* qq)
+ , m_xmlHttpRequestData(0)
+ , m_listModelData(0)
+ {
+-#ifdef Q_PROCESSOR_X86_32
+- if (!qCpuHasFeature(SSE2)) {
+- qFatal("This program requires an X86 processor that supports SSE2 extension, at least a Pentium 4 or newer");
+- }
+-#endif
+-
+ QML_MEMORY_SCOPE_STRING("QV8Engine::QV8Engine");
+ qMetaTypeId<QJSValue>();
+ qMetaTypeId<QList<int> >();
+diff --git a/tools/qmljs/qmljs.cpp b/tools/qmljs/qmljs.cpp
+index 68aa52ce9..94b10f2b3 100644
+--- a/tools/qmljs/qmljs.cpp
++++ b/tools/qmljs/qmljs.cpp
+@@ -135,11 +135,10 @@ int main(int argc, char *argv[])
+ enum {
+ use_masm,
+ use_moth
+- } mode;
++ } mode = use_moth;
+ #ifdef V4_ENABLE_JIT
+- mode = use_masm;
+-#else
+- mode = use_moth;
++ if (QV4::JIT::hasRequiredCpuSupport())
++ mode = use_masm;
+ #endif
+
+ bool runAsQml = false;
+--
+2.11.0
diff --git a/debian/patches/series b/debian/patches/series
index a8d53d1..a818374 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,3 +4,4 @@ fix_tst_qqmlapplicationengine.diff
# Debian patches
disableopengltests.patch
fix_test_remove_qlibraryinfo.patch
+Do-not-make-lack-of-SSE2-support-on-x86-32-fatal.patch
--
qtdeclarative packaging
More information about the pkg-kde-commits
mailing list