Author: Ronan Lamy <ronan.l...@gmail.com> Branch: framestate Changeset: r74733:be6505ef80a3 Date: 2014-11-26 14:11 +0100 http://bitbucket.org/pypy/pypy/changeset/be6505ef80a3/
Log: return blocks, not offsets, from FOR_ITER.eval() diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py --- a/rpython/flowspace/bytecode.py +++ b/rpython/flowspace/bytecode.py @@ -477,16 +477,25 @@ @bc_reader.register_opcode class FOR_ITER(BCInstruction): + def bc_flow(self, reader): + block = reader.curr_block + block.operations.append(self) + self.exit = reader.get_block_at(self.arg) + self.body = reader.get_next_block() + block.set_exits([self.body, self.exit]) + reader.end_block() + def eval(self, ctx): from rpython.flowspace.flowcontext import Raise w_iterator = ctx.peekvalue() try: w_nextitem = op.next(w_iterator).eval(ctx) ctx.pushvalue(w_nextitem) + return self.body except Raise as e: if ctx.exception_match(e.w_exc.w_type, const(StopIteration)): ctx.popvalue() - return self.arg + return self.exit else: raise _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit