[pypy-commit] pypy stm-jit: Update the test.
arigo
noreply at buildbot.pypy.org
Fri Aug 10 12:11:24 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch: stm-jit
Changeset: r56685:a6c4a1f48076
Date: 2012-08-10 12:11 +0200
http://bitbucket.org/pypy/pypy/changeset/a6c4a1f48076/
Log: Update the test.
diff --git a/pypy/jit/backend/llsupport/test/test_stmrewrite.py b/pypy/jit/backend/llsupport/test/test_stmrewrite.py
--- a/pypy/jit/backend/llsupport/test/test_stmrewrite.py
+++ b/pypy/jit/backend/llsupport/test/test_stmrewrite.py
@@ -30,8 +30,8 @@
jump()
""", """
[p1]
- p3 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setfield_gc(p3, p2, descr=tzdescr)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p2, p2, descr=tzdescr)
jump()
""")
@@ -43,10 +43,10 @@
jump()
""", """
[p1, p2, p3, p4]
- p5 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setfield_gc(p5, p2, descr=tzdescr)
- p6 = cond_call_gc_wb(p3, 0, descr=wbdescr)
- setfield_gc(p6, p4, descr=tzdescr)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, p2, descr=tzdescr)
+ cond_call_gc_wb(p3, 0, descr=wbdescr)
+ setfield_gc(p3, p4, descr=tzdescr)
jump()
""")
@@ -58,9 +58,9 @@
jump()
""", """
[p1, p2, i3]
- p4 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setfield_gc(p4, p2, descr=tzdescr)
- setfield_gc(p4, i3, descr=tydescr)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, p2, descr=tzdescr)
+ setfield_gc(p1, i3, descr=tydescr)
jump()
""")
@@ -73,12 +73,12 @@
jump(p1)
""", """
[p1, p2, i3]
- p4 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setfield_gc(p4, p2, descr=tzdescr)
- label(p4, i3)
- p5 = cond_call_gc_wb(p4, 0, descr=wbdescr)
- setfield_gc(p5, i3, descr=tydescr)
- jump(p5)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, p2, descr=tzdescr)
+ label(p1, i3)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, i3, descr=tydescr)
+ jump(p1)
""")
def test_ignore_some_operations(self):
@@ -109,7 +109,11 @@
p2 = getfield_gc(p1, descr=tzdescr)
jump(p2)
""", """
- ?
+ [p1]
+ stm_read_before()
+ p2 = getfield_gc(p1, descr=tzdescr)
+ stm_read_after()
+ jump(p2)
""")
def test_rewrite_getarrayitem_gc(self):
@@ -118,7 +122,11 @@
i3 = getarrayitem_gc(p1, i2, descr=adescr)
jump(i3)
""", """
- ?
+ [p1, i2]
+ stm_read_before()
+ i3 = stm_getarrayitem_gc(p1, i2, descr=adescr)
+ stm_read_after()
+ jump(i3)
""")
def test_rewrite_getinteriorfield_gc(self):
@@ -127,7 +135,79 @@
i3 = getinteriorfield_gc(p1, ...)
jump(i3)
""", """
- ?
+ [p1, i2]
+ stm_read_before()
+ i3 = stm_getinteriorfield_gc(p1, ...)
+ stm_read_after()
+ jump(i3)
+ """)
+
+ def test_rewrite_several_getfield_gcs(self):
+ self.check_rewrite("""
+ [p1]
+ p2 = getfield_gc(p1, descr=tzdescr)
+ i2 = getfield_gc(p1, descr=tydescr)
+ jump(p2, i2)
+ """, """
+ [p1]
+ stm_read_before()
+ p2 = getfield_gc(p1, descr=tzdescr)
+ i2 = getfield_gc(p1, descr=tydescr)
+ stm_read_after()
+ jump(p2, i2)
+ """)
+
+ def test_rewrite_unrelated_getfield_gcs(self):
+ self.check_rewrite("""
+ [p1]
+ p2 = getfield_gc(p1, descr=tzdescr)
+ i2 = getfield_gc(p2, descr=tydescr)
+ jump(p2, i2)
+ """, """
+ [p1]
+ stm_read_before()
+ p2 = getfield_gc(p1, descr=tzdescr)
+ stm_read_after()
+ stm_read_before()
+ i2 = getfield_gc(p2, descr=tydescr)
+ stm_read_after()
+ jump(p2, i2)
+ """)
+
+ def test_move_forward_getfield_gc(self):
+ self.check_rewrite("""
+ [p1]
+ p2 = getfield_gc(p1, descr=tzdescr)
+ guard_nonnull(p2) [i1]
+ i2 = getfield_gc(p1, descr=tydescr)
+ jump(p2, i2)
+ """, """
+ [p1]
+ stm_read_before()
+ p2 = getfield_gc(p1, descr=tzdescr)
+ i2 = getfield_gc(p1, descr=tydescr)
+ stm_read_after()
+ guard_nonnull(p2) [i1]
+ jump(p2, i2)
+ """)
+
+ def test_dont_move_forward_over_sideeffect(self):
+ self.check_rewrite("""
+ [p1]
+ p2 = getfield_gc(p1, descr=tzdescr)
+ call(123)
+ i2 = getfield_gc(p1, descr=tydescr)
+ jump(p2, i2)
+ """, """
+ [p1]
+ stm_read_before()
+ p2 = getfield_gc(p1, descr=tzdescr)
+ stm_read_after()
+ call(123)
+ stm_read_before()
+ i2 = getfield_gc(p1, descr=tydescr)
+ stm_read_after()
+ jump(p2, i2)
""")
def test_getfield_raw(self):
@@ -211,10 +291,10 @@
jump()
""", """
[p1, i1, p2, p3, i3, p4]
- p5 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setarrayitem_gc(p5, i1, p2, descr=?)
- p6 = cond_call_gc_wb(p3, 0, descr=wbdescr)
- setarrayitem_gc(p6, i3, p4, descr=?)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setarrayitem_gc(p1, i1, p2, descr=?)
+ cond_call_gc_wb(p3, 0, descr=wbdescr)
+ setarrayitem_gc(p3, i3, p4, descr=?)
jump()
""")
@@ -222,13 +302,15 @@
self.check_rewrite("""
[p1, p2, i3, i2, i3]
setarrayitem_gc(p1, i2, p2, descr=?)
+ i4 = read_timestamp()
setarrayitem_gc(p1, i3, i3, descr=?)
jump()
""", """
[p1, p1, i3]
- p4 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setarrayitem_gc(p4, i2, p2, descr=?)
- setarrayitem_gc(p4, i3, p3, descr=?)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setarrayitem_gc(p1, i2, p2, descr=?)
+ i4 = read_timestamp()
+ setarrayitem_gc(p1, i3, p3, descr=?)
jump()
""")
@@ -240,9 +322,9 @@
jump()
""", """
[p1, p1, i3]
- p4 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setinteriorfield_gc(p4, i2, p2, descr=?)
- setinteriorfield_gc(p4, i3, p3, descr=?)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setinteriorfield_gc(p1, i2, p2, descr=?)
+ setinteriorfield_gc(p1, i3, p3, descr=?)
jump()
""")
@@ -254,9 +336,9 @@
jump()
""", """
[p1, p2, i3]
- p4 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- strsetitem(p4, i2, i3)
- unicodesetitem(p4, i2, i3)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ strsetitem(p1, i2, i3)
+ unicodesetitem(p1, i2, i3)
jump()
""")
@@ -277,13 +359,13 @@
jump(i2, p7)
""" % op, """
[i1, i2, i3, p7]
- p8 = cond_call_gc_wb(p7, 0, descr=wbdescr)
- setfield_gc(p8, 10, descr=tydescr)
+ cond_call_gc_wb(p7, 0, descr=wbdescr)
+ setfield_gc(p7, 10, descr=tydescr)
call(521) # stm_become_inevitable
%s
- p9 = cond_call_gc_wb(p8, 0, descr=wbdescr)
- setfield_gc(p9, 10, descr=tydescr)
- jump(i2, p9)
+ cond_call_gc_wb(p7, 0, descr=wbdescr)
+ setfield_gc(p7, 10, descr=tydescr)
+ jump(i2, p7)
""" % op)
def test_copystrcontent(self):
@@ -302,11 +384,11 @@
jump(p1)
""" % op, """
[p1]
- p2 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setfield_gc(p2, 10, descr=tydescr)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, 10, descr=tydescr)
%s
- setfield_gc(p2, 20, descr=tydescr)
- jump(p2)
+ setfield_gc(p1, 20, descr=tydescr)
+ jump(p1)
""" % op)
def test_call_force(self):
@@ -323,10 +405,10 @@
jump(p1)
""" % op, """
[p1]
- p2 = cond_call_gc_wb(p1, 0, descr=wbdescr)
- setfield_gc(p2, 10, descr=tydescr)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, 10, descr=tydescr)
%s
- p3 = cond_call_gc_wb(p2, 0, descr=wbdescr)
- setfield_gc(p3, 20, descr=tydescr)
- jump(p3)
+ cond_call_gc_wb(p1, 0, descr=wbdescr)
+ setfield_gc(p1, 20, descr=tydescr)
+ jump(p1)
""" % op)
More information about the pypy-commit
mailing list