[pypy-commit] pypy default: Fix the corner case.
arigo
noreply at buildbot.pypy.org
Sun Sep 16 22:05:55 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r57365:c47d52af3806
Date: 2012-09-16 22:05 +0200
http://bitbucket.org/pypy/pypy/changeset/c47d52af3806/
Log: Fix the corner case.
diff --git a/pypy/jit/backend/x86/regalloc.py b/pypy/jit/backend/x86/regalloc.py
--- a/pypy/jit/backend/x86/regalloc.py
+++ b/pypy/jit/backend/x86/regalloc.py
@@ -1003,14 +1003,18 @@
# If 'index_loc' is not an immediate, then we need a 'temp_loc' that
# is a register whose value will be destroyed. It's fine to destroy
# the same register as 'index_loc', but not the other ones.
- self.rm.possibly_free_var(box_index)
if not isinstance(index_loc, ImmedLoc):
+ # ...that is, except in a corner case where 'index_loc' would be
+ # in the same register as 'value_loc'...
+ if index_loc is not value_loc:
+ self.rm.possibly_free_var(box_index)
tempvar = TempBox()
temp_loc = self.rm.force_allocate_reg(tempvar, [box_base,
box_value])
self.rm.possibly_free_var(tempvar)
else:
temp_loc = None
+ self.rm.possibly_free_var(box_index)
self.rm.possibly_free_var(box_base)
self.possibly_free_var(box_value)
self.PerformDiscard(op, [base_loc, ofs, itemsize, fieldsize,
More information about the pypy-commit
mailing list