Author: Armin Rigo <ar...@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: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit