Title: [158925] trunk/Source/_javascript_Core
Revision
158925
Author
commit-qu...@webkit.org
Date
2013-11-08 10:24:32 -0800 (Fri, 08 Nov 2013)

Log Message

REGRESSION(r158883): Fix crashes for MIPS architecture.
https://bugs.webkit.org/show_bug.cgi?id=124044

Patch by Julien Brianceau <jbria...@cisco.com> on 2013-11-08
Reviewed by Michael Saboff.

* jit/JITOperations.cpp: Frame pointer register is fp instead of s0 since r158883 for MIPS.
* jit/ThunkGenerators.cpp: Save and restore the new frame pointer register.
(JSC::returnFromJavaScript):
(JSC::callToJavaScript):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (158924 => 158925)


--- trunk/Source/_javascript_Core/ChangeLog	2013-11-08 18:03:49 UTC (rev 158924)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-11-08 18:24:32 UTC (rev 158925)
@@ -1,3 +1,15 @@
+2013-11-08  Julien Brianceau  <jbria...@cisco.com>
+
+        REGRESSION(r158883): Fix crashes for MIPS architecture.
+        https://bugs.webkit.org/show_bug.cgi?id=124044
+
+        Reviewed by Michael Saboff.
+
+        * jit/JITOperations.cpp: Frame pointer register is fp instead of s0 since r158883 for MIPS.
+        * jit/ThunkGenerators.cpp: Save and restore the new frame pointer register.
+        (JSC::returnFromJavaScript):
+        (JSC::callToJavaScript):
+
 2013-11-08  pe...@outlook.com  <pe...@outlook.com>
 
         [Win] _javascript_ crash in getHostCallReturnValue.

Modified: trunk/Source/_javascript_Core/jit/JITOperations.cpp (158924 => 158925)


--- trunk/Source/_javascript_Core/jit/JITOperations.cpp	2013-11-08 18:03:49 UTC (rev 158924)
+++ trunk/Source/_javascript_Core/jit/JITOperations.cpp	2013-11-08 18:24:32 UTC (rev 158925)
@@ -1778,8 +1778,8 @@
 HIDE_SYMBOL(getHostCallReturnValue) "\n"
 SYMBOL_STRING(getHostCallReturnValue) ":" "\n"
     LOAD_FUNCTION_TO_T9(getHostCallReturnValueWithExecState)
-    "lw $s0, 0($s0)" "\n" // CallerFrameAndPC::callerFrame
-    "move $a0, $s0" "\n"
+    "lw $fp, 0($fp)" "\n" // CallerFrameAndPC::callerFrame
+    "move $a0, $fp" "\n"
     "b " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n"
 );
 

Modified: trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp (158924 => 158925)


--- trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp	2013-11-08 18:03:49 UTC (rev 158924)
+++ trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp	2013-11-08 18:24:32 UTC (rev 158925)
@@ -145,6 +145,7 @@
 #   define PRESERVED_S3_OFFSET         76
 #   define PRESERVED_S4_OFFSET         80
 #   define PRESERVED_RETURN_ADDRESS_OFFSET 84
+#   define PRESERVED_FP_OFFSET         88
 #   define STACK_LENGTH               112
 
     jit.loadPtr(CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_S0_OFFSET), MIPSRegisters::s0);
@@ -153,6 +154,7 @@
     jit.loadPtr(CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_S3_OFFSET), MIPSRegisters::s3);
     jit.loadPtr(CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_S4_OFFSET), MIPSRegisters::s4);
     jit.loadPtr(CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_RETURN_ADDRESS_OFFSET), MIPSRegisters::ra);
+    jit.loadPtr(CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_FP_OFFSET), MIPSRegisters::fp);
     jit.addPtr(CCallHelpers::TrustedImm32(STACK_LENGTH), MIPSRegisters::sp);
 #elif CPU(SH4)
 #   define EXTRA_STACK_SIZE 20
@@ -260,6 +262,7 @@
 #   define PREVIOUS_CALLFRAME_REG GPRInfo::nonArgGPR0
 #elif CPU(MIPS)
     jit.subPtr(CCallHelpers::TrustedImm32(STACK_LENGTH), MIPSRegisters::sp);
+    jit.storePtr(MIPSRegisters::fp, CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_FP_OFFSET));
     jit.storePtr(MIPSRegisters::ra, CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_RETURN_ADDRESS_OFFSET));
     jit.storePtr(MIPSRegisters::s4, CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_S4_OFFSET));
     jit.storePtr(MIPSRegisters::s3, CCallHelpers::Address(MIPSRegisters::sp, PRESERVED_S3_OFFSET));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to