[pypy-commit] pypy default: Test and fix for an issue reported by krono on irc

arigo noreply at buildbot.pypy.org
Fri Aug 9 10:57:20 CEST 2013


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r66033:8be5fec47a23
Date: 2013-08-09 10:56 +0200
http://bitbucket.org/pypy/pypy/changeset/8be5fec47a23/

Log:	Test and fix for an issue reported by krono on irc

diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py
--- a/rpython/rlib/jit.py
+++ b/rpython/rlib/jit.py
@@ -1003,6 +1003,7 @@
     else:
         if condition:
             function(*args)
+conditional_call._annenforceargs_ = [bool, None, None]
 
 class ConditionalCallEntry(ExtRegistryEntry):
     _about_ = _jit_conditional_call
diff --git a/rpython/rlib/test/test_jit.py b/rpython/rlib/test/test_jit.py
--- a/rpython/rlib/test/test_jit.py
+++ b/rpython/rlib/test/test_jit.py
@@ -3,10 +3,13 @@
 from rpython.conftest import option
 from rpython.annotator.model import UnionError
 from rpython.rlib.jit import (hint, we_are_jitted, JitDriver, elidable_promote,
-    JitHintError, oopspec, isconstant)
+    JitHintError, oopspec, isconstant, conditional_call)
 from rpython.rlib.rarithmetic import r_uint
 from rpython.rtyper.test.tool import BaseRtypingTest
 from rpython.rtyper.lltypesystem import lltype
+from rpython.translator.translator import TranslationContext
+from rpython.rtyper.annlowlevel import MixLevelHelperAnnotator
+from rpython.annotator import model as annmodel
 
 
 def test_oopspec():
@@ -247,3 +250,17 @@
         # this used to fail on 64-bit, because r_uint == r_ulonglong
         myjitdriver = JitDriver(greens=['i1'], reds=[])
         myjitdriver.jit_merge_point(i1=r_uint(42))
+
+    def test_conditional_call(self):
+        def g():
+            pass
+        def f(n):
+            conditional_call(n >= 0, g)
+        def later(m):
+            conditional_call(m, g)
+        t = TranslationContext()
+        t.buildannotator().build_types(f, [int])
+        t.buildrtyper().specialize()
+        mix = MixLevelHelperAnnotator(t.rtyper)
+        mix.getgraph(later, [annmodel.s_Bool], annmodel.s_None)
+        mix.finish()


More information about the pypy-commit mailing list