[pypy-commit] pypy stmgc-c4: fix now unnecessary PUSH

Raemi noreply at buildbot.pypy.org
Tue Oct 22 11:00:58 CEST 2013


Author: Remi Meier <remi.meier at gmail.com>
Branch: stmgc-c4
Changeset: r67493:75d0f6b0579d
Date: 2013-10-22 10:59 +0200
http://bitbucket.org/pypy/pypy/changeset/75d0f6b0579d/

Log:	fix now unnecessary PUSH

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
@@ -204,14 +204,14 @@
         # call stm_transaction_break() with the address of the
         # STM_RESUME_BUF and the custom longjmp function
         # (rsp + FRAME_FIXED_SIZE + RET_ADDR + ALIGNMENT)
-        mc.LEA_rs(edi.value, (FRAME_FIXED_SIZE+2) * WORD)
+        mc.LEA_rs(edi.value, FRAME_FIXED_SIZE * WORD + WORD + (16-WORD))
         mc.MOV(esi, imm(self.stm_longjmp_callback_addr))
         fn = stmtlocal.stm_transaction_break_fn
         mc.CALL(imm(self.cpu.cast_ptr_to_int(fn)))
         #
+        self._reload_frame_if_necessary(mc)
+        #
         mc.ADD_ri(esp.value, 16 - WORD)
-        #
-        self._reload_frame_if_necessary(mc, align_stack=True)
         # clear the gc pattern
         mc.MOV_bi(ofs, 0)
         #
@@ -632,7 +632,6 @@
         # jump to the place saved in stm_resume_buffer[0]
         # (to "HERE" in genop_stm_transaction_break())
         mc.MOV_rs(eax.value, (FRAME_FIXED_SIZE + 0) * WORD)
-        mc.PUSH_r(eax.value)
         mc.JMP_r(eax.value)
         self.stm_longjmp_callback_addr = mc.materialize(self.cpu.asmmemmgr, [])
 


More information about the pypy-commit mailing list