Author: Maciej Fijalkowski <[email protected]>
Branch: jitframe-on-heap
Changeset: r61229:8a88bb8fc1ee
Date: 2013-02-14 12:04 +0200
http://bitbucket.org/pypy/pypy/changeset/8a88bb8fc1ee/
Log: fix call_release_gil
diff --git a/rpython/jit/backend/arm/opassembler.py
b/rpython/jit/backend/arm/opassembler.py
--- a/rpython/jit/backend/arm/opassembler.py
+++ b/rpython/jit/backend/arm/opassembler.py
@@ -1268,13 +1268,15 @@
#
self._emit_call(adr, callargs, fcond,
resloc, (size, signed))
+ self.emit_guard_may_force(guard_op, arglocs, numargs)
+ return fcond
+ def emit_guard_may_force(self, guard_op, arglocs, numargs):
ofs = self.cpu.get_ofs_of_frame_field('jf_descr')
self.mc.LDR_ri(r.ip.value, r.fp.value, imm=ofs)
self.mc.CMP_ri(r.ip.value, 0)
self._emit_guard(guard_op, arglocs[1 + numargs:], c.EQ,
save_exc=True, is_guard_not_forced=True)
- return fcond
def emit_guard_call_release_gil(self, op, guard_op, arglocs, regalloc,
fcond):
@@ -1301,10 +1303,7 @@
if gcrootmap:
self.call_reacquire_gil(gcrootmap, resloc, fcond)
- self.mc.LDR_ri(r.ip.value, r.fp.value)
- self.mc.CMP_ri(r.ip.value, 0)
-
- self._emit_guard(guard_op, arglocs[1 + numargs:], c.GE, save_exc=True)
+ self.emit_guard_may_force(guard_op, arglocs, numargs)
return fcond
def call_release_gil(self, gcrootmap, save_registers, fcond):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit