Title: [159670] trunk/Source/_javascript_Core
Revision
159670
Author
[email protected]
Date
2013-11-21 19:12:13 -0800 (Thu, 21 Nov 2013)

Log Message

CodeBlock::m_numCalleeRegisters need to honor native stack alignment.
https://bugs.webkit.org/show_bug.cgi?id=124754.

Reviewed by Filip Pizlo.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::newRegister):
* dfg/DFGVirtualRegisterAllocationPhase.cpp:
(JSC::DFG::VirtualRegisterAllocationPhase::run):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (159669 => 159670)


--- trunk/Source/_javascript_Core/ChangeLog	2013-11-22 03:04:12 UTC (rev 159669)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-11-22 03:12:13 UTC (rev 159670)
@@ -1,3 +1,15 @@
+2013-11-21  Mark Lam  <[email protected]>
+
+        CodeBlock::m_numCalleeRegisters need to honor native stack alignment.
+        https://bugs.webkit.org/show_bug.cgi?id=124754.
+
+        Reviewed by Filip Pizlo.
+
+        * bytecompiler/BytecodeGenerator.cpp:
+        (JSC::BytecodeGenerator::newRegister):
+        * dfg/DFGVirtualRegisterAllocationPhase.cpp:
+        (JSC::DFG::VirtualRegisterAllocationPhase::run):
+
 2013-11-21  Mark Rowe  <[email protected]>
 
         <https://webkit.org/b/124702> Stop overriding VALID_ARCHS.

Modified: trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp (159669 => 159670)


--- trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2013-11-22 03:04:12 UTC (rev 159669)
+++ trunk/Source/_javascript_Core/bytecompiler/BytecodeGenerator.cpp	2013-11-22 03:12:13 UTC (rev 159670)
@@ -38,6 +38,7 @@
 #include "LowLevelInterpreter.h"
 #include "Operations.h"
 #include "Options.h"
+#include "StackAlignment.h"
 #include "StrongInlines.h"
 #include "UnlinkedCodeBlock.h"
 #include <wtf/StdLibExtras.h>
@@ -545,7 +546,9 @@
 RegisterID* BytecodeGenerator::newRegister()
 {
     m_calleeRegisters.append(virtualRegisterForLocal(m_calleeRegisters.size()));
-    m_codeBlock->m_numCalleeRegisters = max<int>(m_codeBlock->m_numCalleeRegisters, m_calleeRegisters.size());
+    int numCalleeRegisters = max<int>(m_codeBlock->m_numCalleeRegisters, m_calleeRegisters.size());
+    numCalleeRegisters = WTF::roundUpToMultipleOf(stackAlignmentRegisters(), numCalleeRegisters);
+    m_codeBlock->m_numCalleeRegisters = numCalleeRegisters;
     return &m_calleeRegisters.last();
 }
 

Modified: trunk/Source/_javascript_Core/dfg/DFGVirtualRegisterAllocationPhase.cpp (159669 => 159670)


--- trunk/Source/_javascript_Core/dfg/DFGVirtualRegisterAllocationPhase.cpp	2013-11-22 03:04:12 UTC (rev 159669)
+++ trunk/Source/_javascript_Core/dfg/DFGVirtualRegisterAllocationPhase.cpp	2013-11-22 03:12:13 UTC (rev 159670)
@@ -31,6 +31,8 @@
 #include "DFGGraph.h"
 #include "DFGScoreBoard.h"
 #include "JSCellInlines.h"
+#include "StackAlignment.h"
+#include <wtf/StdLibExtras.h>
 
 namespace JSC { namespace DFG {
 
@@ -132,6 +134,7 @@
             if (requiredCalleeRegisters > calleeRegisters)
                 calleeRegisters = requiredCalleeRegisters;
         }
+        calleeRegisters = WTF::roundUpToMultipleOf(stackAlignmentRegisters(), calleeRegisters);
         if ((unsigned)codeBlock()->m_numCalleeRegisters < calleeRegisters)
             codeBlock()->m_numCalleeRegisters = calleeRegisters;
 #if DFG_ENABLE(DEBUG_VERBOSE)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to