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