Author: Maciej Fijalkowski <[email protected]>
Branch: share-guard-info
Changeset: r79634:3d7fa664b255
Date: 2015-09-14 16:19 +0200
http://bitbucket.org/pypy/pypy/changeset/3d7fa664b255/

Log:    a test and a fix

diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py 
b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -598,7 +598,8 @@
         descr = compile.invent_fail_descr_for_op(guard_op.getopnum(), self)
         descr.copy_all_attributes_from(last_guard_op.getdescr())
         guard_op.setdescr(descr)
-        guard_op.setfailargs(last_guard_op.getfailargs())
+        descr.store_final_boxes(guard_op, last_guard_op.getfailargs(),
+                                self.metainterp_sd)
         if guard_op.getopnum() == rop.GUARD_VALUE:
             guard_op = self._maybe_replace_guard_value(guard_op, descr)
         return guard_op
diff --git a/rpython/jit/metainterp/test/test_loop.py 
b/rpython/jit/metainterp/test/test_loop.py
--- a/rpython/jit/metainterp/test/test_loop.py
+++ b/rpython/jit/metainterp/test/test_loop.py
@@ -1069,6 +1069,26 @@
         res = self.meta_interp(run, [42], backendopt=True)
         assert res == 420
 
+    def test_not_too_many_bridges(self):
+        jitdriver = JitDriver(greens = [], reds = 'auto')
+
+        def f(i):
+            s = 0
+            while i > 0:
+                jitdriver.jit_merge_point()
+                if i % 2 == 0:
+                    s += 1
+                elif i % 3 == 0:
+                    s += 1
+                elif i % 5 == 0:
+                    s += 1
+                elif i % 7 == 0:
+                    s += 1            
+                i -= 1
+            return s
+
+        self.meta_interp(f, [30])
+        self.check_trace_count(4)
 
 class TestLLtype(LoopTest, LLJitMixin):
     pass
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to