Title: [189074] branches/jsc-tailcall/Source/_javascript_Core
Revision
189074
Author
msab...@apple.com
Date
2015-08-27 16:53:17 -0700 (Thu, 27 Aug 2015)

Log Message

jsc-tailcall: ARM64 crashes running most any test
https://bugs.webkit.org/show_bug.cgi?id=148547

Reviewed by Basile Clement.

* jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::CallFrameShuffler): Exclude all callee save registers instead
of runtime registers as not all callee saves are enumerated in GPRInfo.
* jit/GPRInfo.h: Increased numberCalleeSaveRegisters for ARM64 to include all
architected callee saves, x19..x28.

Modified Paths

Diff

Modified: branches/jsc-tailcall/Source/_javascript_Core/ChangeLog (189073 => 189074)


--- branches/jsc-tailcall/Source/_javascript_Core/ChangeLog	2015-08-27 23:52:26 UTC (rev 189073)
+++ branches/jsc-tailcall/Source/_javascript_Core/ChangeLog	2015-08-27 23:53:17 UTC (rev 189074)
@@ -1,3 +1,16 @@
+2015-08-27  Michael Saboff  <msab...@apple.com>
+
+        jsc-tailcall: ARM64 crashes running most any test
+        https://bugs.webkit.org/show_bug.cgi?id=148547
+
+        Reviewed by Basile Clement.
+
+        * jit/CallFrameShuffler.cpp:
+        (JSC::CallFrameShuffler::CallFrameShuffler): Exclude all callee save registers instead
+        of runtime registers as not all callee saves are enumerated in GPRInfo.
+        * jit/GPRInfo.h: Increased numberCalleeSaveRegisters for ARM64 to include all
+        architected callee saves, x19..x28.
+
 2015-08-27  Basile Clement  <basile_clem...@apple.com>
 
         Unreviewed, revert r189049 which should never have been committed.

Modified: branches/jsc-tailcall/Source/_javascript_Core/jit/CallFrameShuffler.cpp (189073 => 189074)


--- branches/jsc-tailcall/Source/_javascript_Core/jit/CallFrameShuffler.cpp	2015-08-27 23:52:26 UTC (rev 189073)
+++ branches/jsc-tailcall/Source/_javascript_Core/jit/CallFrameShuffler.cpp	2015-08-27 23:53:17 UTC (rev 189074)
@@ -50,7 +50,7 @@
     for (unsigned i = FPRInfo::numberOfRegisters; i--; )
         m_lockedRegisters.clear(FPRInfo::toRegister(i));
     // ... as well as the runtime registers.
-    m_lockedRegisters.exclude(RegisterSet::runtimeRegisters());
+    m_lockedRegisters.exclude(RegisterSet::allVMCalleeSaveRegisters());
 
     ASSERT(!data.callee.isInJSStack() || data.callee.virtualRegister().isLocal());
     addNew(VirtualRegister(JSStack::Callee), data.callee);

Modified: branches/jsc-tailcall/Source/_javascript_Core/jit/GPRInfo.h (189073 => 189074)


--- branches/jsc-tailcall/Source/_javascript_Core/jit/GPRInfo.h	2015-08-27 23:52:26 UTC (rev 189073)
+++ branches/jsc-tailcall/Source/_javascript_Core/jit/GPRInfo.h	2015-08-27 23:53:17 UTC (rev 189074)
@@ -648,7 +648,7 @@
     static const GPRReg nonPreservedNonArgumentGPR = ARM64Registers::x8;
     static const GPRReg patchpointScratchRegister = ARM64Registers::ip0;
     static const int numberOfLLIntBaselineCalleeSaveRegisters = 3; // x26 (LLInt only), x27 & x28
-    static const int numberCalleeSaveRegisters = 3;
+    static const int numberCalleeSaveRegisters = 10;
 
     // GPRReg mapping is direct, the machine regsiter numbers can
     // be used directly as indices into the GPR RegisterBank.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to