Author: Maciej Fijalkowski <fij...@gmail.com> Branch: optresult-unroll Changeset: r79049:84d61e80af51 Date: 2015-08-19 11:17 +0200 http://bitbucket.org/pypy/pypy/changeset/84d61e80af51/
Log: write a minimal test for short preamble inlining diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py --- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebridge.py @@ -8,8 +8,13 @@ class TestOptimizeBridge(BaseTest, LLtypeMixin): enable_opts = "intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll" - def optimize(self, ops, bridge_ops, expected, inline_short_preamble=True): + def optimize(self, ops, bridge_ops, expected, expected_loop=None, + inline_short_preamble=True): loop = self.parse(ops, postprocess=self.postprocess) + if expected_loop is not None: + xxx + exp_loop = self.parse(expected_loop, postprocess=self.postprocess) + self.assert_equal(loop, convert_old_style_to_targets(exp_loop)) info = self.unroll_and_optimize(loop, None) jitcell_token = compile.make_jitcell_token(None) mid_label_descr = TargetToken(jitcell_token) @@ -36,6 +41,18 @@ expected = self.parse(expected, postprocess=self.postprocess) self.assert_equal(bridge, convert_old_style_to_targets(expected, jump=True)) + jump_bridge = bridge.operations[-1] + jump_d = jump_bridge.getdescr() + jump_args = jump_bridge.getarglist() + if loop.operations[0].getdescr() is jump_d: + # jump to loop + label_args = loop.operations[0].getarglist() + else: + assert info.preamble.operations[0].getdescr() is jump_d + label_args = info.preamble.operations[0].getarglist() + assert len(jump_args) == len(label_args) + for a, b in zip(jump_args, label_args): + assert a.type == b.type def test_simple(self): loop = """ @@ -54,3 +71,18 @@ jump(i1) """ self.optimize(loop, bridge, expected) + + def test_minimal_short_preamble(self): + loop = """ + [i0, i1, i3] + i2 = int_add(i0, 1) + i4 = int_add(i3, i2) + i5 = int_is_true(i4) + guard_true(i5) [i2, i4, i5] + jump(i0, i1, i4) + """ + bridge = """ + [i0, i1, i2] + jump(i0, i1, i2) + """ + self.optimize(loop, bridge, bridge) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit