Author: Richard Plangger <r...@pasra.at> Branch: vecopt2 Changeset: r77063:36de2531fe50 Date: 2015-03-09 08:52 +0100 http://bitbucket.org/pypy/pypy/changeset/36de2531fe50/
Log: reorderd some methods in unroll diff --git a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py --- a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py @@ -99,7 +99,7 @@ guard_true(i10) [] jump(p0,p1,p2,i9) """ - self.assert_unfold_loop(self.parse_loop(ops),2, self.parse_loop(unfolded_ops)) + self.assert_unfold_loop(self.parse_loop(ops), 2, self.parse_loop(unfolded_ops)) class TestLLtype(BaseTestDependencyGraph, LLtypeMixin): pass diff --git a/rpython/jit/metainterp/optimizeopt/unfold.py b/rpython/jit/metainterp/optimizeopt/unfold.py --- a/rpython/jit/metainterp/optimizeopt/unfold.py +++ b/rpython/jit/metainterp/optimizeopt/unfold.py @@ -21,25 +21,7 @@ class UnfoldOptimizer(Optimizer): def setup(self): - self.importable_values = {} - self.emitting_dissabled = False - self.emitted_guards = 0 - - def ensure_imported(self, value): - if not self.emitting_dissabled and value in self.importable_values: - imp = self.importable_values[value] - del self.importable_values[value] - imp.import_value(value) - - def emit_operation(self, op): - if op.returns_bool_result(): - self.bool_boxes[self.getvalue(op.result)] = None - if self.emitting_dissabled: - return - if op.is_guard(): - self.emitted_guards += 1 # FIXME: can we use counter in self._emit_operation? - self._emit_operation(op) - + pass class OptUnfold(Optimization): """ In contrast to the loop unroll optimization this optimization @@ -48,26 +30,11 @@ inline_short_preamble = True - def __init__(self, metainterp_sd, jitdriver_sd, loop, optimizations, unroll_factor): + def __init__(self, metainterp_sd, jitdriver_sd, loop, optimizations, + unroll_factor): self.force_unroll_factor = unroll_factor self.optimizer = UnfoldOptimizer(metainterp_sd, jitdriver_sd, loop, optimizations) - self.boxes_created_this_iteration = None - - def get_virtual_state(self, args): - modifier = VirtualStateConstructor(self.optimizer) - return modifier.get_virtual_state(args) - - def fix_snapshot(self, jump_args, snapshot): - if snapshot is None: - return None - snapshot_args = snapshot.boxes - new_snapshot_args = [] - for a in snapshot_args: - a = self.getvalue(a).get_key_box() - new_snapshot_args.append(a) - prev = self.fix_snapshot(jump_args, snapshot.prev) - return Snapshot(prev, new_snapshot_args) def _rename_arguments_ssa(self, rename_map, label_args, jump_args): # fill the map with the renaming boxes. keys are boxes from the label @@ -92,7 +59,9 @@ loop.operations = [] iterations = [[op.clone() for op in operations]] - label_op_args = label_op.getarglist() + label_op_args = [self.getvalue(box).get_key_box() for box in label_op.getarglist()] + values = [self.getvalue(box) for box in label_op.getarglist()] + values[0].make_nonnull(self.optimizer) jump_op_args = jump_op.getarglist() @@ -144,6 +113,7 @@ loop.operations.append(op) loop.operations.append(jump_op) + #start_label = loop.operations[0] #if start_label.getopnum() == rop.LABEL: # loop.operations = loop.operations[1:] @@ -228,6 +198,22 @@ #return final_state return loop + def get_virtual_state(self, args): + modifier = VirtualStateConstructor(self.optimizer) + return modifier.get_virtual_state(args) + + def fix_snapshot(self, jump_args, snapshot): + if snapshot is None: + return None + snapshot_args = snapshot.boxes + new_snapshot_args = [] + for a in snapshot_args: + a = self.getvalue(a).get_key_box() + new_snapshot_args.append(a) + prev = self.fix_snapshot(jump_args, snapshot.prev) + return Snapshot(prev, new_snapshot_args) + + def jump_to_start_label(self, start_label, stop_label): if not start_label or not stop_label: return False _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit