[pypy-svn] r37807 - pypy/dist/pypy/jit/codegen/ppc
mwh at codespeak.net
mwh at codespeak.net
Fri Feb 2 15:06:17 CET 2007
Author: mwh
Date: Fri Feb 2 15:06:16 2007
New Revision: 37807
Modified:
pypy/dist/pypy/jit/codegen/ppc/rgenop.py
Log:
make sure that when we need a fresh location for before-jump rearrangements, we
don't use part of the stack the target block considers important.
with this change, the ppc backend passes demo/autorun for several hours and is
so probably solid.
Modified: pypy/dist/pypy/jit/codegen/ppc/rgenop.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/ppc/rgenop.py (original)
+++ pypy/dist/pypy/jit/codegen/ppc/rgenop.py Fri Feb 2 15:06:16 2007
@@ -131,13 +131,12 @@
self.allocator = allocator
def emit_move(self, tarloc, srcloc):
+ srcvar = None
if DEBUG_PRINT:
for v, loc in self.allocator.var2loc.iteritems():
if loc is srcloc:
srcvar = v
break
- else:
- srcvar = None
emit = self.insns.append
if tarloc == srcloc:
return
@@ -180,6 +179,9 @@
tar2loc[tloc] = tloc
tar2src[tloc] = src
tarvars.append(tloc)
+ if not tloc.is_register:
+ if tloc in allocator.free_stack_slots:
+ allocator.free_stack_slots.remove(tloc)
gen = JumpPatchupGenerator(insns, allocator)
emit_moves_safe(gen, tarvars, tar2src, tar2loc, src2loc)
@@ -425,6 +427,7 @@
before_moves = len(self.insns)
print outputargs_gv
print target.args_gv
+ allocator.spill_offset = min(allocator.spill_offset, target.min_stack_offset)
prepare_for_jump(
self.insns, outputargs_gv, allocator.var2loc, target, allocator)
if DEBUG_PRINT:
More information about the Pypy-commit
mailing list