LLInt broken on x86-32 with JIT turned off
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 May 2012 23:09:45 +0000 (23:09 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 30 May 2012 23:09:45 +0000 (23:09 +0000)
https://bugs.webkit.org/show_bug.cgi?id=87906

Reviewed by Geoffrey Garen.

Fixed the code to not clobber registers that contain important things, like the call frame.

* llint/LowLevelInterpreter32_64.asm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@118992 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm

index d9ab858..f413514 100644 (file)
@@ -1,5 +1,16 @@
 2012-05-30  Filip Pizlo  <fpizlo@apple.com>
 
+        LLInt broken on x86-32 with JIT turned off
+        https://bugs.webkit.org/show_bug.cgi?id=87906
+
+        Reviewed by Geoffrey Garen.
+        
+        Fixed the code to not clobber registers that contain important things, like the call frame.
+
+        * llint/LowLevelInterpreter32_64.asm:
+
+2012-05-30  Filip Pizlo  <fpizlo@apple.com>
+
         ScriptDebugServer wants sourceIDs that are non-zero because that's what HashMaps want, so JSC should placate it
         https://bugs.webkit.org/show_bug.cgi?id=87887
 
index dd5ab67..95b26d4 100644 (file)
@@ -1668,8 +1668,8 @@ macro nativeCallTrampoline(executableOffsetToFunction)
     storei CellTag, ScopeChain + TagOffset[cfr]
     storei t1, ScopeChain + PayloadOffset[cfr]
     if X86
-        loadp JITStackFrame::globalData + 4[sp], t0 # Additional offset for return address
-        storep cfr, JSGlobalData::topCallFrame[t0]
+        loadp JITStackFrame::globalData + 4[sp], t3 # Additional offset for return address
+        storep cfr, JSGlobalData::topCallFrame[t3]
         peek 0, t1
         storep t1, ReturnPC[cfr]
         move cfr, t2  # t2 = ecx
@@ -1681,8 +1681,8 @@ macro nativeCallTrampoline(executableOffsetToFunction)
         addp 16 - 4, sp
         loadp JITStackFrame::globalData + 4[sp], t3
     elsif ARMv7
-        loadp JITStackFrame::globalData[sp], t1
-        storep cfr, JSGlobalData::topCallFrame[t1]
+        loadp JITStackFrame::globalData[sp], t3
+        storep cfr, JSGlobalData::topCallFrame[t3]
         move t0, t2
         preserveReturnAddressAfterCall(t3)
         storep t3, ReturnPC[cfr]