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

Reply via email to