Author: Armin Rigo <[email protected]>
Branch: stmgc-c4
Changeset: r67118:4b09d9d4ed36
Date: 2013-09-28 00:00 +0200
http://bitbucket.org/pypy/pypy/changeset/4b09d9d4ed36/

Log:    Fix: need to correctly save the gcmap and restore the frame around
        this call

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
@@ -2897,9 +2897,10 @@
         # call stm_transaction_break() with the address of the
         # STM_RESUME_BUF and the custom longjmp function
         mc.LEA_rs(edi.value, FRAME_FIXED_SIZE * WORD)
-        mc.MOV_ri(esi.value, self.stm_longjmp_callback_addr)
         fn = stmtlocal.stm_transaction_break_fn
-        mc.CALL(imm(self.cpu.cast_ptr_to_int(fn)))
+        self.simple_call(imm(self.cpu.cast_ptr_to_int(fn)),
+                         [edi, imm(self.stm_longjmp_callback_addr)],
+                         None)
         #
         # Fill the stm resume buffer.  Don't do it before the call!
         # The previous transaction may still be aborted during the call
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to