Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r61734:ff4ff668691e
Date: 2013-02-24 19:26 +0200
http://bitbucket.org/pypy/pypy/changeset/ff4ff668691e/

Log:    fix the alignment

diff --git a/rpython/jit/backend/x86/assembler.py 
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -265,6 +265,7 @@
             # have been used to pass arguments. Note that we pass only
             # one argument, that is the frame
             mc.MOV_rr(edi.value, esp.value)
+            mc.SUB_ri(esp.value, WORD)
         #
         if IS_X86_32:
             mc.SUB_ri(esp.value, 2*WORD) # alignment
@@ -273,14 +274,16 @@
         # esp is now aligned to a multiple of 16 again
         mc.CALL(imm(slowpathaddr))
         #
+        if IS_X86_32:
+            mc.ADD_ri(esp.value, 3*WORD)    # alignment
+        else:
+            mc.ADD_ri(esp.value, WORD)
+        #
         mc.MOV(eax, heap(self.cpu.pos_exception()))
         mc.TEST_rr(eax.value, eax.value)
         mc.J_il8(rx86.Conditions['NZ'], 0)
         jnz_location = mc.get_relative_pos()
         #
-        if IS_X86_32:
-            mc.ADD_ri(esp.value, 3*WORD)    # alignment
-        #
         mc.RET()
         #
         # patch the JNZ above
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to