[pypy-svn] r77699 - in pypy/branch/jit-unroll-loops/pypy/jit/metainterp: . optimizeopt test

hakanardo at codespeak.net hakanardo at codespeak.net
Thu Oct 7 19:03:49 CEST 2010


Author: hakanardo
Date: Thu Oct  7 19:03:47 2010
New Revision: 77699

Modified:
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
   pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
Log:
only one entry bridge generated now

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/compile.py	Thu Oct  7 19:03:47 2010
@@ -87,6 +87,8 @@
         send_loop_to_backend(metainterp_sd, loop, "loop")
         send_loop_to_backend(metainterp_sd, loop.preamble, "loop")
         insert_loop_token(old_loop_tokens, loop.preamble.token)
+        jitdriver_sd.warmstate.attach_unoptimized_bridge_from_interp(
+            greenkey, loop.preamble.token)
         return loop.preamble.token
     else:
         send_loop_to_backend(metainterp_sd, loop, "loop")

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/optimizeopt/unroll.py	Thu Oct  7 19:03:47 2010
@@ -51,6 +51,7 @@
                 argmap[op.result] = newop.result
             descr = newop.getdescr()
             if isinstance(descr, ResumeGuardDescr):
+                op.getdescr().rd_snapshot = None #FIXME: In the right place?
                 descr.rd_numb = None
 
             if newop.getopnum() == rop.JUMP:
@@ -71,6 +72,7 @@
                             pass
                         args.append(a)
                     op.setfailargs(args)
+                    op.getdescr().rd_snapshot = None #FIXME: In the right place?
                     
                 for a in op.getarglist():
                     if not isinstance(a, Const) and a in self.optimizer.values:

Modified: pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/branch/jit-unroll-loops/pypy/jit/metainterp/test/test_basic.py	Thu Oct  7 19:03:47 2010
@@ -348,12 +348,12 @@
                 myjitdriver.can_enter_jit(x=x, y=y, res=res)
                 myjitdriver.jit_merge_point(x=x, y=y, res=res)
                 res += x * x
-                if y<8:
+                if y<16:
                     x += 1
                 y -= 1
             return res
-        res = self.meta_interp(f, [6, 16])
-        assert res == 919
+        res = self.meta_interp(f, [6, 32])
+        assert res == 3427
         self.check_loop_count(3)
 
     def test_loop_invariant_mul_bridge_maintaining1(self):
@@ -371,9 +371,9 @@
         res = self.meta_interp(f, [6, 32])
         assert res == 1167
         self.check_loop_count(3)
-        self.check_loops({'int_lt': 1, 'int_gt': 1,
-                          'guard_false': 1, 'guard_true': 1,
-                          'int_sub': 2, 'int_mul': 2, 'int_add': 2,
+        self.check_loops({'int_lt': 2, 'int_gt': 1,
+                          'guard_false': 2, 'guard_true': 1,
+                          'int_sub': 3, 'int_mul': 1, 'int_add': 3,
                           'jump': 3})
 
     def test_loop_invariant_mul_bridge_maintaining2(self):
@@ -416,8 +416,8 @@
         res = self.meta_interp(f, [6, 7])
         assert res == 252
         self.check_loop_count(2)
-        self.check_loops({'guard_true': 1,
-                          'int_add': 1, 'int_sub': 1, 'int_gt': 1,
+        self.check_loops({'guard_true': 2,
+                          'int_add': 2, 'int_sub': 2, 'int_gt': 2,
                           'int_mul': 1, 'getfield_gc_pure': 1,
                           'jump': 2})
 



More information about the Pypy-commit mailing list