[pypy-svn] r36692 - pypy/dist/pypy/jit/codegen/test
arigo at codespeak.net
arigo at codespeak.net
Sat Jan 13 19:13:57 CET 2007
Author: arigo
Date: Sat Jan 13 19:13:56 2007
New Revision: 36692
Modified:
pypy/dist/pypy/jit/codegen/test/rgenop_tests.py
Log:
Yet another test that fails in the new i386 branch.
Modified: pypy/dist/pypy/jit/codegen/test/rgenop_tests.py
==============================================================================
--- pypy/dist/pypy/jit/codegen/test/rgenop_tests.py (original)
+++ pypy/dist/pypy/jit/codegen/test/rgenop_tests.py Sat Jan 13 19:13:56 2007
@@ -795,3 +795,42 @@
res = fnptr(44)
assert res == 2
+
+ def test_jump_to_block_with_many_vars(self):
+ rgenop = self.RGenOp()
+ signed_kind = rgenop.kindToken(lltype.Signed)
+ sigtoken = rgenop.sigToken(FUNC)
+ builder, gv_verysmall_callable, [gv_x] = rgenop.newgraph(sigtoken,
+ "verysmall")
+ builder.finish_and_return(sigtoken, rgenop.genconst(17))
+
+ builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken,
+ "jtbwmv")
+ gv_cond = builder.genop1("int_is_true", gv_x)
+ builder2 = builder.jump_if_false(gv_cond, [gv_x])
+ builder = builder.pause_writing([gv_x])
+
+ builder2.start_writing()
+ args_gv = [gv_x]
+ label = builder2.enter_next_block([signed_kind], args_gv)
+ [gv_x2] = args_gv
+
+ gvs = []
+ for i in range(50):
+ gvs.append(builder2.genop2("int_mul", gv_x2, rgenop.genconst(i)))
+
+ gvs.append(builder2.genop_call(sigtoken, gv_verysmall_callable,
+ [gv_x2]))
+
+ while len(gvs) > 1:
+ gvs.append(builder2.genop2("int_add", gvs.pop(), gvs.pop()))
+
+ builder2.finish_and_return(sigtoken, gvs.pop())
+
+ builder.start_writing()
+ builder.finish_and_goto([gv_x], label)
+ builder.end()
+ fnptr = self.cast(gv_callable, 1)
+
+ res = fnptr(1291)
+ assert res == 1291 * (49*50/2) + 17
More information about the Pypy-commit
mailing list