[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

loki at webkit.org loki at webkit.org
Wed Dec 22 11:08:41 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit e5c430ef8a8dee573d49ec4b47e1682eb3d3d318
Author: loki at webkit.org <loki at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Jul 13 18:56:18 2010 +0000

    Fix the constant encoding in data transfer instructions on ARM
    https://bugs.webkit.org/show_bug.cgi?id=42166
    
    Reviewed by Gavin Barraclough.
    
    The getImm function is designed to produce modified immediate constant
    for data processing instructions. It should not be used to encode
    any constant for data transfer. In the current situation there is no
    way to use any immediate constant for data transfer. So, the moveImm
    function is the desired method to pass the offset value to the data
    transfer instructions.
    
    Reported by Jacob Bramley.
    
    * assembler/ARMAssembler.cpp:
    (JSC::ARMAssembler::dataTransfer32):
    * assembler/MacroAssemblerARM.h:
    (JSC::MacroAssemblerARM::call32):
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63228 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 0acccc8..69672c4 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,24 @@
+2010-07-13  Gabor Loki  <loki at webkit.org>
+
+        Reviewed by Gavin Barraclough.
+
+        Fix the constant encoding in data transfer instructions on ARM
+        https://bugs.webkit.org/show_bug.cgi?id=42166
+
+        The getImm function is designed to produce modified immediate constant
+        for data processing instructions. It should not be used to encode
+        any constant for data transfer. In the current situation there is no
+        way to use any immediate constant for data transfer. So, the moveImm
+        function is the desired method to pass the offset value to the data
+        transfer instructions.
+
+        Reported by Jacob Bramley.
+
+        * assembler/ARMAssembler.cpp:
+        (JSC::ARMAssembler::dataTransfer32):
+        * assembler/MacroAssemblerARM.h:
+        (JSC::MacroAssemblerARM::call32):
+
 2010-07-09  Darin Adler  <darin at apple.com>
 
         Reviewed by Geoffrey Garen.
diff --git a/JavaScriptCore/assembler/ARMAssembler.cpp b/JavaScriptCore/assembler/ARMAssembler.cpp
index a181b7e..0016540 100644
--- a/JavaScriptCore/assembler/ARMAssembler.cpp
+++ b/JavaScriptCore/assembler/ARMAssembler.cpp
@@ -272,8 +272,8 @@ void ARMAssembler::dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID bas
             add_r(ARMRegisters::S0, base, OP2_IMM | (offset >> 12) | (10 << 8));
             dtr_u(isLoad, srcDst, ARMRegisters::S0, (offset & 0xfff) | transferFlag);
         } else {
-            ARMWord reg = getImm(offset, ARMRegisters::S0);
-            dtr_ur(isLoad, srcDst, base, reg | transferFlag);
+            moveImm(offset, ARMRegisters::S0);
+            dtr_ur(isLoad, srcDst, base, ARMRegisters::S0 | transferFlag);
         }
     } else {
         offset = -offset;
@@ -283,8 +283,8 @@ void ARMAssembler::dataTransfer32(bool isLoad, RegisterID srcDst, RegisterID bas
             sub_r(ARMRegisters::S0, base, OP2_IMM | (offset >> 12) | (10 << 8));
             dtr_d(isLoad, srcDst, ARMRegisters::S0, (offset & 0xfff) | transferFlag);
         } else {
-            ARMWord reg = getImm(offset, ARMRegisters::S0);
-            dtr_dr(isLoad, srcDst, base, reg | transferFlag);
+            moveImm(offset, ARMRegisters::S0);
+            dtr_dr(isLoad, srcDst, base, ARMRegisters::S0 | transferFlag);
         }
     }
 }
diff --git a/JavaScriptCore/assembler/MacroAssemblerARM.h b/JavaScriptCore/assembler/MacroAssemblerARM.h
index 1c64071..bb1a6da 100644
--- a/JavaScriptCore/assembler/MacroAssemblerARM.h
+++ b/JavaScriptCore/assembler/MacroAssemblerARM.h
@@ -956,9 +956,9 @@ protected:
                 prepareCall();
                 m_assembler.dtr_u(true, targetReg, tmpReg, offset & 0xfff);
             } else {
-                ARMWord reg = m_assembler.getImm(offset, tmpReg);
+                m_assembler.moveImm(offset, tmpReg);
                 prepareCall();
-                m_assembler.dtr_ur(true, targetReg, base, reg);
+                m_assembler.dtr_ur(true, targetReg, base, tmpReg);
             }
         } else  {
             offset = -offset;
@@ -970,9 +970,9 @@ protected:
                 prepareCall();
                 m_assembler.dtr_d(true, targetReg, tmpReg, offset & 0xfff);
             } else {
-                ARMWord reg = m_assembler.getImm(offset, tmpReg);
+                m_assembler.moveImm(offset, tmpReg);
                 prepareCall();
-                m_assembler.dtr_dr(true, targetReg, base, reg);
+                m_assembler.dtr_dr(true, targetReg, base, tmpReg);
             }
         }
 #if WTF_ARM_ARCH_AT_LEAST(5)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list