[pypy-svn] r66378 - in pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Sat Jul 18 20:13:59 CEST 2009
Author: arigo
Date: Sat Jul 18 20:13:59 2009
New Revision: 66378
Modified:
pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizefindnode.py
pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizefindnode.py
Log:
More tests. One small fix.
Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizefindnode.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizefindnode.py (original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/optimizefindnode.py Sat Jul 18 20:13:59 2009
@@ -233,7 +233,7 @@
class __extend__(NotSpecNode):
def make_instance_node(self):
- return NodeFinder.node_escaped
+ return InstanceNode(escaped=True)
def matches_instance_node(self, exitnode):
return True
Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizefindnode.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizefindnode.py (original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizefindnode.py Sat Jul 18 20:13:59 2009
@@ -167,6 +167,7 @@
return True
def find_nodes(self, ops, spectext, boxkinds=None):
+ assert boxkinds is None or isinstance(boxkinds, dict)
loop = self.parse(ops, boxkinds=boxkinds)
perfect_specialization_finder = PerfectSpecializationFinder()
perfect_specialization_finder.find_nodes_loop(loop)
@@ -490,6 +491,7 @@
def find_bridge(self, ops, inputspectext, outputspectext, boxkinds=None,
mismatch=False):
+ assert boxkinds is None or isinstance(boxkinds, dict)
inputspecnodes = self.unpack_specnodes(inputspectext)
outputspecnodes = self.unpack_specnodes(outputspectext)
bridge = self.parse(ops, boxkinds=boxkinds)
@@ -617,6 +619,57 @@
Virtual(node_vtable, valuedescr=Not)''',
mismatch=True) # duplicate p0
+ def test_bridge_guard_class(self):
+ ops = """
+ [p1]
+ p2 = getfield_gc(p1, descr=nextdescr)
+ guard_class(p2, ConstClass(node_vtable))
+ fail()
+ jump(p2)
+ """
+ self.find_bridge(ops, 'Not', 'Not')
+ self.find_bridge(ops, 'Not', 'Fixed(node_vtable)')
+ self.find_bridge(ops, 'Virtual(node_vtable2, nextdescr=Not)',
+ 'Fixed(node_vtable)')
+ self.find_bridge(ops,
+ '''Virtual(node_vtable,
+ nextdescr=Virtual(node_vtable,
+ nextdescr=Fixed(node_vtable2)))''',
+ '''Virtual(node_vtable,
+ nextdescr=Fixed(node_vtable2))''')
+ #
+ self.find_bridge(ops, 'Not', 'Virtual(node_vtable)',
+ mismatch=True)
+
+ def test_bridge_unused(self):
+ ops = """
+ []
+ p1 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
+ p2 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
+ p3 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
+ setfield_gc(p1, p2, descr=nextdescr)
+ setfield_gc(p2, p3, descr=nextdescr)
+ jump(p1)
+ """
+ self.find_bridge(ops, '',
+ '''Not''')
+ self.find_bridge(ops, '',
+ '''Virtual(node_vtable,
+ nextdescr=Not)''')
+ self.find_bridge(ops, '',
+ '''Virtual(node_vtable,
+ nextdescr=Virtual(node_vtable,
+ nextdescr=Not))''')
+ self.find_bridge(ops, '',
+ '''Virtual(node_vtable,
+ nextdescr=Virtual(node_vtable,
+ nextdescr=Virtual(node_vtable)))''')
+ self.find_bridge(ops, '',
+ '''Virtual(node_vtable,
+ nextdescr=Virtual(node_vtable,
+ nextdescr=Virtual(node_vtable,
+ nextdescr=Not)))''')
+
class TestLLtype(BaseTestOptimize, LLtypeMixin):
pass
More information about the Pypy-commit
mailing list