[pypy-svn] r80043 - in pypy/branch/arm-backend/pypy/jit/backend/arm: . helper

david at codespeak.net david at codespeak.net
Mon Dec 13 20:02:51 CET 2010


Author: david
Date: Mon Dec 13 20:02:48 2010
New Revision: 80043

Modified:
   pypy/branch/arm-backend/pypy/jit/backend/arm/helper/regalloc.py
   pypy/branch/arm-backend/pypy/jit/backend/arm/regalloc.py
Log:
Next register allocation fix

Modified: pypy/branch/arm-backend/pypy/jit/backend/arm/helper/regalloc.py
==============================================================================
--- pypy/branch/arm-backend/pypy/jit/backend/arm/helper/regalloc.py	(original)
+++ pypy/branch/arm-backend/pypy/jit/backend/arm/helper/regalloc.py	Mon Dec 13 20:02:48 2010
@@ -49,13 +49,10 @@
         arg2 = self.make_sure_var_in_reg(a1, selected_reg=r.r1)
         assert arg1 == r.r0
         assert arg2 == r.r1
-        spilled = False
         if isinstance(a0, Box) and self.stays_alive(a0):
-            spilled = True
             self.force_spill_var(a0)
+        self.possibly_free_var(a0)
         self.after_call(op.result)
-        if spilled:
-            self.possibly_free_var(a0)
         self.possibly_free_var(a1)
         self.possibly_free_var(op.result)
         return []

Modified: pypy/branch/arm-backend/pypy/jit/backend/arm/regalloc.py
==============================================================================
--- pypy/branch/arm-backend/pypy/jit/backend/arm/regalloc.py	(original)
+++ pypy/branch/arm-backend/pypy/jit/backend/arm/regalloc.py	Mon Dec 13 20:02:48 2010
@@ -143,8 +143,8 @@
             boxes.append(box)
             l1, box = self._ensure_value_is_boxed(a1, [box])
             boxes.append(box)
-        res = self.force_allocate_reg(op.result, boxes)
         self.possibly_free_vars(boxes)
+        res = self.force_allocate_reg(op.result)
         self.possibly_free_var(op.result)
         return [l0, l1, res]
 
@@ -167,8 +167,8 @@
             boxes.append(box)
             l1, box = self._ensure_value_is_boxed(a1, boxes)
             boxes.append(box)
-        res = self.force_allocate_reg(op.result, boxes)
         self.possibly_free_vars(boxes)
+        res = self.force_allocate_reg(op.result)
         self.possibly_free_var(op.result)
         return [l0, l1, res]
 
@@ -181,8 +181,8 @@
         reg2, box = self._ensure_value_is_boxed(a1, forbidden_vars=boxes)
         boxes.append(box)
 
-        res = self.force_allocate_reg(op.result, boxes)
         self.possibly_free_vars(boxes)
+        res = self.force_allocate_reg(op.result)
         self.possibly_free_var(op.result)
         return [reg1, reg2, res]
 
@@ -241,8 +241,9 @@
 
     def prepare_op_int_neg(self, op, fcond):
         l0, box = self._ensure_value_is_boxed(op.getarg(0))
-        resloc = self.force_allocate_reg(op.result, [box])
-        self.possibly_free_vars([box, op.result])
+        self.possibly_free_var(box)
+        resloc = self.force_allocate_reg(op.result)
+        self.possibly_free_var(op.result)
         return [l0, resloc]
 
     prepare_op_int_invert = prepare_op_int_neg
@@ -376,7 +377,7 @@
         base_loc, base_box = self._ensure_value_is_boxed(a0)
         self.possibly_free_var(a0)
         self.possibly_free_var(base_box)
-        res = self.force_allocate_reg(op.result, [a0])
+        res = self.force_allocate_reg(op.result)
         self.possibly_free_var(op.result)
         return [base_loc, imm(ofs), res, imm(size)]
 



More information about the Pypy-commit mailing list