Author: Lukas Diekmann <lukas.diekm...@uni-duesseldorf.de> Branch: set-strategies Changeset: r51290:a81b07b0d748 Date: 2012-01-12 18:27 +0100 http://bitbucket.org/pypy/pypy/changeset/a81b07b0d748/
Log: added tests for optimized jit output with merged strategy implementations (lists, sets, strings) diff --git a/pypy/module/pypyjit/test_pypy_c/test_containers.py b/pypy/module/pypyjit/test_pypy_c/test_containers.py --- a/pypy/module/pypyjit/test_pypy_c/test_containers.py +++ b/pypy/module/pypyjit/test_pypy_c/test_containers.py @@ -128,3 +128,82 @@ loop, = log.loops_by_filename(self.filepath) ops = loop.ops_by_id('look') assert 'call' not in log.opnames(ops) + + #XXX the following tests only work with strategies enabled + + def test_should_not_create_intobject_with_sets(self): + def main(n): + i = 0 + s = set() + while i < n: + s.add(i) + i += 1 + log = self.run(main, [1000]) + assert log.result == main(1000) + loop, = log.loops_by_filename(self.filepath) + opnames = log.opnames(loop.allops()) + assert opnames.count('new_with_vtable') == 0 + + def test_should_not_create_stringobject_with_sets(self): + def main(n): + i = 0 + s = set() + while i < n: + s.add(str(i)) + i += 1 + log = self.run(main, [1000]) + assert log.result == main(1000) + loop, = log.loops_by_filename(self.filepath) + opnames = log.opnames(loop.allops()) + assert opnames.count('new_with_vtable') == 0 + + def test_should_not_create_intobject_with_lists(self): + def main(n): + i = 0 + l = [] + while i < n: + l.append(i) + i += 1 + log = self.run(main, [1000]) + assert log.result == main(1000) + loop, = log.loops_by_filename(self.filepath) + opnames = log.opnames(loop.allops()) + assert opnames.count('new_with_vtable') == 0 + + def test_should_not_create_stringobject_with_lists(self): + def main(n): + i = 0 + l = [] + while i < n: + l.append(str(i)) + i += 1 + log = self.run(main, [1000]) + assert log.result == main(1000) + loop, = log.loops_by_filename(self.filepath) + opnames = log.opnames(loop.allops()) + assert opnames.count('new_with_vtable') == 0 + + def test_optimized_create_list_from_string(self): + def main(n): + i = 0 + l = [] + while i < n: + l = list("abc" * i) + i += 1 + log = self.run(main, [1000]) + assert log.result == main(1000) + loop, = log.loops_by_filename(self.filepath) + opnames = log.opnames(loop.allops()) + assert opnames.count('new_with_vtable') == 0 + + def test_optimized_create_set_from_list(self): + def main(n): + i = 0 + while i < n: + s = set([1,2,3]) + i += 1 + log = self.run(main, [1000]) + assert log.result == main(1000) + loop, = log.loops_by_filename(self.filepath) + opnames = log.opnames(loop.allops()) + assert opnames.count('new_with_vtable') == 0 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit