Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult-unroll Changeset: r79147:e977efbc9001 Date: 2015-08-23 10:59 +0200 http://bitbucket.org/pypy/pypy/changeset/e977efbc9001/
Log: whack at problems some more diff --git a/rpython/jit/metainterp/optimizeopt/test/test_util.py b/rpython/jit/metainterp/optimizeopt/test/test_util.py --- a/rpython/jit/metainterp/optimizeopt/test/test_util.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_util.py @@ -483,19 +483,17 @@ call_pure_results) start_state, preamble_ops = self._do_optimize_loop(preamble_data) preamble_data.forget_optimization_info() - end_label = ResOperation(rop.LABEL, start_state.end_args) - loop_data = compile.UnrolledLoopData(end_label, jump_op, + loop_data = compile.UnrolledLoopData(start_label, jump_op, ops, start_state, call_pure_results) loop_info, ops = self._do_optimize_loop(loop_data) preamble = TreeLoop('preamble') preamble.inputargs = start_state.renamed_inputargs start_label = ResOperation(rop.LABEL, start_state.renamed_inputargs) - inputargs = loop_info.label_args[:] - emit_end_label = ResOperation(rop.LABEL, inputargs) + emit_end_label = ResOperation(rop.LABEL, loop_info.label_args) preamble.operations = ([start_label] + preamble_ops + loop_info.extra_same_as + [emit_end_label]) - loop.inputargs = inputargs + loop.inputargs = loop_info.label_args[:] loop.operations = [emit_end_label] + ops return Info(preamble, loop_info.short_preamble, start_state.virtual_state) 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 @@ -49,7 +49,7 @@ self.make_constant_class(op, known_class, False) if isinstance(preamble_info, info.ArrayPtrInfo): arr_info = info.ArrayPtrInfo(None) - arr_info.lenbound = preamble_info.getlenbound() + arr_info.lenbound = preamble_info.getlenbound(None) op.set_forwarded(arr_info) if preamble_info.is_nonnull(): self.make_nonnull(op) @@ -103,6 +103,8 @@ self._check_no_forwarding([[start_label, end_jump], ops]) self.import_state(start_label, state) self.potential_extra_ops = {} + label_args = state.virtual_state.make_inputargs( + start_label.getarglist(), self.optimizer) self.optimizer.propagate_all_forward(start_label.getarglist()[:], ops, call_pure_results, False) orig_jump_args = [self.get_box_replacement(op) @@ -120,7 +122,7 @@ self.optimizer.patchguardop) # remove duplicates, removes stuff from used boxes too label_args, jump_args = self.filter_extra_jump_args( - start_label.getarglist() + self.short_preamble_producer.used_boxes, + label_args + self.short_preamble_producer.used_boxes, jump_args + extra_jump_args) jump_op = ResOperation(rop.JUMP, jump_args) self.optimizer.send_extra_operation(jump_op) @@ -250,7 +252,7 @@ source = targetop.getarg(i) assert source is not target source.set_forwarded(target) - info = exported_state.exported_infos.get(source, None) + info = exported_state.exported_infos.get(target, None) if info is not None: self.optimizer.setinfo_from_preamble(source, info, exported_state.exported_infos) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit