[pypy-commit] pypy fix-longevity: (plan_rich, remi) fix for updating bridge argument register assignment

Raemi pypy.commits at gmail.com
Thu Feb 25 10:47:03 EST 2016


Author: Remi Meier <remi.meier at gmail.com>
Branch: fix-longevity
Changeset: r82512:af0b03bc7ce0
Date: 2016-02-25 16:46 +0100
http://bitbucket.org/pypy/pypy/changeset/af0b03bc7ce0/

Log:	(plan_rich,remi) fix for updating bridge argument register
	assignment

diff --git a/rpython/jit/backend/llsupport/regalloc.py b/rpython/jit/backend/llsupport/regalloc.py
--- a/rpython/jit/backend/llsupport/regalloc.py
+++ b/rpython/jit/backend/llsupport/regalloc.py
@@ -803,7 +803,6 @@
         self.longevity[var] = (start, end)
 
     def get_call_argument_index(self, var, pos):
-        assert self.dist_to_next_call[pos] >= 0
         dist_to_call = self.dist_to_next_call[pos]
         if dist_to_call < 0:
             return -1
diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py
--- a/rpython/jit/backend/x86/regalloc.py
+++ b/rpython/jit/backend/x86/regalloc.py
@@ -274,6 +274,7 @@
     def _update_bindings(self, arglocs, inputargs):
         # XXX this should probably go to llsupport/regalloc.py
         used = set()
+        used_xmm = set()
         i = 0
         # manually set the register and frame bindings for
         # all inputargs (for a bridge)
@@ -285,7 +286,7 @@
             if isinstance(loc, RegLoc):
                 if arg.type == FLOAT:
                     self.xrm.reg_bindings[arg] = loc
-                    used.add(loc)
+                    used_xmm.add(loc)
                 else:
                     if loc is ebp:
                         self.rm.bindings_to_frame_reg[arg] = None
@@ -296,7 +297,7 @@
                 self.fm.bind(arg, loc)
         #
         self.rm.update_free_registers(used)
-        self.xrm.update_free_registers(used)
+        self.xrm.update_free_registers(used_xmm)
         self.possibly_free_vars(list(inputargs))
         self.fm.finish_binding()
         self.rm._check_invariants()


More information about the pypy-commit mailing list