Title: [170059] trunk/Source/WebCore
Revision
170059
Author
[email protected]
Date
2014-06-17 10:49:36 -0700 (Tue, 17 Jun 2014)

Log Message

Fix css jit register usage on armv7.
https://bugs.webkit.org/show_bug.cgi?id=133952

Reviewed by Benjamin Poulain.

* cssjit/RegisterAllocator.h:
List r7 as a callee saved register, which it is.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generatePrologue):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateEpilogue):
Save r6, which is used as a temporary register and must be preserved.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (170058 => 170059)


--- trunk/Source/WebCore/ChangeLog	2014-06-17 17:49:27 UTC (rev 170058)
+++ trunk/Source/WebCore/ChangeLog	2014-06-17 17:49:36 UTC (rev 170059)
@@ -1,3 +1,17 @@
+2014-06-17  Alex Christensen  <[email protected]>
+
+        Fix css jit register usage on armv7.
+        https://bugs.webkit.org/show_bug.cgi?id=133952
+
+        Reviewed by Benjamin Poulain.
+
+        * cssjit/RegisterAllocator.h:
+        List r7 as a callee saved register, which it is.
+        * cssjit/SelectorCompiler.cpp:
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generatePrologue):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateEpilogue):
+        Save r6, which is used as a temporary register and must be preserved.
+
 2014-06-17  Miyoung Shin  <[email protected]>
 
         Use references instead of pointers to RenderBlock in enclosingBoxModelObject()

Modified: trunk/Source/WebCore/cssjit/RegisterAllocator.h (170058 => 170059)


--- trunk/Source/WebCore/cssjit/RegisterAllocator.h	2014-06-17 17:49:27 UTC (rev 170058)
+++ trunk/Source/WebCore/cssjit/RegisterAllocator.h	2014-06-17 17:49:36 UTC (rev 170059)
@@ -62,13 +62,14 @@
     JSC::ARMRegisters::r1,
     JSC::ARMRegisters::r2,
     JSC::ARMRegisters::r3,
-    JSC::ARMRegisters::r7, // r7 is fp, and it's pushed in the prologue and popped in the epilogue so we can use it without saving it as long as we have a prologue.
 };
 static const JSC::MacroAssembler::RegisterID calleeSavedRegisters[] = {
     JSC::ARMRegisters::r4,
     JSC::ARMRegisters::r5,
+    JSC::ARMRegisters::r7,
 };
-static const JSC::MacroAssembler::RegisterID tempRegister = JSC::ARMRegisters::r12; // ip
+// r6 is also used as addressTempRegister in the macro assembler. It is saved in the prologue and restored in the epilogue.
+static const JSC::MacroAssembler::RegisterID tempRegister = JSC::ARMRegisters::r6;
 #elif CPU(X86_64)
 static const JSC::MacroAssembler::RegisterID callerSavedRegisters[] = {
     JSC::X86Registers::eax,

Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (170058 => 170059)


--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp	2014-06-17 17:49:27 UTC (rev 170058)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp	2014-06-17 17:49:36 UTC (rev 170059)
@@ -1114,7 +1114,8 @@
 #elif CPU(ARM_THUMB2)
     Vector<JSC::MacroAssembler::RegisterID, 2> prologueRegisters;
     prologueRegisters.append(JSC::ARMRegisters::lr);
-    prologueRegisters.append(JSC::ARMRegisters::fp); // fp is used as a caller saved register because we always have a prologue for now.
+    // r6 is tempRegister in RegisterAllocator.h and addressTempRegister in MacroAssemblerARMv7.h and must be preserved by the callee.
+    prologueRegisters.append(JSC::ARMRegisters::r6);
     m_prologueStackReferences = m_stackAllocator.push(prologueRegisters);
     return true;
 #elif CPU(X86_64) && CSS_SELECTOR_JIT_DEBUGGING
@@ -1136,7 +1137,7 @@
 #elif CPU(ARM_THUMB2)
     Vector<JSC::MacroAssembler::RegisterID, 2> prologueRegisters;
     prologueRegisters.append(JSC::ARMRegisters::lr);
-    prologueRegisters.append(JSC::ARMRegisters::fp);
+    prologueRegisters.append(JSC::ARMRegisters::r6);
     m_stackAllocator.pop(m_prologueStackReferences, prologueRegisters);
 #elif CPU(X86_64) && CSS_SELECTOR_JIT_DEBUGGING
     Vector<JSC::MacroAssembler::RegisterID, 1> prologueRegister;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to