[pypy-svn] r36726 - pypy/dist/pypy/jit/codegen/test
mwh at codespeak.net
mwh at codespeak.net
Sun Jan 14 12:58:29 CET 2007
Author: mwh
Date: Sun Jan 14 12:58:26 2007
New Revision: 36726
Modified:
pypy/dist/pypy/jit/codegen/test/rgenop_tests.py
Log:
a test that calls pause_writing and start_writing in a way that allows the
builder to just carry on without inserting a jump (an optimization I plan to
add to the ppc backend soon).
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 Sun Jan 14 12:58:26 2007
@@ -840,8 +840,7 @@
rgenop = self.RGenOp()
signed_kind = rgenop.kindToken(lltype.Signed)
sigtoken = rgenop.sigToken(FUNC)
- builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken,
- "sameas")
+ builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken, "sameas")
gv_nineteen = builder.genop_same_as(signed_kind, rgenop.genconst(19))
assert not gv_nineteen.is_const # 'same_as' must return a variable
builder.finish_and_return(sigtoken, gv_nineteen)
@@ -851,3 +850,35 @@
res = fnptr(17)
assert res == 19
+
+ def test_pause_and_resume(self):
+ # def f(x):
+ # y = x + 1
+ # # pause/resume here
+ # z = x - 1
+ # w = y*z
+ # return w
+ rgenop = self.RGenOp()
+
+ signed_kind = rgenop.kindToken(lltype.Signed)
+ sigtoken = rgenop.sigToken(FUNC)
+ builder, gv_callable, [gv_x] = rgenop.newgraph(sigtoken, "f")
+
+ gv_one = rgenop.genconst(1)
+
+ gv_y = builder.genop2("int_add", gv_x, gv_one)
+
+ builder = builder.pause_writing([gv_x, gv_y])
+ builder.start_writing()
+
+ gv_z = builder.genop2("int_sub", gv_x, gv_one)
+ gv_w = builder.genop2("int_mul", gv_y, gv_z)
+
+ builder.finish_and_return(sigtoken, gv_w)
+
+ builder.end()
+
+ fnptr = self.cast(gv_callable, 1)
+
+ res = fnptr(1)
+ assert res == 0
More information about the Pypy-commit
mailing list