Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r60846:4ccd13403a61
Date: 2013-02-04 00:20 +0200
http://bitbucket.org/pypy/pypy/changeset/4ccd13403a61/

Log:    32bit alignment fixes

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
@@ -199,7 +199,6 @@
     def _build_stack_check_failure(self):
         mc = codebuf.MachineCodeBlockWrapper()
         self._push_all_regs_to_frame(mc, [], self.cpu.supports_floats)
-        assert not IS_X86_32
         # this is the gcmap stored by push_gcmap(mov=True) in 
_check_stack_frame
         mc.MOV_rs(ecx.value, WORD)
         gcmap_ofs = self.cpu.get_ofs_of_frame_field('jf_gcmap')
@@ -209,9 +208,11 @@
         # push first arg
         mc.MOV_rr(edi.value, ebp.value)
         # align
-        mc.SUB_ri(esp.value, WORD)
+        align = align_stack_words(1)
+        mc.SUB_ri(esp.value, (align - 1) * WORD)
+
         mc.CALL(imm(self.cpu.realloc_frame))
-        mc.ADD_ri(esp.value, WORD)
+        mc.ADD_ri(esp.value, (align - 1) * WORD)
         mc.MOV_rr(ebp.value, eax.value)
 
         gcrootmap = self.cpu.gc_ll_descr.gcrootmap
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to