Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult-unroll Changeset: r79057:ecd1d13ff7d7 Date: 2015-08-19 14:52 +0200 http://bitbucket.org/pypy/pypy/changeset/ecd1d13ff7d7/
Log: fix a couple more tests diff --git a/rpython/jit/metainterp/optimizeopt/info.py b/rpython/jit/metainterp/optimizeopt/info.py --- a/rpython/jit/metainterp/optimizeopt/info.py +++ b/rpython/jit/metainterp/optimizeopt/info.py @@ -420,8 +420,11 @@ class ArrayStructInfo(ArrayPtrInfo): def __init__(self, size, vdescr=None): + from rpython.jit.metainterp.optimizeopt import intutils + self.length = size lgt = len(vdescr.get_all_fielddescrs()) + self.lenbound = intutils.ConstIntBound(size) self.vdescr = vdescr self._items = [None] * (size * lgt) diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py --- a/rpython/jit/metainterp/optimizeopt/optimizer.py +++ b/rpython/jit/metainterp/optimizeopt/optimizer.py @@ -484,13 +484,21 @@ newargs = inputargs self.init_inparg_dict_from(newargs) self.call_pure_results = call_pure_results - for op in ops: + if ops[-1].getopnum() in (rop.FINISH, rop.JUMP): + last = len(ops) - 1 + extra_jump = True + else: + extra_jump = False + last = len(ops) + for i in range(last): self._really_emitted_operation = None - self.first_optimization.propagate_forward(op) + self.first_optimization.propagate_forward(ops[i]) #self.loop.operations = self.get_newoperations() #self.loop.quasi_immutable_deps = self.quasi_immutable_deps # accumulate counters self.flush() + if extra_jump: + self.first_optimization.propagate_forward(ops[-1]) self.resumedata_memo.update_counters(self.metainterp_sd.profiler) return BasicLoopInfo(newargs), self._newoperations diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py --- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py @@ -568,8 +568,8 @@ i3 = getfield_gc_i(p3, descr=valuedescr) escape_n(i3) p1 = new_with_vtable(descr=nodesize) + p1sub = new_with_vtable(descr=nodesize2) setfield_gc(p1, i1, descr=valuedescr) - p1sub = new_with_vtable(descr=nodesize2) setfield_gc(p1sub, i1, descr=valuedescr) setfield_gc(p1, p1sub, descr=nextdescr) jump(i1, p1, p2) @@ -584,10 +584,10 @@ p3sub = getfield_gc_r(p3, descr=nextdescr) i3 = getfield_gc_i(p3sub, descr=valuedescr) escape_n(i3) + p2sub = new_with_vtable(descr=nodesize2) + setfield_gc(p2, p2sub, descr=nextdescr) p1 = new_with_vtable(descr=nodesize) - p2sub = new_with_vtable(descr=nodesize2) setfield_gc(p2sub, i1, descr=valuedescr) - setfield_gc(p2, p2sub, descr=nextdescr) jump(i1, p1, p2) """ # The same as test_p123_simple, but in the end the "old" p2 contains @@ -3040,9 +3040,9 @@ p3 = force_token() # p2 = new_with_vtable(descr=vref_descr) + setfield_gc(p0, p2, descr=nextdescr) + setfield_gc(p2, NULL, descr=virtualforceddescr) setfield_gc(p2, p3, descr=virtualtokendescr) - setfield_gc(p2, NULL, descr=virtualforceddescr) - setfield_gc(p0, p2, descr=nextdescr) # call_may_force_n(i1, descr=mayforcevirtdescr) guard_not_forced() [i1] @@ -3051,9 +3051,9 @@ setfield_gc(p2, NULL, descr=virtualtokendescr) p1 = new_with_vtable(descr=nodesize) p1b = new_with_vtable(descr=nodesize) + setfield_gc(p2, p1, descr=virtualforceddescr) setfield_gc(p1b, 252, descr=valuedescr) setfield_gc(p1, p1b, descr=nextdescr) - setfield_gc(p2, p1, descr=virtualforceddescr) jump(p0, i1) """ self.optimize_loop(ops, expected) @@ -3080,9 +3080,9 @@ p3 = force_token() # p2 = new_with_vtable(descr=vref_descr) + setfield_gc(p0, p2, descr=nextdescr) + setfield_gc(p2, NULL, descr=virtualforceddescr) setfield_gc(p2, p3, descr=virtualtokendescr) - setfield_gc(p2, NULL, descr=virtualforceddescr) - setfield_gc(p0, p2, descr=nextdescr) # call_may_force_n(i1, descr=mayforcevirtdescr) guard_not_forced() [p2, i1] @@ -3091,9 +3091,9 @@ setfield_gc(p2, NULL, descr=virtualtokendescr) p1 = new_with_vtable(descr=nodesize) p1b = new_with_vtable(descr=nodesize) + setfield_gc(p2, p1, descr=virtualforceddescr) setfield_gc(p1b, i1, descr=valuedescr) setfield_gc(p1, p1b, descr=nextdescr) - setfield_gc(p2, p1, descr=virtualforceddescr) jump(p0, i1) """ # the point of this test is that 'i1' should show up in the fail_args 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 @@ -145,6 +145,8 @@ args = [self.get_box_replacement(op) for op in jump_op.getarglist()] target_token = jitcelltoken.target_tokens[0] virtual_state = self.get_virtual_state(args) + target_virtual_state = target_token.virtual_state + short_preamble = target_token.short_preamble extra = self.inline_short_preamble(args, short_preamble[0].getarglist(), short_preamble[1:-1], _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit