Author: Maciej Fijalkowski <fij...@gmail.com> Branch: resume-refactor Changeset: r68995:d975673661fd Date: 2014-01-29 18:40 +0100 http://bitbucket.org/pypy/pypy/changeset/d975673661fd/
Log: hack enough at the unrolling to pass the next test diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py b/rpython/jit/metainterp/optimizeopt/unroll.py --- a/rpython/jit/metainterp/optimizeopt/unroll.py +++ b/rpython/jit/metainterp/optimizeopt/unroll.py @@ -524,18 +524,22 @@ if box in self.optimizer.values: box = self.optimizer.values[box].force_box(self.optimizer) jumpargs.append(box) - - def jump_to_already_compiled_trace(self, jumpop): + + def jump_to_already_compiled_trace(self, jumpop): assert jumpop.getopnum() == rop.JUMP + leave_frame_op = self.optimizer._newoperations.pop() + assert leave_frame_op.getopnum() == rop.LEAVE_FRAME cell_token = jumpop.getdescr() assert isinstance(cell_token, JitCellToken) if not cell_token.target_tokens: + self.optimizer._newoperations.append(leave_frame_op) return False if not self.inline_short_preamble: assert cell_token.target_tokens[0].virtual_state is None jumpop.setdescr(cell_token.target_tokens[0]) + self.optimizer._newoperations.append(leave_frame_op) self.optimizer.send_extra_operation(jumpop) return True @@ -586,7 +590,9 @@ self.optimizer.send_extra_operation(guard) try: - for shop in target.short_preamble[1:]: + stop = len(target.short_preamble) - 1 + assert stop >= 0 + for shop in target.short_preamble[1:stop]: newop = inliner.inline_op(shop) self.optimizer.send_extra_operation(newop) if shop.result in target.assumed_classes: @@ -600,9 +606,14 @@ "jumping to preamble instead") assert cell_token.target_tokens[0].virtual_state is None jumpop.setdescr(cell_token.target_tokens[0]) + self.optimizer._newoperations.append(leave_frame_op) self.optimizer.send_extra_operation(jumpop) + self.optimizer._newoperations.append(leave_frame_op) + newop = inliner.inline_op(target.short_preamble[-1]) + self.optimizer.send_extra_operation(newop) return True debug_stop('jit-log-virtualstate') + self.optimizer._newoperations.append(leave_frame_op) return False diff --git a/rpython/jit/resume/frontend.py b/rpython/jit/resume/frontend.py --- a/rpython/jit/resume/frontend.py +++ b/rpython/jit/resume/frontend.py @@ -23,7 +23,7 @@ def finish(self): nextbh = None curbh = None - for frame in self.framestack: + for i, frame in enumerate(self.framestack): curbh = self.bhinterpbuilder.acquire_interp() curbh.nextblackholeinterp = nextbh nextbh = curbh _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit