[pypy-svn] r67366 - pypy/branch/pyjitpl5/pypy/jit/metainterp/test
arigo at codespeak.net
arigo at codespeak.net
Mon Aug 31 17:23:40 CEST 2009
Author: arigo
Date: Mon Aug 31 17:23:36 2009
New Revision: 67366
Modified:
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/oparser.py
pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py
Log:
A failing test derived from this code in pypy-c-jit:
while a < N:
t = (a+1,)
(a,) = t
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/oparser.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/oparser.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/oparser.py Mon Aug 31 17:23:36 2009
@@ -186,8 +186,10 @@
ops = []
newlines = []
for line in lines:
- if not line.strip() or line.strip().startswith("#"):
- continue # a comment
+ if '#' in line:
+ line = line[:line.index('#')] # remove comment
+ if not line.strip():
+ continue # a comment or empty line
newlines.append(line)
base_indent, inpargs = self.parse_inpargs(newlines[0])
newlines = newlines[1:]
Modified: pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py
==============================================================================
--- pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py (original)
+++ pypy/branch/pyjitpl5/pypy/jit/metainterp/test/test_optimizefindnode.py Mon Aug 31 17:23:36 2009
@@ -74,8 +74,25 @@
sbox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, lltype.malloc(S)))
arraydescr2 = cpu.arraydescrof(lltype.GcArray(lltype.Ptr(S)))
+ T = lltype.GcStruct('TUPLE',
+ ('c', lltype.Signed),
+ ('d', lltype.Ptr(lltype.GcArray(lltype.Ptr(NODE)))))
+ tsize = cpu.sizeof(T)
+ cdescr = cpu.fielddescrof(T, 'c')
+ ddescr = cpu.fielddescrof(T, 'd')
+ arraydescr3 = cpu.arraydescrof(lltype.GcArray(lltype.Ptr(NODE)))
+
+ U = lltype.GcStruct('U',
+ ('parent', OBJECT),
+ ('one', lltype.Ptr(lltype.GcArray(lltype.Ptr(NODE)))))
+ u_vtable = lltype.malloc(OBJECT_VTABLE, immortal=True)
+ u_vtable_adr = llmemory.cast_ptr_to_adr(u_vtable)
+ usize = cpu.sizeof(U)
+ onedescr = cpu.fielddescrof(U, 'one')
+
cpu.class_sizes = {cpu.cast_adr_to_int(node_vtable_adr): cpu.sizeof(NODE),
- cpu.cast_adr_to_int(node_vtable_adr2): cpu.sizeof(NODE2)}
+ cpu.cast_adr_to_int(node_vtable_adr2): cpu.sizeof(NODE2),
+ cpu.cast_adr_to_int(u_vtable_adr): cpu.sizeof(U)}
namespace = locals()
class OOtypeMixin(object):
@@ -117,6 +134,19 @@
sbox = BoxObj(ootype.cast_to_object(ootype.new(S)))
arraydescr2 = cpu.arraydescrof(ootype.Array(S))
+ T = ootype.Record({'c': ootype.Signed,
+ 'd': ootype.Array(NODE)})
+ tsize = cpu.typedescrof(T)
+ cdescr = cpu.fielddescrof(T, 'c')
+ ddescr = cpu.fielddescrof(T, 'd')
+ arraydescr3 = cpu.arraydescrof(ootype.Array(NODE))
+
+ U = ootype.Instance('U', ootype.ROOT, {'one': ootype.Array(NODE)})
+ usize = cpu.typedescrof(U)
+ onedescr = cpu.fielddescrof(U, 'one')
+ u_vtable = ootype.runtimeClass(U)
+ u_vtable_adr = ootype.cast_to_object(u_vtable)
+
# force a consistent order
valuedescr.sort_key()
nextdescr.sort_key()
@@ -124,7 +154,8 @@
bdescr.sort_key()
cpu.class_sizes = {node_vtable_adr: cpu.typedescrof(NODE),
- node_vtable_adr2: cpu.typedescrof(NODE2)}
+ node_vtable_adr2: cpu.typedescrof(NODE2),
+ u_vtable_adr: cpu.typedescrof(U)}
namespace = locals()
class BaseTest(object):
@@ -739,6 +770,74 @@
"""
self.find_nodes(ops, 'Not, Not')
+ def test_find_nodes_bug_1(self):
+ py.test.skip("fails!")
+ ops = """
+ [p12]
+ i16 = ooisnull(p12)
+ guard_false(i16)
+ fail()
+ guard_class(p12, ConstClass(node_vtable))
+ fail()
+ guard_class(p12, ConstClass(node_vtable))
+ fail()
+ i22 = getfield_gc_pure(p12, descr=valuedescr)
+ escape(i22)
+ i25 = ooisnull(p12)
+ guard_false(i25)
+ fail()
+ guard_class(p12, ConstClass(node_vtable))
+ fail()
+ guard_class(p12, ConstClass(node_vtable))
+ fail()
+ i29 = getfield_gc_pure(p12, descr=valuedescr)
+ i31 = int_add_ovf(i29, 1)
+ guard_no_overflow()
+ fail()
+ p33 = new_with_vtable(ConstClass(node_vtable)) # NODE
+ setfield_gc(p33, i31, descr=valuedescr)
+ #
+ p35 = new_array(1, descr=arraydescr3) # Array(NODE)
+ setarrayitem_gc(p35, 0, p33, descr=arraydescr3)
+ p38 = new_with_vtable(ConstClass(u_vtable)) # U
+ setfield_gc(p38, p35, descr=onedescr)
+ i39 = ooisnull(p38)
+ guard_false(i39)
+ fail()
+ i40 = oononnull(p38)
+ guard_true(i40)
+ fail()
+ guard_class(p38, ConstClass(u_vtable))
+ fail()
+ p42 = getfield_gc(p38, descr=onedescr) # Array(NODE)
+ i43 = arraylen_gc(p42, descr=arraydescr3)
+ i45 = int_sub(i43, 0)
+ p46 = new(descr=tsize) # T
+ setfield_gc(p46, i45, descr=cdescr)
+ p47 = new_array(i45, descr=arraydescr3) # Array(NODE)
+ setfield_gc(p46, p47, descr=ddescr)
+ i48 = int_lt(0, i43)
+ guard_true(i48)
+ fail()
+ p49 = getarrayitem_gc(p42, 0, descr=arraydescr3) # NODE
+ p50 = getfield_gc(p46, descr=ddescr) # Array(NODE)
+ setarrayitem_gc(p50, 0, p49, descr=arraydescr3)
+ i52 = int_lt(1, i43)
+ guard_false(i52)
+ fail()
+ i53 = getfield_gc(p46, descr=cdescr)
+ i55 = int_ne(i53, 1)
+ guard_false(i55)
+ fail()
+ p56 = getfield_gc(p46, descr=ddescr) # Array(NODE)
+ p58 = getarrayitem_gc(p56, 0, descr=arraydescr3) # NODE
+ i59 = ooisnull(p38)
+ guard_false(i59)
+ fail()
+ jump(p58)
+ """
+ self.find_nodes(ops, 'Virtual(node_vtable, valuedescr=Not)')
+
# ------------------------------
# Bridge tests
More information about the Pypy-commit
mailing list