Title: [137426] trunk/Source/_javascript_Core
Revision
137426
Author
[email protected]
Date
2012-12-12 00:00:33 -0800 (Wed, 12 Dec 2012)

Log Message

Implement add64 for ARM traditional assembler after r136601
https://bugs.webkit.org/show_bug.cgi?id=104103

Patch by Gabor Ballabas <[email protected]> on 2012-12-11
Reviewed by Zoltan Herczeg.

Implement add64 function for ARM traditional macroassembler.

* assembler/MacroAssemblerARM.h:
(JSC::MacroAssemblerARM::add64):
(MacroAssemblerARM):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (137425 => 137426)


--- trunk/Source/_javascript_Core/ChangeLog	2012-12-12 07:54:30 UTC (rev 137425)
+++ trunk/Source/_javascript_Core/ChangeLog	2012-12-12 08:00:33 UTC (rev 137426)
@@ -1,3 +1,16 @@
+2012-12-11  Gabor Ballabas  <[email protected]>
+
+        Implement add64 for ARM traditional assembler after r136601
+        https://bugs.webkit.org/show_bug.cgi?id=104103
+
+        Reviewed by Zoltan Herczeg.
+
+        Implement add64 function for ARM traditional macroassembler.
+
+        * assembler/MacroAssemblerARM.h:
+        (JSC::MacroAssemblerARM::add64):
+        (MacroAssemblerARM):
+
 2012-12-11  Filip Pizlo  <[email protected]>
 
         Unreviewed. Fix build with DFG_ENABLE(DEBUG_PROPAGATION_VERBOSE).

Modified: trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h (137425 => 137426)


--- trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h	2012-12-12 07:54:30 UTC (rev 137425)
+++ trunk/Source/_javascript_Core/assembler/MacroAssemblerARM.h	2012-12-12 08:00:33 UTC (rev 137426)
@@ -893,6 +893,31 @@
         m_assembler.dtrUp(ARMAssembler::StoreUint32, ARMRegisters::S1, ARMRegisters::S0, 0);
     }
 
+    void add64(TrustedImm32 imm, AbsoluteAddress address)
+    {
+        ARMWord tmp;
+
+        move(TrustedImmPtr(address.m_ptr), ARMRegisters::S1);
+        m_assembler.dtrUp(ARMAssembler::LoadUint32, ARMRegisters::S0, ARMRegisters::S1, 0);
+
+        if ((tmp = ARMAssembler::getOp2(imm.m_value)) != ARMAssembler::InvalidImmediate)
+            m_assembler.adds(ARMRegisters::S0, ARMRegisters::S0, tmp);
+        else if ((tmp = ARMAssembler::getOp2(-imm.m_value)) != ARMAssembler::InvalidImmediate)
+            m_assembler.subs(ARMRegisters::S0, ARMRegisters::S0, tmp);
+        else {
+            m_assembler.adds(ARMRegisters::S0, ARMRegisters::S0, m_assembler.getImm(imm.m_value, ARMRegisters::S1));
+            move(TrustedImmPtr(address.m_ptr), ARMRegisters::S1);
+        }
+        m_assembler.dtrUp(ARMAssembler::StoreUint32, ARMRegisters::S0, ARMRegisters::S1, 0);
+
+        m_assembler.dtrUp(ARMAssembler::LoadUint32, ARMRegisters::S0, ARMRegisters::S1, sizeof(ARMWord));
+        if (imm.m_value >= 0)
+            m_assembler.adc(ARMRegisters::S0, ARMRegisters::S0, ARMAssembler::getOp2Byte(0));
+        else
+            m_assembler.sbc(ARMRegisters::S0, ARMRegisters::S0, ARMAssembler::getOp2Byte(0));
+        m_assembler.dtrUp(ARMAssembler::StoreUint32, ARMRegisters::S0, ARMRegisters::S1, sizeof(ARMWord));
+    }
+
     void sub32(TrustedImm32 imm, AbsoluteAddress address)
     {
         m_assembler.ldrUniqueImmediate(ARMRegisters::S1, reinterpret_cast<ARMWord>(address.m_ptr));
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to