Title: [195734] trunk/Source/_javascript_Core
Revision
195734
Author
[email protected]
Date
2016-01-28 00:52:44 -0800 (Thu, 28 Jan 2016)

Log Message

[JSC] B3 Tail Call with Varargs do not restore callee saved registers
https://bugs.webkit.org/show_bug.cgi?id=153579

Patch by Benjamin Poulain <[email protected]> on 2016-01-28
Reviewed by Michael Saboff.

We were trashing the callee saved registers in Tail Calls.

I just copied the code from DFG to fix this :)

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (195733 => 195734)


--- trunk/Source/_javascript_Core/ChangeLog	2016-01-28 06:46:43 UTC (rev 195733)
+++ trunk/Source/_javascript_Core/ChangeLog	2016-01-28 08:52:44 UTC (rev 195734)
@@ -1,3 +1,17 @@
+2016-01-28  Benjamin Poulain  <[email protected]>
+
+        [JSC] B3 Tail Call with Varargs do not restore callee saved registers
+        https://bugs.webkit.org/show_bug.cgi?id=153579
+
+        Reviewed by Michael Saboff.
+
+        We were trashing the callee saved registers in Tail Calls.
+
+        I just copied the code from DFG to fix this :)
+
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
+
 2016-01-27  Filip Pizlo  <[email protected]>
 
         B3 IntRange analysis should know more about shifting

Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp (195733 => 195734)


--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2016-01-28 06:46:43 UTC (rev 195733)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToLLVM.cpp	2016-01-28 08:52:44 UTC (rev 195734)
@@ -5487,6 +5487,7 @@
                 CCallHelpers::Jump done;
                 
                 if (isTailCall) {
+                    jit.emitRestoreCalleeSaves();
                     jit.prepareForTailCallSlow();
                     fastCall = jit.nearTailCall();
                 } else {
@@ -5495,7 +5496,9 @@
                 }
                 
                 slowPath.link(&jit);
-                
+
+                if (isTailCall)
+                    jit.emitRestoreCalleeSaves();
                 jit.move(CCallHelpers::TrustedImmPtr(callLinkInfo), GPRInfo::regT2);
                 CCallHelpers::Call slowCall = jit.nearCall();
                 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to