Author: David Schneider <[email protected]>
Branch: arm-backend-2
Changeset: r52061:d41a0ed47ef8
Date: 2012-01-26 18:22 +0100
http://bitbucket.org/pypy/pypy/changeset/d41a0ed47ef8/
Log: Explicitely use immediate values where possible
diff --git a/pypy/jit/backend/arm/helper/regalloc.py
b/pypy/jit/backend/arm/helper/regalloc.py
--- a/pypy/jit/backend/arm/helper/regalloc.py
+++ b/pypy/jit/backend/arm/helper/regalloc.py
@@ -33,9 +33,9 @@
imm_a1 = check_imm_box(a1, imm_size, allow_zero=allow_zero)
if not imm_a0 and imm_a1:
l0 = self._ensure_value_is_boxed(a0)
- l1 = self._ensure_value_is_boxed(a1, boxes)
+ l1 = self.convert_to_imm(a1)
elif commutative and imm_a0 and not imm_a1:
- l1 = self._ensure_value_is_boxed(a0, boxes)
+ l1 = self.convert_to_imm(a0)
l0 = self._ensure_value_is_boxed(a1, boxes)
else:
l0 = self._ensure_value_is_boxed(a0, boxes)
@@ -90,17 +90,15 @@
assert fcond is not None
a0 = op.getarg(0)
a1 = op.getarg(1)
- assert isinstance(a0, Box)
- assert isinstance(a1, Box)
arg1 = self.rm.make_sure_var_in_reg(a0, selected_reg=r.r0)
arg2 = self.rm.make_sure_var_in_reg(a1, selected_reg=r.r1)
assert arg1 == r.r0
assert arg2 == r.r1
if isinstance(a0, Box) and self.stays_alive(a0):
self.force_spill_var(a0)
- self.possibly_free_var(a0)
+ self.possibly_free_vars_for_op(op)
+ self.free_temp_vars()
self.after_call(op.result)
- self.possibly_free_var(a1)
self.possibly_free_var(op.result)
return []
f.__name__ = name
@@ -115,7 +113,7 @@
l0 = self._ensure_value_is_boxed(arg0, forbidden_vars=boxes)
if imm_a1:
- l1 = self._ensure_value_is_boxed(arg1, boxes)
+ l1 = self.convert_to_imm(arg1)
else:
l1 = self._ensure_value_is_boxed(arg1, forbidden_vars=boxes)
diff --git a/pypy/jit/backend/arm/regalloc.py b/pypy/jit/backend/arm/regalloc.py
--- a/pypy/jit/backend/arm/regalloc.py
+++ b/pypy/jit/backend/arm/regalloc.py
@@ -408,9 +408,9 @@
imm_a1 = check_imm_box(a1)
if not imm_a0 and imm_a1:
l0 = self._ensure_value_is_boxed(a0, boxes)
- l1 = self._ensure_value_is_boxed(a1, boxes)
+ l1 = self.convert_to_imm(a1)
elif imm_a0 and not imm_a1:
- l0 = self._ensure_value_is_boxed(a0, boxes)
+ l0 = self.convert_to_imm(a0)
l1 = self._ensure_value_is_boxed(a1, boxes)
else:
l0 = self._ensure_value_is_boxed(a0, boxes)
@@ -430,9 +430,9 @@
imm_a1 = check_imm_box(a1)
if not imm_a0 and imm_a1:
l0 = self._ensure_value_is_boxed(a0, boxes)
- l1 = self._ensure_value_is_boxed(a1, boxes)
+ l1 = self.convert_to_imm(a1)
elif imm_a0 and not imm_a1:
- l0 = self._ensure_value_is_boxed(a0, boxes)
+ l0 = self.convert_to_imm(a0)
l1 = self._ensure_value_is_boxed(a1, boxes)
else:
l0 = self._ensure_value_is_boxed(a0, boxes)
@@ -612,7 +612,7 @@
if not imm_a1:
l1 = self._ensure_value_is_boxed(a1, boxes)
else:
- l1 = self._ensure_value_is_boxed(a1, boxes)
+ l1 = self.convert_to_imm(a1)
assert op.result is None
arglocs = self._prepare_guard(op, [l0, l1])
self.possibly_free_vars(op.getarglist())
@@ -868,7 +868,7 @@
a1 = boxes[1]
imm_a1 = check_imm_box(a1)
if imm_a1:
- ofs_loc = self._ensure_value_is_boxed(a1, boxes)
+ ofs_loc = self.convert_to_imm(a1)
else:
ofs_loc = self._ensure_value_is_boxed(a1, boxes)
@@ -940,7 +940,7 @@
arg = op.getarg(0)
imm_arg = check_imm_box(arg)
if imm_arg:
- argloc = self._ensure_value_is_boxed(arg)
+ argloc = self.convert_to_imm(arg)
else:
argloc = self._ensure_value_is_boxed(arg)
self.possibly_free_vars_for_op(op)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit