[pypy-svn] r66557 - in pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Thu Jul 23 21:23:46 CEST 2009


Author: arigo
Date: Thu Jul 23 21:23:44 2009
New Revision: 66557

Modified:
   pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/resume.py
   pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py
Log:
Fourth test.  Small fix in resume.py.


Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/resume.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/resume.py	(original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/resume.py	Thu Jul 23 21:23:44 2009
@@ -79,8 +79,8 @@
 
     def _register_boxes(self, boxes):
         for box in boxes:
-            if isinstance(box, Box):
-                self.liveboxes.setdefault(box, 0)
+            if isinstance(box, Box) and box not in self.liveboxes:
+                self.liveboxes[box] = 0
                 self.liveboxes_order.append(box)
 
     def is_virtual(self, virtualbox):

Modified: pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py
==============================================================================
--- pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py	(original)
+++ pypy/branch/pyjitpl5-optimize4/pypy/jit/metainterp/test/test_optimizeopt.py	Thu Jul 23 21:23:44 2009
@@ -725,37 +725,33 @@
             ''')
 
     def test_expand_fail_4(self):
-        py.test.skip("in-progress")
-        ops = """
-        [i1, i2]
-        p1 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
-        p2 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
-        setfield_gc(p1, i2, descr=valuedescr)
-        setfield_gc(p1, p2, descr=nextdescr)
-        setfield_gc(p2, i2, descr=valuedescr)
-        guard_true(i1)
-            fail(%s)
-        jump(i1, i2)
-        """
-        expected = """
-        [i1, i2]
-        guard_true(i1)
+        for arg in ['p1', 'p1,i2', 'i2,p1', 'p1,p2', 'p2,p1',
+                    'p1,p2,i2', 'p1,i2,p2', 'p2,p1,i2',
+                    'p2,i2,p1', 'i2,p1,p2', 'i2,p2,p1']:
+            self.make_fail_descr()
+            ops = """
+            [i1, i2, i3]
             p1 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
+            setfield_gc(p1, i3, descr=valuedescr)
+            i4 = getfield_gc(p1, descr=valuedescr)   # copy of i3
             p2 = new_with_vtable(ConstClass(node_vtable), descr=nodesize)
             setfield_gc(p1, i2, descr=valuedescr)
             setfield_gc(p1, p2, descr=nextdescr)
             setfield_gc(p2, i2, descr=valuedescr)
-            fail(%s)
-        jump(1, i2)
-        """
-        self.optimize_loop(ops      % 'p1',     'Not, Not',
-                           expected % 'p1',     i1=1)
-        self.optimize_loop(ops      % 'p1, i2', 'Not, Not',
-                           expected % 'p1, i2', i1=1)
-        self.optimize_loop(ops      % 'i2, p1', 'Not, Not',
-                           expected % 'i2, p1', i1=1)
-        self.optimize_loop(ops      % 'p1, p2', 'Not, Not',
-                           expected % 'p1, p2', i1=1)
+            guard_true(i1)
+                fail(i4, %s, i3, descr=fdescr)
+            jump(i1, i2, i3)
+            """
+            expected = """
+            [i1, i2, i3]
+            guard_true(i1)
+                fail(i3, i2, descr=fdescr)
+            jump(1, i2, i3)
+            """
+            self.optimize_loop(ops % arg, 'Not, Not, Not', expected, i1=1)
+            self.check_expanded_fail_descr('''i3, %s, i3
+                where p1 is a node_vtable, valuedescr=i2, nextdescr=p2
+                where p2 is a node_vtable, valuedescr=i2''' % arg)
 
 
 class TestLLtype(BaseTestOptimizeOpt, LLtypeMixin):



More information about the Pypy-commit mailing list