[pypy-commit] pypy share-guard-info: a test and a fix

fijal noreply at buildbot.pypy.org
Mon Sep 14 16:19:43 CEST 2015


Author: Maciej Fijalkowski <fijall at gmail.com>
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


More information about the pypy-commit mailing list