Author: Remi Meier <remi.me...@gmail.com> Branch: fix-longevity Changeset: r82448:fa5e185b9757 Date: 2016-02-23 16:50 +0100 http://bitbucket.org/pypy/pypy/changeset/fa5e185b9757/
Log: (plan_rich,remi) add test for call distance calculation diff --git a/rpython/jit/backend/llsupport/test/test_regalloc_integration.py b/rpython/jit/backend/llsupport/test/test_regalloc_integration.py --- a/rpython/jit/backend/llsupport/test/test_regalloc_integration.py +++ b/rpython/jit/backend/llsupport/test/test_regalloc_integration.py @@ -7,7 +7,8 @@ TargetToken from rpython.jit.metainterp.resoperation import rop from rpython.jit.backend.detect_cpu import getcpuclass -from rpython.jit.backend.llsupport.regalloc import is_comparison_or_ovf_op +from rpython.jit.backend.llsupport.regalloc import is_comparison_or_ovf_op,\ + compute_var_live_ranges from rpython.jit.tool.oparser import parse from rpython.rtyper.lltypesystem import lltype, llmemory from rpython.rtyper.annlowlevel import llhelper @@ -155,6 +156,40 @@ return self.cpu.get_latest_descr(self.deadframe) class TestRegallocSimple(BaseTestRegalloc): + def test_compute_live_ranges(self): + ops = ''' + [i0] + label(i0, descr=targettoken) + i1 = int_add(i0, 1) + i2 = int_lt(i1, 20) + guard_true(i2) [i1] + jump(i1, descr=targettoken) + ''' + loop = self.parse(ops) + lrs = compute_var_live_ranges(loop.inputargs, loop.operations) + assert lrs.longevity[loop.operations[1]] == (1, 4) + assert lrs.longevity[loop.operations[2]] == (2, 3) + assert lrs.last_real_usage[loop.operations[1]] == 2 + assert lrs.last_real_usage[loop.operations[2]] == 3 + assert all([i < 0 for i in lrs.dist_to_next_call]) + + def test_compute_call_distances(self): + ops = ''' + [i0] + label(i0, descr=targettoken) + i1 = int_add(i0, 1) + i2 = int_lt(i1, 20) + call_n(ConstClass(raising_fptr), i0, descr=raising_calldescr) + guard_true(i2) [i1] + call_n(ConstClass(raising_fptr), i0, descr=raising_calldescr) + guard_true(i2) [i1] + jump(i1, descr=targettoken) + ''' + loop = self.parse(ops) + lrs = compute_var_live_ranges(loop.inputargs, loop.operations) + assert lrs.dist_to_next_call == [3, 2, 1, 0, 1, 0, -7, -8] + + def test_simple_loop(self): ops = ''' [i0] _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit