Author: Hakan Ardo <ha...@debian.org> Branch: jit-short_from_state Changeset: r46253:ebabd5aaa023 Date: 2011-08-02 21:06 +0200 http://bitbucket.org/pypy/pypy/changeset/ebabd5aaa023/
Log: known class diff --git a/pypy/jit/metainterp/optimizeopt/test/test_util.py b/pypy/jit/metainterp/optimizeopt/test/test_util.py --- a/pypy/jit/metainterp/optimizeopt/test/test_util.py +++ b/pypy/jit/metainterp/optimizeopt/test/test_util.py @@ -95,11 +95,13 @@ ('other', lltype.Ptr(NODE))) node = lltype.malloc(NODE) node.parent.typeptr = node_vtable + node2 = lltype.malloc(NODE2) + node2.parent.parent.typeptr = node_vtable2 nodebox = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node)) myptr = nodebox.value myptr2 = lltype.cast_opaque_ptr(llmemory.GCREF, lltype.malloc(NODE)) nullptr = lltype.nullptr(llmemory.GCREF.TO) - nodebox2 = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node)) + nodebox2 = BoxPtr(lltype.cast_opaque_ptr(llmemory.GCREF, node2)) nodesize = cpu.sizeof(NODE) nodesize2 = cpu.sizeof(NODE2) valuedescr = cpu.fielddescrof(NODE, 'value') diff --git a/pypy/jit/metainterp/test/test_virtualstate.py b/pypy/jit/metainterp/test/test_virtualstate.py --- a/pypy/jit/metainterp/test/test_virtualstate.py +++ b/pypy/jit/metainterp/test/test_virtualstate.py @@ -331,12 +331,19 @@ setfield_gc(p2, 7, descr=adescr) setfield_gc(p2, 42, descr=bdescr) jump(p2, p1) + """,""" + [p0, p1] + p2 = new_with_vtable(ConstClass(node_vtable)) + setfield_gc(p2, p1, descr=nextdescr) + setfield_gc(p2, 9, descr=adescr) + jump(p2, p1) """ expected = """ [p0, p1] jump(p1) """ - self.optimize_bridge(loops, loops, expected, 'Loop0') + self.optimize_bridge(loops, loops[0], expected, 'Loop0') + self.optimize_bridge(loops, loops[1], expected, 'Loop1') bridge = """ [p0, p1] p2 = new_with_vtable(ConstClass(node_vtable)) @@ -355,6 +362,27 @@ """ self.optimize_bridge(loops, bridge, "RETRACE") + + def test_known_class(self): + loops = """ + [p0] + guard_nonnull_class(p0, ConstClass(node_vtable)) [] + jump(p0) + """,""" + [p0] + guard_nonnull_class(p0, ConstClass(node_vtable2)) [] + jump(p0) + """ + bridge = """ + [p0] + jump(p0) + """ + self.optimize_bridge(loops, bridge, loops[0], 'Loop0', p0=self.nodebox.value) + self.optimize_bridge(loops, bridge, loops[1], 'Loop1', p0=self.nodebox2.value) + self.optimize_bridge(loops[0], bridge, 'RETRACE', p0=self.nodebox2.value) + self.optimize_bridge(loops, loops[0], loops[0], 'Loop0', p0=self.nullptr) + self.optimize_bridge(loops, loops[1], loops[1], 'Loop1', p0=self.nullptr) + class TestLLtypeGuards(BaseTestGenerateGuards, LLtypeMixin): pass _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit