[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