[SCM] qtdeclarative packaging branch, experimental, updated. debian/5.7.1-2

Dmitry Shachnev mitya57 at moszumanska.debian.org
Mon Apr 17 09:29:43 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 experimental 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