[SCM] QtWebKit packaging branch, master, updated. debian/2.3.4.dfsg-2-3-g74abfd3

Lisandro Damián Nicanor Pérez lisandro at moszumanska.debian.org
Tue Oct 14 19:07:10 UTC 2014


Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtwebkit.git;a=commitdiff;h=14e5edf

The following commit has been merged in the master branch:
commit 14e5edf9e053755f4535b93b4fc06bd41f7ef868
Author: Lisandro Damián Nicanor Pérez Meyer <perezmeyer at gmail.com>
Date:   Tue Oct 14 16:05:57 2014 -0300

    Backport fix_cloop_on_big_endian_machines.patch
    
    Closes: #761040
---
 debian/changelog                                   |   3 +
 .../patches/fix_cloop_on_big_endian_machines.patch | 135 +++++++++++++++++++++
 debian/patches/series                              |   1 +
 3 files changed, 139 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index c312df2..48b1220 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,8 @@
 qtwebkit (2.3.4.dfsg-3) UNRELEASED; urgency=medium
 
+  [ Lisandro Damián Nicanor Pérez Meyer ]
+  * Backport fix_cloop_on_big_endian_machines.patch (Closes: #761040).
+
  -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org>  Tue, 14 Oct 2014 15:59:06 -0300
 
 qtwebkit (2.3.4.dfsg-2) unstable; urgency=medium
diff --git a/debian/patches/fix_cloop_on_big_endian_machines.patch b/debian/patches/fix_cloop_on_big_endian_machines.patch
new file mode 100644
index 0000000..f1f64c7
--- /dev/null
+++ b/debian/patches/fix_cloop_on_big_endian_machines.patch
@@ -0,0 +1,135 @@
+From 0c58a486f551e7e7b63d438e3d32f21f876327d1 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen at digia.com>
+Date: Thu, 9 Oct 2014 17:40:37 +0200
+Subject: [PATCH] Fix CLoop on big-endian machines
+
+Callee and ScopeChain are JSObject pointers and saved in the 64bit
+structure for JS registers. On a 32bit big-endian machine the actual
+pointer is offset by the PayloadOffset of 4 bytes, but on little-endian
+and 64bit architectures there is no offset.
+
+This patch fixes four places the payloadOffset was not correctly added
+on 32bit big-endian, and six places it was added on 64big big-endian
+when it shouldn't.
+
+Task-number: QTBUG-41896
+Change-Id: I46b474bee9822b8040d1b7b2e8f31ce42e0adefe
+Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte at digia.com>
+---
+ Source/JavaScriptCore/llint/LowLevelInterpreter.asm      |   25 +++++++++------
+ Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm |    2 -
+ 2 files changed, 16 insertions(+), 11 deletions(-)
+
+--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+@@ -87,6 +87,12 @@ else
+     const PayloadOffset = 0
+ end
+ 
++if JSVALUE64
++    const JSCellPayloadOffset = 0
++else
++    const JSCellPayloadOffset = PayloadOffset
++end
++
+ # Constant for reasoning about butterflies.
+ const IsArray                  = 1
+ const IndexingShapeMask        = 30
+@@ -161,7 +167,6 @@ else
+     const VectorBufferOffset = 4
+ end
+ 
+-
+ # Some common utilities.
+ macro crash()
+     if C_LOOP
+@@ -263,13 +268,13 @@ macro assertNotConstant(index)
+ end
+ 
+ macro functionForCallCodeBlockGetter(targetRegister)
+-    loadp Callee[cfr], targetRegister
++    loadp Callee + JSCellPayloadOffset[cfr], targetRegister
+     loadp JSFunction::m_executable[targetRegister], targetRegister
+     loadp FunctionExecutable::m_codeBlockForCall[targetRegister], targetRegister
+ end
+ 
+ macro functionForConstructCodeBlockGetter(targetRegister)
+-    loadp Callee[cfr], targetRegister
++    loadp Callee + JSCellPayloadOffset[cfr], targetRegister
+     loadp JSFunction::m_executable[targetRegister], targetRegister
+     loadp FunctionExecutable::m_codeBlockForConstruct[targetRegister], targetRegister
+ end
+@@ -684,7 +689,7 @@ _llint_op_resolve_global_var:
+ macro resolveScopedVarBody(resolveOperations)
+     # First ResolveOperation is to skip scope chain nodes
+     getScope(macro(dest)
+-                 loadp ScopeChain + PayloadOffset[cfr], dest
++                 loadp ScopeChain + JSCellPayloadOffset[cfr], dest
+              end,
+              ResolveOperation::m_scopesToSkip[resolveOperations], t1, t2)
+     loadp JSVariableObject::m_registers[t1], t1 # t1 now contains the activation registers
+@@ -709,7 +714,7 @@ _llint_op_resolve_scoped_var_on_top_scop
+     loadisFromInstruction(1, t3)
+ 
+     # We know we want the top scope chain entry
+-    loadp ScopeChain + PayloadOffset[cfr], t1
++    loadp ScopeChain + JSCellPayloadOffset[cfr], t1
+     loadp JSVariableObject::m_registers[t1], t1 # t1 now contains the activation registers
+     
+     # Second ResolveOperation tells us what offset to use
+@@ -731,7 +736,7 @@ _llint_op_resolve_scoped_var_with_top_sc
+                      loadp JSScope::m_next[t1], dest
+                  jmp .done
+                  .scopeChainNotCreated:
+-                     loadp ScopeChain + PayloadOffset[cfr], dest
++                     loadp ScopeChain + JSCellPayloadOffset[cfr], dest
+                  .done:
+              end, 
+              # Second ResolveOperation tells us how many more nodes to skip
+@@ -786,7 +791,7 @@ _llint_op_resolve_base_to_scope:
+     getResolveOperation(4, t0, t1)
+     # First ResolveOperation is to skip scope chain nodes
+     getScope(macro(dest)
+-                 loadp ScopeChain + PayloadOffset[cfr], dest
++                 loadp ScopeChain + JSCellPayloadOffset[cfr], dest
+              end,
+              ResolveOperation::m_scopesToSkip[t0], t1, t2)
+     loadisFromInstruction(1, t3)
+@@ -811,7 +816,7 @@ _llint_op_resolve_base_to_scope_with_top
+                      loadp JSScope::m_next[t1], dest
+                  jmp .done
+                  .scopeChainNotCreated:
+-                     loadp ScopeChain + PayloadOffset[cfr], dest
++                     loadp ScopeChain + JSCellPayloadOffset[cfr], dest
+                  .done:
+              end, 
+              # Second ResolveOperation tells us how many more nodes to skip
+@@ -841,7 +846,7 @@ macro interpretResolveWithBase(opcodeLen
+     getResolveOperation(4, t0, t1)
+     btpz t0, .slowPath
+ 
+-    loadp ScopeChain[cfr], t3
++    loadp ScopeChain + JSCellPayloadOffset[cfr], t3
+     # Get the base
+     loadis ResolveOperation::m_operation[t0], t2
+ 
+@@ -863,7 +868,7 @@ macro interpretResolveWithBase(opcodeLen
+                          loadp JSScope::m_next[t1], dest
+                      jmp .done
+                      .scopeChainNotCreated:
+-                         loadp ScopeChain + PayloadOffset[cfr], dest
++                         loadp ScopeChain + JSCellPayloadOffset[cfr], dest
+                      .done:
+                  end,
+                  sizeof ResolveOperation + ResolveOperation::m_scopesToSkip[t0], t1, t2)
+--- a/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
+@@ -1718,7 +1718,7 @@ _llint_op_next_pname:
+     loadi 20[PC], t2
+     loadi PayloadOffset[cfr, t2, 8], t2
+     loadp JSPropertyNameIterator::m_jsStrings[t2], t3
+-    loadi [t3, t0, 8], t3
++    loadi PayloadOffset[t3, t0, 8], t3
+     addi 1, t0
+     storei t0, PayloadOffset[cfr, t1, 8]
+     loadi 4[PC], t1
diff --git a/debian/patches/series b/debian/patches/series
index 3889e65..626fbd6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,6 +1,7 @@
 # upstream patches
 jsobject_ensure_indexingtype_should_handle_InterceptsGetOwn.patch
 fix_linking_issue_on_some_platforms_when_building_against_gstreamer_1.0.patch
+fix_cloop_on_big_endian_machines.patch
 
 # debian patches
 02_add_nostrip_for_debug_packages.diff

-- 
QtWebKit packaging



More information about the pkg-kde-commits mailing list