Author: Maciej Fijalkowski <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit