2008-12-18 Gavin Barraclough <barraclough@apple.com>
authorbarraclough@apple.com <barraclough@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Dec 2008 03:21:52 +0000 (03:21 +0000)
committerbarraclough@apple.com <barraclough@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Dec 2008 03:21:52 +0000 (03:21 +0000)
        Reviewed by Sam Weinig.

        Same as last revision, adding cases for pre & post inc & dec.

        https://bugs.webkit.org/show_bug.cgi?id=22928

        * jit/JIT.cpp:
        (JSC::JIT::privateCompileMainPass):

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

JavaScriptCore/ChangeLog
JavaScriptCore/jit/JIT.cpp

index 1cd34c2..90d9e45 100644 (file)
@@ -2,6 +2,17 @@
 
         Reviewed by Sam Weinig.
 
+        Same as last revision, adding cases for pre & post inc & dec.
+
+        https://bugs.webkit.org/show_bug.cgi?id=22928
+
+        * jit/JIT.cpp:
+        (JSC::JIT::privateCompileMainPass):
+
+2008-12-18  Gavin Barraclough  <barraclough@apple.com>
+
+        Reviewed by Sam Weinig.
+
         Fixes for the JIT's handling of JSImmediate values on x86-64.
         On 64-bit systems, the code in JSImmediate.h relies on the upper
         bits of a JSImmediate being a sign extension of the low 32-bits.
index ee458af..cce6157 100644 (file)
@@ -361,6 +361,7 @@ void JIT::privateCompileMainPass()
             emitGetVirtualRegister(srcDst, X86::eax);
             emitJumpSlowCaseIfNotImmNum(X86::eax);
             addSlowCase(joAdd32(Imm32(getDeTaggedConstantImmediate(JSImmediate::oneImmediate())), X86::eax));
+            signExtend32ToPtr(X86::eax, X86::eax);
             emitPutVirtualRegister(srcDst);
             NEXT_OPCODE(op_pre_inc);
         }
@@ -739,6 +740,7 @@ void JIT::privateCompileMainPass()
             emitGetVirtualRegister(srcDst, X86::eax);
             emitJumpSlowCaseIfNotImmNum(X86::eax);
             addSlowCase(joSub32(Imm32(getDeTaggedConstantImmediate(JSImmediate::oneImmediate())), X86::eax));
+            signExtend32ToPtr(X86::eax, X86::eax);
             emitPutVirtualRegister(srcDst);
             NEXT_OPCODE(op_pre_dec);
         }
@@ -824,6 +826,7 @@ void JIT::privateCompileMainPass()
             move(X86::eax, X86::edx);
             emitJumpSlowCaseIfNotImmNum(X86::eax);
             addSlowCase(joAdd32(Imm32(getDeTaggedConstantImmediate(JSImmediate::oneImmediate())), X86::edx));
+            signExtend32ToPtr(X86::edx, X86::edx);
             emitPutVirtualRegister(srcDst, X86::edx);
             emitPutVirtualRegister(currentInstruction[1].u.operand);
             NEXT_OPCODE(op_post_inc);
@@ -970,6 +973,7 @@ void JIT::privateCompileMainPass()
             move(X86::eax, X86::edx);
             emitJumpSlowCaseIfNotImmNum(X86::eax);
             addSlowCase(joSub32(Imm32(getDeTaggedConstantImmediate(JSImmediate::oneImmediate())), X86::edx));
+            signExtend32ToPtr(X86::edx, X86::edx);
             emitPutVirtualRegister(srcDst, X86::edx);
             emitPutVirtualRegister(currentInstruction[1].u.operand);
             NEXT_OPCODE(op_post_dec);