[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