Author: Hakan Ardo <ha...@debian.org> Branch: jit-targets Changeset: r48766:90d65a7d35c3 Date: 2011-11-04 22:19 +0100 http://bitbucket.org/pypy/pypy/changeset/90d65a7d35c3/
Log: allow orignial jump_args to be used in the peeled loop diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py --- a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py +++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py @@ -97,12 +97,12 @@ [ResOperation(rop.TARGET, jump_args, None, descr=targettoken)] self._do_optimize_loop(preamble, call_pure_results) - jump_args = preamble.operations[-1].getdescr().exported_state.jump_args # FIXME!! inliner = Inliner(inputargs, jump_args) loop.inputargs = None loop.start_resumedescr = preamble.start_resumedescr loop.operations = [preamble.operations[-1]] + \ [inliner.inline_op(op, clone=False) for op in cloned_operations] + self._do_optimize_loop(loop, call_pure_results) extra_same_as = [] while loop.operations[0].getopnum() != rop.TARGET: diff --git a/pypy/jit/metainterp/optimizeopt/unroll.py b/pypy/jit/metainterp/optimizeopt/unroll.py --- a/pypy/jit/metainterp/optimizeopt/unroll.py +++ b/pypy/jit/metainterp/optimizeopt/unroll.py @@ -152,8 +152,8 @@ loop.operations = self.optimizer.get_newoperations() def export_state(self, targetop): - jump_args = targetop.getarglist() - jump_args = [self.getvalue(a).get_key_box() for a in jump_args] + original_jump_args = targetop.getarglist() + jump_args = [self.getvalue(a).get_key_box() for a in original_jump_args] start_resumedescr = self.optimizer.loop.start_resumedescr.clone_if_mutable() assert isinstance(start_resumedescr, ResumeGuardDescr) @@ -173,6 +173,9 @@ constant_inputargs[box] = const short_boxes = ShortBoxes(self.optimizer, inputargs + constant_inputargs.keys()) + for i in range(len(original_jump_args)): + if original_jump_args[i] is not jump_args[i]: + short_boxes.alias(original_jump_args[i], jump_args[i]) self.optimizer.clear_newoperations() for box in short_inputargs: @@ -215,6 +218,9 @@ preamble_value = exported_state.optimizer.getvalue(box) value = self.optimizer.getvalue(box) value.import_from(preamble_value, self.optimizer) + + for newbox, oldbox in self.short_boxes.aliases.items(): + self.optimizer.make_equal_to(newbox, self.optimizer.getvalue(oldbox)) # Setup the state of the new optimizer by emiting the # short operations and discarding the result _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit