Title: [161313] branches/jsCStack/Source/_javascript_Core
Revision
161313
Author
msab...@apple.com
Date
2014-01-04 10:31:57 -0800 (Sat, 04 Jan 2014)

Log Message

CStack Branch: ARM64 add of stack pointer not valid as second source operand
https://bugs.webkit.org/show_bug.cgi?id=126486

Reviewed by Mark Lam.

Swap the source operands in add64() if the second argument is the stack pointer
to work around ARM64 limitations for using the stack pointer as a second source operand.

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

Modified Paths

Diff

Modified: branches/jsCStack/Source/_javascript_Core/ChangeLog (161312 => 161313)


--- branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-04 18:30:32 UTC (rev 161312)
+++ branches/jsCStack/Source/_javascript_Core/ChangeLog	2014-01-04 18:31:57 UTC (rev 161313)
@@ -1,5 +1,18 @@
 2014-01-04  Michael Saboff  <msab...@apple.com>
 
+        CStack Branch: ARM64 add of stack pointer not valid as second source operand
+        https://bugs.webkit.org/show_bug.cgi?id=126486
+
+        Reviewed by Mark Lam.
+
+        Swap the source operands in add64() if the second argument is the stack pointer
+        to work around ARM64 limitations for using the stack pointer as a second source operand.
+
+        * assembler/MacroAssemblerARM64.h:
+        (JSC::MacroAssemblerARM64::add64):
+
+2014-01-04  Michael Saboff  <msab...@apple.com>
+
         CStack Branch: slowPathFor() should emit an epilogue instead of popping the callFrameRegister
         https://bugs.webkit.org/show_bug.cgi?id=126478
 

Modified: branches/jsCStack/Source/_javascript_Core/assembler/MacroAssemblerARM64.h (161312 => 161313)


--- branches/jsCStack/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2014-01-04 18:30:32 UTC (rev 161312)
+++ branches/jsCStack/Source/_javascript_Core/assembler/MacroAssemblerARM64.h	2014-01-04 18:31:57 UTC (rev 161313)
@@ -201,7 +201,10 @@
 
     void add64(RegisterID src, RegisterID dest)
     {
-        m_assembler.add<64>(dest, dest, src);
+        if (src == ARM64Registers::sp)
+            m_assembler.add<64>(dest, src, dest);
+        else
+            m_assembler.add<64>(dest, dest, src);
     }
 
     void add64(TrustedImm32 imm, RegisterID dest)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to