[pypy-commit] pypy default: Fix
arigo
noreply at buildbot.pypy.org
Sun Dec 1 20:35:24 CET 2013
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r68351:d95d0c9bb988
Date: 2013-12-01 20:34 +0100
http://bitbucket.org/pypy/pypy/changeset/d95d0c9bb988/
Log: Fix
diff --git a/rpython/translator/c/gcc/trackgcroot.py b/rpython/translator/c/gcc/trackgcroot.py
--- a/rpython/translator/c/gcc/trackgcroot.py
+++ b/rpython/translator/c/gcc/trackgcroot.py
@@ -149,6 +149,14 @@
else:
del self.insns[i]
+ # the remaining instructions must have their 'previous_insns' list
+ # trimmed of dead previous instructions
+ all_remaining_insns = set(self.insns)
+ assert self.insns[0].previous_insns == ()
+ for insn in self.insns[1:]:
+ insn.previous_insns = [previnsn for previnsn in insn.previous_insns
+ if previnsn in all_remaining_insns]
+
def find_noncollecting_calls(self):
cannot_collect = {}
for line in self.lines:
@@ -286,6 +294,17 @@
else:
insn1.framesize = size_at_insn1
+ # trim: instructions with no framesize are removed from self.insns,
+ # and from the 'previous_insns' lists
+ assert hasattr(self.insns[0], 'framesize')
+ old = self.insns[1:]
+ del self.insns[1:]
+ for insn in old:
+ if hasattr(insn, 'framesize'):
+ self.insns.append(insn)
+ insn.previous_insns = [previnsn for previnsn in insn.previous_insns
+ if hasattr(previnsn, 'framesize')]
+
def fixlocalvars(self):
def fixvar(localvar):
if localvar is None:
More information about the pypy-commit
mailing list