[pypy-svn] r67986 - in pypy/branch/remove-fail/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Tue Sep 29 16:59:31 CEST 2009


Author: arigo
Date: Tue Sep 29 16:59:30 2009
New Revision: 67986

Modified:
   pypy/branch/remove-fail/pypy/jit/metainterp/logger.py
   pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py
   pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py
   pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py
   pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py
Log:
Fixes.  Now all tests in metainterp pass.


Modified: pypy/branch/remove-fail/pypy/jit/metainterp/logger.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/logger.py	(original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/logger.py	Tue Sep 29 16:59:30 2009
@@ -70,9 +70,11 @@
                 res = ""
             if op.descr is not None:
                 args += ', descr=' + self.repr_of_descr(op.descr)
+            if op.is_guard() and op.fail_args is not None:
+                fail_args = ' [' + ", ".join([self.repr_of_arg(memo, arg)
+                                              for arg in op.fail_args]) + ']'
+            else:
+                fail_args = ''
             self.log_stream.write(pre + res + op.getopname() +
-                                  '(' + args + ')\n')
-            if op.is_guard():
-                self.log_operations(None, op.suboperations, memo,
-                                    indent=indent+2)
+                                  '(' + args + ')' + fail_args + '\n')
         self.log_stream.flush()

Modified: pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/pyjitpl.py	Tue Sep 29 16:59:30 2009
@@ -1565,8 +1565,7 @@
             elif boxtype == history.FLOAT:
                 box = history.BoxFloat(cpu.get_latest_value_float(i))
             else:
-                assert False, "should not see %r in guard_failure.args" % (
-                    oldbox,)
+                assert False, "bad box type: num=%d" % ord(boxtype)
             inputargs.append(box)
         return inputargs
 

Modified: pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py	(original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/test/test_logger.py	Tue Sep 29 16:59:30 2009
@@ -25,9 +25,9 @@
 class TestLogger(object):
     ts = llhelper
 
-    def reparse(self, inp, namespace=None):
-        """ parse loop once, then log it and parse again,
-        return both
+    def reparse(self, inp, namespace=None, check_equal=True):
+        """ parse loop once, then log it and parse again.
+        Checks that we get the same thing.
         """
         if namespace is None:
             namespace = {}
@@ -35,6 +35,9 @@
         logger = Logger(self.ts)
         output = logger.log_loop(loop, namespace)
         oloop = pure_parse(output, namespace=namespace)
+        if check_equal:
+            equaloplists(loop.operations, oloop.operations)
+            assert oloop.inputargs == loop.inputargs
         return loop, oloop
     
     def test_simple(self):
@@ -44,9 +47,7 @@
         i8 = int_add(i6, 3)
         jump(i0, i8, i6, p3, p4, p5)
         '''
-        loop, oloop = self.reparse(inp)
-        equaloplists(oloop.operations, loop.operations)
-        assert oloop.inputargs == loop.inputargs
+        self.reparse(inp)
 
     def test_descr(self):
         inp = '''
@@ -54,27 +55,22 @@
         setfield_gc(p0, 3, descr=somedescr)
         '''
         somedescr = Descr()
-        loop, oloop = self.reparse(inp, namespace=locals())
-        equaloplists(loop.operations, oloop.operations)
+        self.reparse(inp, namespace=locals())
 
     def test_guard(self):
         inp = '''
         [i0]
-        guard_true(i0)
-          i1 = int_add(i0, 1)
-          guard_true(i1)
-             fail(i1)
-          fail(i1)
-        fail(i0)
+        i1 = int_add(i0, 1)
+        guard_true(i0) [i0, i1]
+        finish(i1)
         '''
-        loop, oloop = self.reparse(inp)
-        equaloplists(loop.operations, oloop.operations)
+        self.reparse(inp)
 
     def test_debug_merge_point(self):
         inp = '''
         []
         debug_merge_point("info")
         '''
-        loop, oloop = self.reparse(inp)
+        loop, oloop = self.reparse(inp, check_equal=False)
+        assert loop.operations[0].args[0]._get_str() == 'info'
         assert oloop.operations[0].args[0]._get_str() == 'info'
-        

Modified: pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py	(original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/test/test_loop.py	Tue Sep 29 16:59:30 2009
@@ -173,8 +173,8 @@
         if self.basic:
             found = 0
             for op in get_stats().loops[0]._all_operations():
-                if op.getopname() == 'fail':
-                    liveboxes = op.args
+                if op.getopname() == 'guard_true':
+                    liveboxes = op.fail_args
                     assert len(liveboxes) == 2     # x, y (in some order)
                     assert isinstance(liveboxes[0], history.BoxInt)
                     assert isinstance(liveboxes[1], history.BoxInt)

Modified: pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py
==============================================================================
--- pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py	(original)
+++ pypy/branch/remove-fail/pypy/jit/metainterp/test/test_recursive.py	Tue Sep 29 16:59:30 2009
@@ -344,8 +344,8 @@
         for loop in get_stats().loops:
             assert len(loop.operations) <= length + 5 # because we only check once per metainterp bytecode
             for op in loop.operations:
-                if op.is_guard():
-                    assert len(op.suboperations) <= length + 5
+                if op.is_guard() and hasattr(op.descr, '_debug_suboperations'):
+                    assert len(op.descr._debug_suboperations) <= length + 5
 
     def test_inline_trace_limit(self):
         myjitdriver = JitDriver(greens=[], reds=['n'])



More information about the Pypy-commit mailing list